반응형

쿠버네티스 33

EKS 클러스터에서 GPU 자원 사용

이번에 EKS 클러스터에서 GPU를 사용하는 방법에 대해 알아보겠습니다. 방법은 간단 했습니다. 먼저 EKS 클러스터에 붙을 노드 그룹을 정의 해주는데, 여기서 저는 아래와 같이 설정을 했습니다.instance_types = [ "g4dn.xlarge" ]ami_type = "AL2023_x86_64_NVIDIA" ami_type 을 AL2023_x86_64_NVIDIA 로 해주면 기본적으로 Nvidia-toolkit이 설치가 되어서 nvidia/k8s-device-plugin 만 설치해주면 되었습니다.nvidia/k8s-device-plugin 설치하는 이유Kubernetes 기본 기능만으로는 GPU 자원에 대한 스케줄링이나 할당이 불가능합니다.즉, 파드에 nvidia.com/gpu 리소스를 지정하더라..

쿠버네티스 2025.06.16

파드 내 외부 통신 오류 (calico node already using the IPv4 address)

문제분명 정상적으로 동작하던 k8s 클러스터에서 어느 순간 부터 Worker 노드에서 동작하던 POD 내부에서 외부로 통신이 안되길래 calico POD의 동작 상태를 확인해보았더니만, 아래 이미지 처럼 CrashLoopBackOff 에러가 나오길래 로그를 확인해보았습니다. Calico POD의 로그를 살펴보니 "k8s-master002" 노드에서 172.16.23.100/32 주소를 이미 사용하고 있어서 오류가 나오고 있었습니다. 그래서 k8s-master002 노드의 애너테이션을 확인해보았습니다. 확인결과 아래 이미지 처럼 나오길래 애너테이션 삭제를 진행해주었습니다. 오류 해결아래의 명령어로 애너테이션을 삭제해주었습니다.kubectl annotate node k8s-master002 projectc..

쿠버네티스 2025.04.20

쿠버네티스 네트워크 이해하기

이번엔 쿠버네티스 네트워크 대해 간략하게 알아보도록 하겠습니다.쿠버네티스 네트워크쿠버네티스의 네트워크 다음과 같은 주요 원칙을 따릅니다. 1-1. 모든 파드는 고유한 IP를 갖는다.각 파드는 자체 네트워크 네임스페이스를 가지며, 하나 이상의 컨테이너가 포함됩니다.파드 내부의 컨테이너는 localhost를 통해 서로 통신 할 수 있습니다.그림에서 보는 것 처럼 하나의 파드안에 여러 개의 컨테이너가 있어도 localhost 환경에서 통신을 한다는 의미 입니다. 1-2. 모든 파드는 동일한 네트워크 공간에서 서로 통신 가능하다.파드들은 NAT(Network Address Translation) 없이 서로 통신이 가능 해야 합니다.이를 위해 쿠버네티스는 CNI(Container Network Interface)..

POD 생성 시 kyverno error 해결

이번엔 제가 쿠버네티스 클러스터를 운영 하던 도중에 겪었던 문제에 대해 적어보겠습니다.오류 내용쿠버네티스 클러스터에서 특정 네임스페이스에서 POD를 생성하는 데, 아래 이미지와 같은 에러가 발생했었습니다. 보면 쿠버네티스 클러스터에서 webhook 호출에 실패해서 POD가 생성이 되질 않는 오류가 있었습니다.해결 방안kyverno-policy-mutating-webhook-cfg에서 특정 네임스페이스에서kyverno-webhook의 영향을 받지 않도록 제외 하도록 해줬습니다. 먼저 Helm 차트를 통해 kyverno 어플리케이션을 설치해준 터라values.yaml 파일의 내용을 수정하고 적용을 시켜줘야 webhook 설정이 변경됩니다.# vi values.yaml-----webhooks: # Exc..

쿠버네티스 2025.01.06

Helm 차트로 설치한 어플리케이션의 values.yaml 내용 확인하기

Helm 차트를 사용하여 설치한 어플리케이션이 사용하고 있는 values.yaml 파일을 추출하는 방법에 대해 알아보겠습니다. 방법은 간단합니다. 먼저 사용하고 있는 helm list를 확인 해줍니다.# helm list 그리고 Helm 차트를 사용해서 설치한 어플리케이션의 이름을 확인하여 아래 명령어에 적어주면 됩니다.# helm show values "Helm list에서 확인한 이름" > values.yamlex)# helm show values kyverno > kyverno-values.yaml 이렇게 하면 Helm 차트로 설치한 어플리케이션이 사용하고 있는 values.yaml 파일을 추출 할 수 있습니다.

