Cloud Engineering/Kubernetes ⚙️

Jobs Job 은 하나 이상의 pod들이 성공적으로 종료되기 전까지 실행을 반복하는 오브젝트 컨트롤러이다. 작업을 수행하는 pod 이 성공적으로 완료되면 pod이 맡은 임무를 성공적으로 완료한 것으로 간주하여 pod을 종료시킨다. 또한 Job은 pod들을 병렬적으로 수행하도록 설정할 수 있다. Job은 데몬셋, 레플리카셋과 달리 레이블 셀렉터를 사용자가 직접 지정하지 않으며, 컨트롤러에 의해 부여된 고유값인 UID를 레이블 셀렉터로 사용한다. Job은 pod 1. 직렬적으로 작업 처리하기 (Non-parallel Job) apiVersion: batch/v1 ## batch 그룹의 v1 api 사용 kind: Job # Job object 선언 metadata: name: myapp-job spec: ..
데몬셋 (Daemon Set) 데몬셋은 레플리카셋이나 레플리케이션 컨트롤러처럼 object controller의 한 종류로 pod들을 관리하는 컨트롤러이다. 데몬셋은 Node Label 이 일치하는 노드들 에 pod 복제본이 각 1개씩 실행되도록 관리한다. 만약 Node Label에 대해서 따로 설정을 해주지 않는다면 기본적으로 control plane을 제외한 워커로드에서 pod가 1개씩 실행되도록 관리하는 컨트롤러이다. 레플리카셋 또는 레플리케이션 컨트롤러와 차이점은 별도로 pod 복제본 수를 제어하지 않는다는 점이다. 즉, 처음에 생성한 pod에 문제가 생겨서 삭제가 되면 레플리카셋이나 레플리케이션 컨트롤러는 복제본 pod을 스스로 생성해 준다. 그렇지만 데몬셋은 pod이 삭제가 되더어도 다시 po..
Replication Controller 쿠버네티스의 컨트롤러는 파드 복제본 (replicas)들의 숫자를 보장해주는 역할을 한다. 레플레케이션 컨트롤러는 이용가능한 상태의 pod을 원하는 수 만큼으로 관리해 주는데, pod가 원하는 수 보다 많은 경우 줄여주고, 원하는 수 보다 적은 경우 자동으로 늘려준다. 레플리케이션 컨트롤러를 구성하는데 필요한 요소는 레이블 셀렉터, 파드 템플릿, 복제본의 수가 있다. 레이블 셀렉터는 key :value 형식으로 설정되며, 생성 및 관리를 할 파드에 대해 지정하는 것이다. 파드 템플릿은 파드를 어떤식으로 구성할 것인지 설정 내용에 대한 것이다. 이 파드 템플릿과 동일하게 복제본들이 만들어 진다. 복제본의 수는 지정해 주지 않으면 디폴트 값이 1 이며, 지정해 주면 ..
컨테이너 프로브 실제 서비스를 운영하게 되면 쿠버네티스의 컨테이너를 배포해서 운영하게 될 것이다. 그런데 컨테이너가 정상적으로 동작하지 않으면 서비스에 장애가 발생할 것이므로, 컨테이너의 상태를 확인해야 할 것이다. 컨테이너 프로브는 컨테이너가 제대로 실행되고 있는지 진단한다. 컨테이너 프로브에는 세가지 종류가 있으며, 이를 Manifest File 작성 시에 설정해 줄 수 있다. 프로브는 컨테이너의 상태에 따라 startupProbe, readinessProbe, livenessProbe 순서로 동작한다. 프로브는 설정하지 않을 수도 있으며, 원하는 프로브들을 여러개 설정할 수 있다. 1. startupProbe 컨테이너 내의 어플리케이션이 시작되었는지 확인한다. 프로브들 중에서 가장 먼저 실행되는 프..
Pod의 생명주기 Pod는 kubelet에 의해 생성되며, 영구적인 엔티티가 아니라 일시적인 엔티티이다. Pod이 생성되면 UID를 할당받고, node에 스케줄링 되어서 할당된 node 내에서 종료될때까지 남아있는다. Pod은 한번 스케줄링 되어 node에 할당되면 그걸로 끝이라서 일시적이라고 할 수 있는 것이다. 즉, 같은 Pod이 rescheduling 되는 일은 없다. 또한 Pod은 생성되어서 종료될때까지 생명주기를 가진다 Pending Pod이 kube scheduler에 의해서 스케줄링 되기 이전 상태이다. Registry 에서 Image를 pull해오면서 준비하는 상태. 즉, Pod이 만들어지는 단계이다. Running Pod이 만들어져서 Node에 할당이 된 상태이다. Pod 내부서는 하나 ..
Kubernetes Namespace란 쿠버네티스 클러스터를 논리적으로 분할하는 파티션이다. 즉, 클러스터 내에서 오브젝트를 논리적으로 파티셔닝해서 사용할 수 있다. 주의 ) 도커컨테이너의 리눅스 네임스페이스와는 관련이 없다. 쿠버네티스의 네임스페이스 개념은 따로 이해해야 한다. 클러스터의 Namespace 정보 확인하기 $ kubectl get namespace vagrant@kube-control1:~/work/mj$ kubectl get namespace NAME STATUS AGE default Active 24h kube-node-lease Active 24h kube-public Active 24h kube-system Active 24h default : 별도로 네임스페이스를 지정하지 않으면..
Annotation이란 Object에 부가적으로 붙여주고 싶은 정보를 Annotation이라고 한다. Label과 같이 Key: Value 값으로 저장되지만, Label처럼 검색이 되지 않는다. Annotation을 추가하는 방법 1. object에 직접 Annotation을 커맨드로 추가 $ kubectl annotate pods PODNAME ANNOTATION_KEY=VALUE [예시] $ kubectl annotate pods myapp-pod devops-team/developer=Minjee kubectl describe pods 명령어를 통해 다음과 같이 Annotation 필드의 마지막 줄에 내용이 추가 된 것을 확인할 수 있다. 2. Manifest File 생성시에 Annotation ..
Pod 쿠버네티스의 워크로드 리소스 중에서 가장 작은 기본 구성 단위이다. 쿠버네티스에서는 컨테이너 단위로 다루는 도커와 달리 개별 pod 단위로 다룬다. 하나이상의 컨테이너를 포함하는 쿠버네티스의 기본 실행 단위이다. pod가 포함하는 컨테이너는 1개일 수도, 여러개일 수도 있다. pod가 실행하는 컨테이너가 1개이면 pod와 컨테이너를 비슷하게 생각할 수 있다. 그러나 컨테이너가 여러개 실행될 수도 있으므로 구분해야 한다. 네트워크나 Storage에 연결할 때 컨테이너가 아니라, pod 단위와 연결한다. 즉, pod와 연결된 volume storage가 있는 경우 pod 내부의 컨테이너들은 이 공간을 공유해서 사용한다. 네트워크도 동일하게 공유해서 사용한다. pod라는 단위는 하나의 노드에서 실행된다..
minjiwoo
'Cloud Engineering/Kubernetes ⚙️' 카테고리의 글 목록 (2 Page)