Kubernetes 137

[Jenkins] HelmRelease로 설치 시, curl: (60) SSL certificate problem: certificate has expired 에러

간단한 배경 지식(?) HelmRelease Helm에서 release란 chart를 이용해 애플리케이션을 설치된 결과를 말한다. 그리고 release를 보다 더 편리하게 관리하기 위해 쿠버네티스 리소스처럼 취급하기 위한 시도가 있었고, 그 결과로 HelmRelease라는 리소스로 release를 관리할 수 있게 되었다. 참고 : https://coffeewhale.com/kubernetes/gitops/helm/2020/05/13/helm-operator/ Init Container (초기화 컨테이너) Pod의 Runtime Container가 실행되기 전에 실행되는 컨테이너 이미지에 포함되지 않는 유틸리티, 설정 스크립트 등을 포함할 수 있다. Pod는 하나 이상의 Init Container를 가질 ..

Kubernetes/삽질 2022.03.07

[calico-node 0/1 running] calico/node is not ready: BIRD is not ready: BGP not established with 10.0.0.1

현상 쿠버네티스 클러스터 환경에서 동작하고 있는 서비스가 정상적으로 동작하고 있지 않아 확인하던 중, 포드 컨테이너에서 외부로 나가야 하는 트래픽이 막혀 있는 것이 원인이라는 것을 알게 되었다. 쿠버네티스 클러스터 환경은 온 프레미스에서 kubeadm을 이용해 구성되었으며, 네트워크 플러그인으로는 calico를 사용하고 있다. calico가 어떤 방식으로 쿠버네티스 환경에서 네트워크를 설정하는지, 관련해서는 어떤 조건이 필요한지는 잘 모르겠으나…… 일단은 kube-system namespace에서 각 노드에 배포된 calico-node pod가 정상적으로 동작해야 하는 것으로 보인다. 확인해보니, 최근 서버 재부팅 후 일부 calico-node pod가 정상적으로 동작하지 않고 있었다. 그리고 정상적이지..

Kubernetes/삽질 2022.03.06

[calico] calicoctl 설치 - k8s pod

calico 컨테이너, 가상 머신 및 기본 호스트 기반 워크로드를 위한 오픈 소스 네트워킹 및 네트워크 보안 솔루션. Linux 및 Windows에 대해 인터넷과 동일한 IP 네트워킹 원칙을 기반으로 Kubernetes 포드를 연결하기 위한 네트워킹 및 네트워크 정책 솔루션을 제공한다. 캡슐화 또는 오버레이 없이 구축되어 고성능의 대규모 데이터 센터 네트워킹을 제공할 수 있으며, 분산 방화벽을 통해 Kubernetes 포드에 대해 세분화된 의도 기반 네트워크 보안 정책을 제공한다. CNI Container Network Interface의 약어로 CNCF 프로젝트 중 하나이다. 컨테이너 간의 네트워크를 제어할 수 있는 플러그인을 만들기 위한 표준에 해당한다. 표준으로써의 역할을 할 뿐, 특정 서비스에 어..

Kubernetes 2022.03.05

0/1 nodes are available: 1 Insufficient nvidia.com/gpu

현상 아래 매니페스 파일과 같이 nvidia.com/gpu 리소스를 필요로 하는 pod 생성 시 에러 메세지와 함께 포드가 스케쥴링되지 않았다. apiVersion: v1 kind: Pod metadata: name: gpu-pod spec: containers: - name: nginx image: nginx resources: limits: nvidia.com/gpu: 1 # requesting 1 GPU 에러 메세지 확인 $ kubectl describe pod [.. 생략 ..] Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 3s (x23 over 3m) default-schedu..

Kubernetes/삽질 2022.02.25

node NotReady - kubelet (code=exited, status=255)

쿠버네티스 클러스터 내 노드 일부가 notReady 상태를 유지하고 있다. 이런 경우는 대부분 노드에서 kubelet이 정상적으로 동작하고 있지 않는 상태일 경우에 해당한다. describe 명령으로 확인해보면 이런 모양에 가까울 것이다. kubelet 동작 확인 systemctl 명령으로 kubelet의 상태를 확인해본다. systemctl status kubelet.service exit-code와 함께 정상적으로 동작하지 않고 있는 상태임을 확인할 수 있다. 만약 아래와 같이 inactive 상태인 경우, kubelet을 재시작한 후의 상태를 확인해보도록 한다. kubelet 시작/재시작 # 시작 systemctl start kubelet.service # 재시작 systemctl restart k..

