K8S学习之基础十:初始化容器和主容器

发布于:2025-03-05 ⋅ 阅读:(28) ⋅ 点赞:(0)

init容器和主容器

init容器和主容器的区别

  1. 初始化容器不支持 Readinessprobe,因为他们必须在pod就绪之前运行完成
  2. 每个init容器必须运行成功,下一个才能够运行
# 定义两个初始化容器,完成后再运行主容器
vi pod-init.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  initContainers:
  - name: init-myservice
    image: 172.16.80.140/busybox/busybox:1.28
    imagePullPolicy: IfNotPresent
    command: ['sh', '-c', "sleep 5"]
  - name: init-mydb
    image: 172.16.80.140/busybox/busybox:1.28
    imagePullPolicy: IfNotPresent
    command: ['sh', '-c', "sleep 5"]    
  containers:
  - name: myapp-container
    image: 172.16.80.140/busybox/busybox:1.28
    command: ['sh', '-c', 'echo The app is running! && sleep 3600']

  

# 获取百度首页,挂载到init容器中,同时挂载到主容器nginx中
vi pod-init-2.yaml
apiVersion: v1
kind: Pod
metadata:
  name: initnginx
spec:
  initContainers:
  - name: install
    image: 172.16.80.140/busybox/busybox:1.28
    imagePullPolicy: IfNotPresent
    command:
    - wget
    - "-O"
    - "/work-dir/index.html"
    - "https://www.baidu.com"
    volumeMounts:
    - name: workdir
      mountPath: /work-dir
  containers:
  - name: nginx
    image: 172.16.80.140/nginx/nginx:1.26
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 80
    volumeMounts:
    - name: workdir
      mountPath: /usr/share/nginx/html
  dnsPolicy: Default
  volumes:
  - name: workdir
    emptyDir: {}