wyh-l6

导航

Pod的常状态与initContainer

pod调度流程:
 
pod常见状态效果图:
 
pod常见状态:
 
######################################################################################################
 
pauser:又叫Infra容器,是pod的基础容器,镜像体积很小(只有几百kb),配置在容器运行时(1.24之前的版本在kubelet上配置)上,主要功能是一个pod中多个容器的网络通信(运行pod的时候kubelet来加载它)
(如果想要测试pause,在docker运行镜像的时候加上参数--net=,指定容器使用容器的网络)
 
安装ethtool能查看到容器中对端网卡的编号:
    ethtool -S eth0
 
######################################################################################################
 
init容器的作用:
  1. 可以为业务容器提前准备好运行环境,比如将业务容器需要的配置文件提前生成并放在指定位置、检查数据权限或完整性、软件版本等基础环境
  2. 可以在运行有业务容器前准备好需要的业务数据,比如从OSS下载、或者从其他位置copy
  3. 检查依赖服务是否启动
init容器的特点:
  1. 一个pod可以有多个业务容器和多个init容器,但是每个init容器和业务容器运行的环境都是隔离的
  2. init容器会比业务容器先启动,只有init容器运行成功后才会继续运行业务容器
  3. 如果一个pod拥有多个init容器,则需要从上到下逐个运行并且要全部运行成功后才会运行业务容器
  4. init容器不支持探针检测(因为初始化完成后就会退出,不会再次运行)
 
init容器实战:
cat <<EOF >initcontainer.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
  namespace: wyh-test1-ns
  labels:
    app: nginx-deploy-debug
spec:
  selector:
    matchLabels:
      app: nginx-test
  template:
    metadata:
      labels:
        app: nginx-test
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
        volumeMounts:
        - name: data-volume
          mountPath: /usr/share/nginx/html/wyh
      initContainers:
      - name: init-nginx-html
        image: centos:7.9.2009
        command: ['/bin/bash','-c',"for i in {1..10}; do echo ${i} $(date) >> /data/initcontainer/a.txt; sleep 1;  done " ]
        volumeMounts:
        - name: data-volume
          mountPath: "/data/initcontainer"
      volumes:
      - name: data-volume
        hostPath:
          path: /data/initcontainer
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
  namespace: wyh-test1-ns
  labels:
    app: nginx-svc-debug
spec:
  type: NodePort
  ports:
  - name: http
    port: 80
    targetPort: 80
    nodePort: 30080
  selector:
    app: nginx-test
EOF
执行文件并查看容器变化
kubectl apply -f initcontainer.yaml
kubectl get pod -nwyh-test1-ns -owide
进入192.168.213.21服务器,查看/data/initcontainer/a.txt文件变化
 
######################################################################################################
 
 
 
 
 
 
 
 

posted on 2022-08-15 09:56  IT老六  阅读(201)  评论(0编辑  收藏  举报