Kubernetes/삽질 2022.02.22

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

2021.12.14 - [NVIDIA/gpu-monitoring-tools] dcgm-exporter CrashLoopBackOff 위 글에 이어 dcgm-exporter에서 발생한 CrashLoopBackOff 상태를 해결 방법을 적어둔다. 현상 에러 메시지 확인할 수 있는 pod container 로그가 없어, describe 명령으로 상태를 확인했다. kubectl describe pods dcgm-exporter- # ... 생략 ... Containers: dcgm-exporter: Container ID: docker:// Image: nvcr.io/nvidia/k8s/dcgm-exporter:2.2.9-2.4.0-ubuntu18.04 Image ID: docker-pullable://nvcr..

Kubernetes/삽질 2022.02.21

Helm Concepts

이미지 버전, 디스크 용량, 애플리케이션 관리자 비밀번호 등 쿠버네티스 환경에서 애플리케이션은 환경에 따라 다른 값을 가질 수 있다. Helm은 아래와 같은 방식을 통해 하나의 패키지로 여러 환경을 구성할 수 있도록 한다. - 값을 변수로 취급할 수 있도록 파일을 템플릿으로 변환한다. - 변수는 중괄호로 감싸서 나타내며, 값을 식별할 변수명을 적는다. 값은 values.yaml에 저장된다. 즉, 템플릿과 values.yaml이 결합한 것이 쿠버네티스가 클러스터에 애플리케이션을 배포하는 데 사용하는 정의 파일에 해당한다. helm chart template + values.yaml + Chart.yaml Chart.yaml에는 차트의 이름, 버전, 설명과 같은 차트와 관련된 정보들이 저장되어 있다. 사용자..

Install Helm

이 글에서는 Helm을 설치하는 방법에 대해 간단히 정리한다. Helm은 리눅스, 윈도우, 맥 OS 등의 환경에 설치할 수 있으며, 설치에는 아래와 같은 전제 조건이 필요하다. 1. 동작 중인 kubernetes Cluster 2. 적절한 자격 증명이 구성된 kubectl Snap (Linux) snap install helm --classic snap; snapcraft Canonical에서 개발한 소프트웨어 배포 및 패키디 도구. 패키지 관리 시스템 샌드박스 형태의 애플리케이션 포맷을 사용함으로써 의존성 문제를 완화하고 애플리케이션 간 간섭일 불가능한 보안 환경을 특징으로 한다. apt (Debian/Ubuntu) Key 및 소스 리스트를 추가해야 한다. curl https://baltocdn.com..

Helm Introduction

Kubernetes 클러스터에 배포된 애플리케이션이 얼마나 복잡하든, Kubernetes는 각 인프라를 관리할 수 있다. 다만 Kubernetes는 클러스터에 선언된 객체가 존재하고 동작하는 상태를 유지할 뿐, 클러스터 내에서 동작하고 있는 애플리케이션에는 관심이 없다. 즉, 부분 각각을 개별적으로 관리하고 처리한다. Helm Kubernetes 클러스터 내의 각 부분을 애플리케이션과 함께 고려하기 위해 개발되었으며, Kubernetes의 패키지 매니저라고 불린다. Helm은 Kubernetes 객체를 큰 패키지의 부분으로 취급한다. 따라서 Kubernetes 관리자는 변경 작업 수행 시 어떤 패키지에 대해 어떤 개체를 어떻게 변경해야 하는지 지시해야 한다. 패키지 설치 Helm은 설치 마법사와 같이 애..

Canary Updates

이 글에서는 2022.01.24 - Deployment Strategy - Blue Green 에 이어서 Canary라고 불리는 Deployment Update 전략에 대해 정리한다. Canary Updates Canary Updates의 진행 방식은 아래와 같다. 업데이트 진행 순서 1. 기존 버전의 Deployment이 동작하고 있는 환경에 새 버전의 Deployment을 배포한다. 단, 전체 트래픽의 적은 비율만을 새 버전의 Deployment로 라우팅 되도록 한다. 즉, 이 단계에서는 대부분의 트래픽이 기존 버전의 Deployment로 라우팅되는 상태이다. 2. 새 버전의 Deployment에 대한 테스트가 완료되면, 기존 버전의 Deployment를 새 버전으로 업그레이드(Rolling upda..