쿠버네티스 2025.01.06

스테이트풀셋(StatefulSet) 이란 ?

테이트풀셋(StatefulSet) 이란 ?스테이트풀셋(StatefulSet)은 Kubernetes의 워크로드 API 중 하나로,항상 동일한 상태의 애플리케이션을 배포하고 관리하기 위한 리소스 입니다.디플로이먼트(Deployment)와 비슷하게, 동일한 컨테이너의 스펙을 기반으로POD를 관리 합니다.다만, 디플로이먼트(Deployment)는 POD가 재스케줄링 되면, 이전 파드가가지고 있는 내용이 사라지지만,스테이트풀셋(StatefulSet)은 재 스케줄링 되어도 이전의 POD와 동일한 상태를유지합니다.즉, 스테이트풀셋(StatefulSet)은 POD의 고유성(identity)과 순서를 보장하며,데이터베이스, 분산 파일 시스템, 메시지 큐와 같은 상태를 저장해야 하는 애플리케이션을배포할 때 주로 사용됩니다..

Consul 삭제 후에도 webhook 에러 발생

k8s 클러스터에서 Consul 을 설치하고 삭제를 했는 데도, 아래와 같은 에러가 발생해서 무엇이 문제 인가 확인 해본 결과 Error creating: Internal error occurred: failed calling webhook "consul-consul-connect-injector.consul.hashicorp.com": failed to call webhook: Post "https://consul-consul-connect-injector.consul.svc:443/mutate?timeout=10s": service "consul-consul-connect-injector" not found 아래 이미지에서와 같이 Webhook이 삭제가 제대로 되질 않아서 발생하는 문제였습니다. 따라..

쿠버네티스 2024.12.31

쿠버네티스 Deployment 란 ?

Deployment 란? 애플리케이션을 선언적 방식으로 관리하고,업데이트와 확장을 효율적으로 수행할 수 있게 도와주는 리소스입니다.Deployment는 애플리케이션의 Pod와 해당 Pod를 관리하는 ReplicaSet을 생성하고 관리합니다.이를 통해 사용자는 안정적으로 애플리케이션을 배포하고 관리할 수 있습니다. 즉, Deployment는 POD의 배포와 상태를 더 쉽고 안정적으로관리 하는 리소스라고 볼 수 있습니다.Deployment의 구조아래 그림과 같이 Deployment에서 POD는 ReplicaSet이 관리를 합니다. ReplicaSet은 업그레이드된 ReplicationController 라고 생각하시면 됩니다. 예시로 Deployment를 생성하기 위해 작성한 Yaml 파일로 구조를 알아보면..

쿠버네티스 Downward API 란?

Downward API 란?애플리케이션이 쿠버네티스 리소스에 대한 메타데이터 및 상태 정보를액세스할 수 있도록 지원하는 기능입니다.이를 통해 애플리케이션이 쿠버네티스 환경에서 동적으로 설정을 수정하거나,Pod 및 컨테이너의 상태를 확인할 수 있습니다. 즉, Downward API는 애플리케이션이 쿠버네티스 환경의 메타데이터나, 리소스 정보를 동적으로 활용해야할 때 주로 사용됩니다. Downward API를 사용하여 POD에 전달 할 수 있는 메타 데이터 종류는 아래와 같습니다.파드의 이름파드의 IP 주소파드가 속한 네임스페이스파드가 실행 중인 노드의 이름파드가 실행 중인 서비스 어카운트 이름각 컨테이너의 CPU와 메모리 요청각 컨테이너의 CPU와 메모리 제한파드의 레이블파드의 어노테이션  실습을 통해 좀..

쿠버네티스 ConfigMap, Secret 이란 ?

ConfigMap 이란?애플리케이션에서 필요한 환경 변수나 설정 파일들을 관리 할 때 사용되는 리소스 입니다.ConfigMap을 사용하면, 애플리케이션 배포 시 환경 설정이나 구성 값을 쉽게 적용하고 수정할 수 있습니다.Secret 이란?ConfigMap 처럼 애플리케이션에서 필요한 환경 변수나 설정 파일들을관리 할 때 사용되는 리소스 이지만, 민감한 정보를 안전하게 관리하기 위해 사용되는 리소스 입니다.기본적으로 Base64로 인코딩 됩니다.또한, Secret은 Secret에 접근하는 POD가 있는 노드에서만 생성이 됩니다.노드 자체적으로도 시크릿을 항상 메모리에만 저장하고물리 저장소에 기록되지 않도록 합니다. ConfigMapSecret민감하지 않고 일반 설정 데이터는 ConfigMap을 사용민감한 ..

반응형