Kubernetes 150

[NVIDIA/gpu-monitoring-tools] dcgm-exporter CrashLoopBackOff

쿠버네티스 환경에서 GPU 서버인 노드를 Grafana와 Prometheus를 이용해 모니터링하고자 한다. 모니터링 도구는 NVIDA Gpu Monitoring tools이며, 각 노드에 dcgm-exporter 설치가 필요하다. 이 글에서는 helm chart package로 dcgm-expoter 컨테이너를 실행하는 포드를 클러스터에 배포했다. 그러나, 배포 이후 아래와 같이 CrashLoopBackOff 상태인 dcgm-expoter 포드가 존재했다. 해당 현상의 원인을 찾아 해결한 방법을 정리해둔다. 현상 에러 메시지 드라이버 초기화 관련 에러인 것으로 추측된다. $ kubectl logs dcgm-exporter-fk4s5 Warning #2: dcgm-exporter doesn't have s..

Ingress 확인 및 생성

Ingress란 클러스터 내의 서비스에 대한 외부 접근을 관리하는 개체로, 일반적으로 HTTP를 관리한다. 이 글에서는 Ingress 정보를 확인하고 생성하는 명령어에 대해 정리한다. Ingress 목록 확인 get 명령으로 이름, 호스트 등의 정보를 확인할 수 있다. kubectl get ingresses.networking.k8s.io Ingress 상세 정보 확인 describe 명령으로 이름, 규칙 등의 상세 정보를 확인할 수 있다. kubectl describe ingresses.networking.k8s.io --namespace= # 예시 kubectl describe ingresses.networking.k8s.io --namespace=app-space ingress-wear-watch ..

Network Policy 생성 및 확인

Network Policy는 IP 주소 또는 Port 수준에서 트래픽 흐름을 제어하는 경우 사용한다. 포드가 네트워크 상의 네트워크 엔티티와 통신할 수 있도록 허용하는 방법을 정의한다. 이 글에서는 Network Policy 정보를 확인하고, 생성하는 방법에 대해 정리한다. Network Policy 목록 확인 kubectl get networkpolicies.networking.k8s.io Network Policy 상세 정보 확인 이름, Label, 정책 유형 등의 정보를 확인할 수 있다. kubectl describe networkpolicies.networking.k8s.io # 예시 kubectl describe networkpolicies.networking.k8s.io payroll-poli..

Services 관련 명령어

Services란 포드에서 실행 중인 애플리케이션을 네트워크 서비스로 노출하는 방법이다. 즉, 서비스를 통해 포드에 접근할 수 있다. 이 글에서는 Services 목록 및 정보를 확인하고, 생성하는 방법에 대해 정리한다. Services 목록 확인 get 명령어로 Services 목록을 확인한다. 서비스의 이름, 유형 등을 확인할 수 있다. kubectl get service 사진에서 확인할 수 있는 kubernetes 서비스는 kubernetes 시작 시 생성된 기본 서비스이다. Services 상세 정보 확인 describe 명령어로 Services의 상세 정보를 확인한다. Port, TargetPort, Label, Endpoints 등의 정보를 확인할 수 있다. kubectl describe se..

Job/CronJob 관련 명령어

Job은 특정 개수의 포드가 성공적으로 완료되는 것을 보장하며, 실행한 포드가 실패, 하드웨어 장애 발생, 노드 재부팅 등과 같은 문제 발생 시 자동으로 포드를 재실행한다. 주로 실행 후 종료되어야 하는 작업을 실행시킬 때 사용한다. 이 글에서는 job을 생성, 삭제, 수정 및 정보를 확인하는 방법에 대해 정리한다. Job 생성 create 명령을 이용해 Job을 생성한다. kubectl create job --image= # 예시 kubectl create job throw-dice-job --image=kodekloud/throw-dice Job 목록 확인 Job의 이름, 완료 여부 등을 확인할 수 있다. kubectl get jobs.batch Job 상세 정보 확인 포드를 완료할 때까지 포드를 재..

Deployments 업데이트 관련

2021.11.15 - deployment 확인 및 생성 명령어 이 글에서는 Deployments의 업데이트 전략을 확인하고, 수정하는 방법에 대해 정리한다. Deployments Update 전략 확인 describe 명령 실행 결과에서 StrategyType 필드를 확인한다. kubectl describe deployments.apps Deployments Rolling Update 시 삭제 가능한 포드 수 확인 describe 명령 실행 결과에서 RollingUpdateStrategy 필드를 확인한다. max unavailable : Rolling Update 시 동시 삭제가 가능한 포드의 최대 개수 max surge : Rolling Update 시 동시 생성이 가능한 포드의 최대 개수 두 값 모..

Selector로 Label 별 필터링

Label은 항목에 붙인 속성과 같고, Selector로는 그 항목을 필터링할 수 있다. 이 글에서는 Label이 설정된 자원을 Selector로 필터링하는 방법을 정리한다. selector로 필터링한 포드 목록 확인 get pods 명령에 --selector 옵션을 주어 필터링한다. kubectl get pods --selector KEY=VALUE kubectl get pods --selector=KEY=VALUE # 예시 kubectl get pods --selector env=dev kubectl get pods --selector=env=dev selector로 필터링한 replicaset 목록 확인 get replicaset 명령에 --selector 옵션을 주어 필터링한다. kubectl g..

노드/포드 리소스 사용량 확인

쿠버네티스 클러스터 내 자원을 모니터링하는 방법에는 여러가지 방법이 존재한다. 이 글에서는 Metric server가 구성된 클러스터 환경을 사용한다는 가정 하에, 간단하게 포드와 노드를 모니터링하는 방법을 정리한다. 노드의 리소스 사용량 확인 노드의 CPU/메모리 사용량을 확인한다. 사용하기 위해서는 클러스터 내에 Metric Server가 구성되어 동작하고 있어야 한다. kubectl top node 포드의 리소스 사용량 확인 top 명령어로 포드의 CPU/메모리 사용량을 확인한다. kubectl top pod

Log 관련 명령어

포드 내 컨테이너의 로그를 확인하는 방법을 정리한다. 포드 컨테이너 로그 확인 기본적으로 logs 명령을 이용해 포드 내 컨테이너의 로그를 확인할 수 있다. kubectl logs # 예시 kubectl logs webapp-1 멀티 컨테이너 포드 로그 확인 포드 내 컨테이너가 여러 개인 경우, 로그를 확인하고자 하는 컨테이너의 이름을 지정하여 특정 컨테이너의 로그만을 확인할 수 있다. kubectl logs # 예시 kubectl logs webapp-2 db

Probe 설정

Probe란 컨테이너에서 kubelet에 의해 주기적으로 수행되는 진단(diagnostic)을 말한다. 이 글에서는 컨테이너가 요청을 처리할 준비가 되었는지 여부를 나타내는 Readiness Probe와, 컨테이너가 동작 중인지에 대한 여부를 나타내는 Liveness Probe를 설정하는 방법을 간단하게 정리한다. Readiness Probe 설정 포드 정의 yaml 파일 내 spec > containers 아래에 readinessProbe 필드를 추가하여 설정한다. 예시는 지정한 포트 및 경로에서 컨테이너의 IP주소에 대한 HTTP Get 요청 수행하는 httpGet을 설정한 yaml 파일이다. apiVersion: v1 kind: Pod metadata: creationTimestamp: "2021-..