반응형
Pod란
- 컨테이너를 묶어서 관리하는 개념
- 단일,다중 컨테이너 구성
- 쿠버네티스는 컨테이너 단위로 관리하는게 아니라 파드별로 관리
- 다중 컨테이너 경우 내부 컨테이너별로 동일한IP를 접근하기에 컨테이너별로 포트 설정 변경 필요
- Pod 생성하기
##pod.yaml##
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
- Pod 라이프 사이클
- Pending : 쿠버네티스가 Pod를 생성하는 상태(이미지 다운로드 후 컨테이너를 실행하는 중)
- Running : Pod내 컨테이너가 실행중인 상태
- Successed : Pod내에 모든 컨테이저 정상 종료(재시작되지 않음)
- Failed : Pod내에 컨테이너 중 정상적으로 종료되지 않은 컨테아가 있는 상태
- Unknown : Pod 상태를 확인 할 수 없는 상태(Pod가 있는 Node랑 통신 불가능)
- Pod Type
- Type 상태 : True(상태 활성화), False(상태 비활성화) , Unknown(상태 알 수 없음)
- Initialized : 모든 초기화 컨테이너가 성공적으로 시작 완료
- Ready : Pod가 요청들을 실행할 수 있는 상태
- ContainersReady : Pod내 모든 컨테이너가 준비 상태
- PodScheduled : Pod가 하나의 노드로 스케줄을 완료 했다는 의미
- UnScheduled : 스케줄러가 자원 부족, 제약등을 통해 당장 Pod를 스케줄 할 수 없는 상태
- Kubelet 통한 컨테이너 진단
- kubernetes는 kubelet을 통해 컨테이너를 주기적으로 진단
- Kubernetes에는 다양한 Probe를 지원
- livenessProbe : 컨테이너가 실행중인지 확인 , 실행이 실패시 → Kubelet은 컨테이너를 종료
- 재시작 정책이 존재할 경우 재시작, livenessProbe명시되지 않을 경우 기본 상태값 : Success
- readlinessProbe : 컨테이너가 실행 후 서비스 요청에 응답이 가능한지 진단
- 진단이 실패 할 경우 엔드포인트 컨트롤러는 해당 Pod에 연결된 모든 서비스 대상으로 엔드포인트를 제거
- livenessProbe : 컨테이너가 실행중인지 확인 , 실행이 실패시 → Kubelet은 컨테이너를 종료
- Kubernetes 핸들러
- 진단 결과 : Sucess(성공), Failure(실패), Unknown(진단 실패 → 상태 확인 불가)
- ExecAction : 컨테이너 안 지정된 명령을 실행 → 종료 코드 0일 경우 Success 진단
- TCPSockerAction : 컨테이너 안 지정된 IP,Port로 TCP상태를 확인하고 포트가 열려 있으면, Success 진단
- HTTPGetAction : 컨테이너 안에 IP,Port,Path → HTTP,GET 요청(응답코드 200~400사이 일 경우 Success)
- 초기화 컨테이너
- Pod의 앱들이 실행하기 전에 실행되는 컨테이너를 의미
- 컨테이너가 실행이 완료되는 목표
- 초기화 컨테이너가 성공해야만 앱컨테이너가 실행된다
- 초기화 컨테이너가 실패시에 Kubelet은 초기화 컨테이가 성공할떄까지 반복적으로 재시작
- 초기화 컨테이너 Yaml
-
- 초기화 Pod 생성
apiVersion: v1 kind: Pod metadata: name: myapp-pod labels: app: myapp spec: containers: - name: myapp-container image: busybox:1.28 command: ['sh', '-c', 'echo running! && sleep 3600'] initContainers: - name: init-myservice image: busybox:1.28 command: ['sh', '-c', 'sleep 2; echo init-myservice;'] - name: init-mydb image: busybox:1.28 command: ['sh', '-c', 'sleep 2l echo init-mydb;']
- 초기화 Pod 생성
- 초기화 컨테이너 생성
-
-
-
-
- 초기화 Pod 생성 절차 로그 확인
- init-myservice → init-mydb → myap-container
-
-
- Pause 컨테이너
- 다른 컨테이너의 부모 컨테이너 역할
- 네트워크,볼륨등을 공유해서 사용
- Pause 컨테이너가 재시작 되면 Pod안에 잇는 모든 컨테이너가 재시작
- Static Pod
- 기본 Pod를 생성시에는 kube-apserver를 통해서 생성되나, Static-Pod 경우 apiserver를 통하지 않고 직접 실행하는 Pod
- Static Pod 경우 Kubelet이 직접 관리 → 이상시에는 재시작
- 단, kubelet이 실행중인 Node에서만 실행
- kubernetes etc,api, CrontabPod
- Path : /etc/kubernetes/manifests
- Static Pod exmaple
##pod.yaml##
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
- Static Pod 생성 하기
반응형
'kubernetes' 카테고리의 다른 글
Kubernetes LoadBalancer(MetalLB) (0) | 2024.04.23 |
---|---|
CNI Flannel 설치 가이드 (0) | 2024.04.22 |
kubespray 구축 (0) | 2024.04.18 |
손쉬운 Kubernetes 설치 가이드 (0) | 2024.04.16 |
Pod 배포시 단일파드?, 여러개 파드? 선택 (0) | 2024.04.16 |
댓글