15、k8s-pod的生命周期-pod的创建、初始化容器、运行主容器、pod终止

概念:一边将pod对象从创建到pod的终止过程的这段时间称为pod的生命周期、主要有4个过程:

  ·pod的创建

  ·运行初始化容器(init container)过程

  ·运行主容器(mian container)过程

    ··容器启动后钩子(post start)、容器终止前钩子(pre stop)

    ··容器的存活性探测(liveness probe)、就绪性探测(readiness probe)

  ·pod终止过程

 

在pod的整个生命过程中、会出现5种状态(相位)、分别如下:

  ·挂起(Pending):apiserver已经创建了pod资源对象、但它尚未被调度完成或者仍处于下载镜像的过程中

  ·运行中(Running):pod已经被调度至某个节点、并且所有容器都已经被kubelet创建完成

  ·成功(Succeeded):pod中所有容器都已经成功终止并且不会被重启(容器执行完指令后就终止退出了)

  ·失败(Failed):所有容器都已经终止、但至少有一个容器终止失败、即容器返回了非0值得退出状态

  ·未知(Unknow):apiserver无法正常获取到pod对象得状态信息、通常由网络通信失败所致

 

pod的创建核终止

  ·pod的创建:

    关键组件:apiServer、etcd、Scheduler、kubelet

         

        

 

pod的终止过程:

 

pod:初始化容器:initContainers

注意:如果初始化容器 无法启动 、就无法启动 ‘主容器’、且会一直尝试重启  初始化容器

 

1、新建yaml文件:vim pod-initcontainer.yaml
==================================================================================================================
apiVersion: v1
kind: Pod
metadata:
 name: pod-initcontainer
 namespace: dev

spec:
 containers:        #主容器
 - name: main-container
   image: nginx:1.17.1
   ports:
   - name: nginx-port
     containerPort: 80
 initContainers:        #初始化容器的创建
 - name: test-mysql
   image: busybox:1.30
   command: ['sh', '-c', 'until ping 192.168.177.201 -c 1 ; do echo waiting for mysql....; sleep 2; done;']
 - name: test-redis
   image: busybox:1.30
   command: ['sh', '-c', 'until ping 192.168.177.202 -c 1 ; do echo waiting for mysql....; sleep 2; done;']
==================================================================================================================

2、执行文件:kubectl create -f pod-initcontainer.yaml

3、查看pod的状态:kubectl get pod pod-initcontainer -ndev
  #原因是初始化容器创建后ping不通ip

 

4、持续观察pod状态  -w :kubectl get pod pod-initcontainer -ndev -w

 

5、给主机添加ip并观察pod的状态:ifconfig ens33:1 192.168.177.201 netmask 255.255.255.0 up

 5、再继续添加网卡、容器就已经初始化完成、发现pod已经启动

 


 

posted @ 2024-07-01 00:11  little小新  阅读(22)  评论(0编辑  收藏  举报