본문 바로가기

Infrastructure/Kubernetes

(46)
[워크로드 리소스] 크론잡 크론잡 쿠버네티스 공식문서를 확인하며 크론잡에 대해서 기억해야 하는 부분을 기록한다. 크론잡은 반복 일정에 따라 잡을 만든다. 하나의 크론잡 오브젝트는 크론탭 파일의 한 줄과 같으며, 크론잡은 잡을 크론 형식으로 쓰여진 주어진 일정에 따라 주기적으로 동작시킨다. 모든 크론잡의 일정: 시간은 kube-controller-manager의 시간대를 기준으로 한다. 컨트롤 플레인이 파드 또는 베어 컨테이너에서 kube-controller-manager를 실행하는 경우, kube-controller-manager 컨테이너에 설정된 시간대는 크론잡 컨트롤러가 사용하는 시간대로 결정한다. v1 CronJob API는 위에서 알아본 타임존 설정을 공식적으로 지원하지는 않는다. CRON_TZ 또는 TZ와 같은 변수를 설..
[워크로드 리소스] 잡(Job) 잡(Job) 쿠버네티스 공식문서를 확인하며 잡(Job)에 대해서 기억해야 하는 부분을 기록한다. 잡에서 하나 이상의 파드를 생성하고 지정된 수의 파드가 성공적으로 종료될 때까지 계속해서 파드의 실행을 재시도한다. 파드가 성공적으로 완료되면 성공적으로 완료된 잡을 추적하고, 지정된 성공 완료 수치에 도달하면, 작업이 완료된다. 잡을 삭제하면 잡이 생성한 파드가 정리되고 작업을 일시 중지하면 작업이 다시 재개될 때까지 활성 파드가 삭제된다. 잡의 예시 중하나로 잡 오브젝트를 하나 생성해서 파드 하나를 안정적으로 실행시키고 완료시킬 수 있다. 첫 번째 파드가 어떠한 이유로 실패 또는 삭제되는 경우, 잡 오브젝트는 새로운 파드를 기동시킨다. 잡을 사용하면 여러 파드를 병렬로 실행할 수도 있다. 잡을 스케줄에 따..
[워크로드 리소스] 데몬셋 데몬셋 쿠버네티스 공식문서를 확인하며 데몬셋에 대해서 기억해야 하는 부분을 기록한다. “데몬셋”은 모든(또는 일부) 노드가 파드의 사본을 실행하도록 하고 노드가 클러스터에 추가되면 파드도 추가된다. 노드가 클러스터에서 제거되면 해당 파드는 가비지로 수집된다. 데몬셋을 삭제하면 데몬셋이 생성한 파드들도 정리된다. 데몬셋의 일부 대표적인 용도는 아래와 같다. 모든 노드에서 클러스터 스토리지 데몬 실행 모든 노드에서 로그 수집 데몬 실행 모든 노드에서 노드 모니터링 데몬 실행 단순한 케이스에서는, 각 데몬 유형의 처리를 위해서 모든 노드를 커버하는 하나의 데몬셋이 사용된다. 복잡한 구성에서는 단일 유형의 데몬에 여러 데몬셋을 사용할 수 있지만, 각기 다른 하드웨어 유형에 따라 서로 다른 플래그, 메모리, CP..
[워크로드 리소스] 스테이트풀셋 스테이트풀셋 쿠버네티스 공식문서를 확인하며 스테이트풀셋에 대해서 기억해야 하는 부분을 기록한다. 스테이트풀셋은 애플리케이션의 스테이트풀을 관리하는데 사용하는 워크로드 API 오브젝트이다. 파드 집합의 디플로이먼트와 스케일링을 관리하며, 파드들의 순서 및 고유성을 보장한다. 디플로이먼트와 유사하게, 스테이트풀셋은 동일한 컨테이너 스펙을 기반으로 둔 파드들을 관리한다. 디플로이먼트와 다른점은, 스테이트풀셋은 각 파드의 독자성을 유지하기 때문에 동일한 스펙으로 생성되었지만, 서로 교체는 불가능하다. 즉, 각각의 파드는 다시 스케줄링이 되더라도 지속적으로 유지되는 식별자를 가진다. 스토리지 볼륨을 사용해서 워크로드에 지속성을 제공하려는 경우, 솔루션의 일부로 스테이트풀셋을 사용할 수 있다. 스테이트풀셋의 개별 ..
[워크로드 리소스] 레플리카셋 레플리카셋 쿠버네티스 공식문서를 확인하며 레플리카셋에 대해서 기억해야 하는 부분을 기록한다. 레플리카셋의 목적은 레플리카 파드 집합의 실행을 안정적으로 유지하는 것이다. 레플리카셋은 보통 명시된 동일 파드 개수에 대한 가용성을 보증하는데 사용한다. 레플리카셋의 작동 방식 레플리카셋을 정의하는 필드는 획득 가능한 파드를 식별하는 방법이 명시된 셀렉터, 유지해야 하는 파드 개수를 명시하는 레플리카의 개수 유지를 위해 생성하는 신규 파드에 대한 데이터를 명시하는 파드 템플릿을 포함한다. 레플리카셋은 필드에 지정된 설정을 충족하기 위해 필요한 만큼 파드를 만들고 삭제한다. 이 때 파드를 생성하기 위해 명시된 파드 템플릿을 사용한다. 레플리카셋은 파드의 metadata.ownerReferences 필드를 통해 파..
[워크로드 리소스] 디플로이먼트 스케일리와 롤아웃 디플로이먼트 스케일링과 롤아웃 쿠버네티스 공식문서를 확인하며 디플로이먼트의 스케일링과 롤아웃에 대해서 기억해야 하는 부분을 기록한다. 디플로이먼트 스케일링 kubectl scale deployment/nginx-deployment --replicas=10 커맨드를 실행하여 수동으로 스케일 할 수 있으며 정상적으로 스케일되면 아래와 같이 출력된다. deployment.apps/nginx-deployment scaled 클러스터에서 horizontal Pod autoscaling를 설정 한 경우 디플로이먼트에 대한 오토스케일러를 설정할 수 있으며 기존 파드의 CPU 사용률을 기준으로 생성할 최소 파드 및 최대 파드의 수를 선택할 수 있다. kubectl autoscale deployment/nginx-dep..
[워크로드 리소스] 디플로이먼트 업데이트와 롤백 디플로이먼트 업데이트와 롤백 쿠버네티스 공식문서를 확인하며 디플로이먼트의 업데이트와 롤백에 대해서 기억해야 하는 부분을 기록한다. 디플로이먼트(Deployment)는 파드와 레플리카셋(ReplicaSet)에 대한 선언적 업데이트를 제공한다. 디플로이먼트에서 “의도하는 상태”를 설명하고, 디플로이먼트 컨트롤러(Controller)는 현재 상태에서 의도하는 상태로 비율을 조정하며 변경한다. 새 레플리카셋을 생성하는 디플로이먼트를 정의하거나 기존 디플로이먼트를 제거하고, 모든 리소스를 새 디플로이먼트에 적용할 수 있다. 디플로이먼트가 소유하는 레플리카셋은 관리하지 말아야 한다. 유스케이스 아래는 디플로이먼트의 일반적인 유스케이스다. 레플리카셋을 롤아웃 할 디플로이먼트 생성. 레플리카셋은 백그라운드에서 파드를 ..
[Pod] 다운워드(Downward) API 다운워드(Downward) API 쿠버네티스 공식문서를 확인하며 다운워드 API에 대해서 기억해야 하는 부분을 기록한다. 컨테이너가 쿠버네티스에 지나치게 종속되지 않으면서도 자기 자신에 대한 정보를 알고 있으면 유용할 때가 있다. 다운워드 API는 컨테이너가 자기 자신 혹은 클러스터에 대한 정보를 쿠버네티스 클라이언트나 API 서버 없이도 사용할 수 있게 한다. 잘 알려진 특정 환경 변수에다가 고유한 식별자를 넣어 사용하는 애플리케이션이 있을 때, 해당 애플리케이션에 맞게 작업할 수도 있겠지만 이러한 방식은 오류가 나기 쉽고 결합력이 높아지게 된다. 위에서 말한 방법 대신 파드의 이름을 식별자로 사용하고 잘 알려진 환경 변수에 파드의 이름을 넣는 것도 좋은 방식이다. 쿠버네티스를 실행 중인 컨테이너에 파..