[클라우드 네이티브] Pod에서 kubernetes init 컨테이너의 역할 및 용도

목차

포드의 초기화 컨테이너

1 초기화 컨테이너 기능

2 초기화 컨테이너 사용


포드의 초기화 컨테이너

초기화 컨테이너는 포드 시작 내의 애플리케이션 컨테이너 전에 실행되는 특수 컨테이너입니다. init 컨테이너에는 애플리케이션 이미지에 없는 일부 유틸리티 및 설치 스크립트가 포함될 수 있습니다.

1 초기화 컨테이너 기능

init 컨테이너는 다음을 제외하고 일반 컨테이너와 매우 유사합니다.

  • 그들은 항상 끝까지 달려갑니다. Pod의 Init 컨테이너가 실패하면 kubelet은 성공할 때까지 Init 컨테이너를 계속 다시 시작합니다. 그러나 Pod의 restartPolicy값이 "Never"이고 Pod의 Init 컨테이너가 실패하면 Kubernetes는 전체 Pod의 상태를 Failed로 설정합니다.

  • 다음이 시작되기 전에 각각이 성공적으로 완료되어야 합니다.

  • 또한 Init 컨테이너는 Pod가 준비되기 전에 완료될 때까지 실행해야 하므로 , lifecycle지원하지 않습니다 .livenessProbereadinessProbestartupProbe

  • Pod에 대해 여러 Init 컨테이너가 지정된 경우 하나씩 순차적으로 실행됩니다. 다음 Init 컨테이너가 실행되기 전에 각 Init 컨테이너가 성공적으로 실행되어야 합니다. 모든 Init 컨테이너 실행이 완료되면 Kubernetes는 포드의 애플리케이션 컨테이너를 초기화하고 평소대로 실행합니다.

  • Init 컨테이너는 리소스 제한, 데이터 볼륨 및 보안 설정을 포함하여 애플리케이션 컨테이너의 모든 필드와 기능을 지원합니다. 그러나 Init 컨테이너는 리소스 요청 및 제한을 약간 다르게 처리합니다.

2 초기화 컨테이너 사용

공식 웹사이트 주소: Init container | Kubernetes

containersInit 컨테이너는 애플리케이션 컨테이너를 설명하는 배열과 병렬로 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

추천

출처blog.csdn.net/weixin_53678904/article/details/132156422