목차
포드의 초기화 컨테이너
초기화 컨테이너는 포드 시작 내의 애플리케이션 컨테이너 전에 실행되는 특수 컨테이너입니다. init 컨테이너에는 애플리케이션 이미지에 없는 일부 유틸리티 및 설치 스크립트가 포함될 수 있습니다.
1 초기화 컨테이너 기능
init 컨테이너는 다음을 제외하고 일반 컨테이너와 매우 유사합니다.
-
그들은 항상 끝까지 달려갑니다. Pod의 Init 컨테이너가 실패하면 kubelet은 성공할 때까지 Init 컨테이너를 계속 다시 시작합니다. 그러나 Pod의
restartPolicy
값이 "Never"이고 Pod의 Init 컨테이너가 실패하면 Kubernetes는 전체 Pod의 상태를 Failed로 설정합니다. -
다음이 시작되기 전에 각각이 성공적으로 완료되어야 합니다.
-
또한 Init 컨테이너는 Pod가 준비되기 전에 완료될 때까지 실행해야 하므로 ,
lifecycle
및 를 지원하지 않습니다 .livenessProbe
readinessProbe
startupProbe
-
Pod에 대해 여러 Init 컨테이너가 지정된 경우 하나씩 순차적으로 실행됩니다. 다음 Init 컨테이너가 실행되기 전에 각 Init 컨테이너가 성공적으로 실행되어야 합니다. 모든 Init 컨테이너 실행이 완료되면 Kubernetes는 포드의 애플리케이션 컨테이너를 초기화하고 평소대로 실행합니다.
-
Init 컨테이너는 리소스 제한, 데이터 볼륨 및 보안 설정을 포함하여 애플리케이션 컨테이너의 모든 필드와 기능을 지원합니다. 그러나 Init 컨테이너는 리소스 요청 및 제한을 약간 다르게 처리합니다.
2 초기화 컨테이너 사용
공식 웹사이트 주소: Init container | Kubernetes
containers
Init 컨테이너는 애플리케이션 컨테이너를 설명하는 배열과 병렬로 Pod 사양에 지정됩니다.
apiVersion: v1
kind: Pod
metadata:
name: init-demo
spec:
containers:
- name: myapp-container
image: busybox:1.28
command: ['sh', '-c', 'echo The app is running! && sleep 3600']
initContainers:
- name: init-myservice
image: busybox:1.28
command: ['sh', '-c', 'echo init-myservice is running! && sleep 5']
- name: init-mydb
image: busybox:1.28
command: ['sh', '-c', 'echo init-mydb is running! && sleep 10']
-
시작 세부정보 보기
$ kubectl describe pod init-demo
# 部分结果
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 2m16s default-scheduler Successfully assigned default/init-demo to k8s-node2
Normal Pulling 2m16s kubelet Pulling image "busybox:1.28"
Normal Pulled 118s kubelet Successfully pulled image "busybox:1.28" in 17.370617268s (17.370620685s including waiting)
Normal Created 118s kubelet Created container init-myservice
Normal Started 118s kubelet Started container init-myservice
Normal Pulled 112s kubelet Container image "busybox:1.28" already present on machine
Normal Created 112s kubelet Created container init-mydb
Normal Started 112s kubelet Started container init-mydb
Normal Pulled 101s kubelet Container image "busybox:1.28" already present on machine
Normal Created 101s kubelet Created container myapp-container
Normal Started 101s kubelet Started container myapp-container