k8s-pod的启动
- 一、命令行启动nginx的pod
-
- 创建deployment
- 访问节点中的nginx
- 查看部署控制器和副本控制器
- 模拟高可用,将k8s-3关机
- 手动触发重建
- 删除rs会重新启新的rs
- 删除deploy,所管理的rs也会被删除
- 二、yaml文件启pod
-
- kubectl apply 启动pod
- kubectl apply 使用部署控制器启动pod
- 三、pod的启动流程
- 四、pod的终止过程
官方文档:https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/
pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元
一、命令行启动nginx的pod
kubectl get查看pod和namespace(ns)
-n 指定命名空间
1[root@k8s-1 ~]# kubectl get pod 2No resources found in default namespace. 3[root@k8s-1 ~]# kubectl get ns 4NAME STATUS AGE 5default Active 20h 6kube-node-lease Active 20h 7kube-public Active 20h 8kube-system Active 20h 9kubernetes-dashboard Active 18h 10[root@k8s-1 ~]# kubectl get pod -n kube-system 11NAME READY STATUS RESTARTS AGE 12calico-kube-controllers-64cc74d646-b7l5l 1/1 Running 0 129m 13calico-node-4v7n5 1/1 Running 1 (15h ago) 19h 14calico-node-jr9sg 1/1 Running 1 (15h ago) 19h 15calico-node-tpsnh 1/1 Running 1 (15h ago) 19h 16coredns-6d8c4cb4d-6dtcb 1/1 Running 0 129m 17coredns-6d8c4cb4d-jjdrf 1/1 Running 0 129m 18etcd-k8s-1 1/1 Running 1 (15h ago) 20h 19kube-apiserver-k8s-1 1/1 Running 1 (15h ago) 20h 20kube-controller-manager-k8s-1 1/1 Running 1 (15h ago) 20h 21kube-proxy-4vvtv 1/1 Running 1 (15h ago) 19h 22kube-proxy-7r4kf 1/1 Running 1 (15h ago) 19h 23kube-proxy-vpc62 1/1 Running 1 (15h ago) 19h 24kube-scheduler-k8s-1 1/1 Running 1 (15h ago) 20h 25
创建deployment
kubectl create deployment:创建 Deployment 资源- k8s-nginx:Deployment 的名称
--image=nginx:指定使用 nginx 镜像-r 3或 --replicas=3:指定创建 3 个副本
执行成功后会创建 3 个运行 nginx 的 Pod,并由这个 deployment 进行管理。如果某个 Pod 出现故障,deployment 会自动创建新的 pod 来维持 3 个副本的状态
1[root@k8s-1 ~]# kubectl create deployment k8s-nginx --image=nginx -r 3 2deployment.apps/k8s-nginx created 3[root@k8s-1 ~]# kubectl get pod 4NAME READY STATUS RESTARTS AGE 5k8s-nginx-6d779d947c-cgc2b 0/1 ContainerCreating 0 14s 6k8s-nginx-6d779d947c-nkdpm 0/1 ContainerCreating 0 14s 7k8s-nginx-6d779d947c-qhz5w 0/1 ContainerCreating 0 14s 8 9# 过一会查看 10[root@k8s-1 ~]# kubectl get pod 11NAME READY STATUS RESTARTS AGE 12k8s-nginx-6d779d947c-cgc2b 1/1 Running 0 3m30s 13k8s-nginx-6d779d947c-nkdpm 1/1 Running 0 3m30s 14k8s-nginx-6d779d947c-qhz5w 1/1 Running 0 3m30s 15 16# 查看更详细的信息 -o wide 17[root@k8s-1 ~]# kubectl get pod -o wide 18NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES 19k8s-nginx-6d779d947c-cgc2b 1/1 Running 0 3m46s 10.224.13.68 k8s-3 <none> <none> 20k8s-nginx-6d779d947c-nkdpm 1/1 Running 0 3m46s 10.224.13.69 k8s-3 <none> <none> 21k8s-nginx-6d779d947c-qhz5w 1/1 Running 0 3m46s 10.224.200.200 k8s-2 <none> <none> 22 23[root@k8s-2 ~]# docker images|grep nginx 24nginx latest 41f689c20910 4 weeks ago 192MB 25
访问节点中的nginx
1[root@k8s-1 ~]# curl 10.224.13.68 2<!DOCTYPE html> 3<html> 4<head> 5<title>Welcome to nginx!</title> 6<style> 7html { color-scheme: light dark; } 8body { width: 35em; margin: 0 auto; 9font-family: Tahoma, Verdana, Arial, sans-serif; } 10</style> 11</head> 12<body> 13<h1>Welcome to nginx!</h1> 14<p>If you see this page, the nginx web server is successfully installed and 15working. Further configuration is required.</p> 16 17<p>For online documentation and support please refer to 18<a href="http://nginx.org/">nginx.org</a>.<br/> 19Commercial support is available at 20<a href="http://nginx.com/">nginx.com</a>.</p> 21 22<p><em>Thank you for using nginx.</em></p> 23</body> 24</html> 25
查看部署控制器和副本控制器
1[root@k8s-1 ~]# kubectl get deploy 2NAME READY UP-TO-DATE AVAILABLE AGE 3k8s-nginx 3/3 3 3 8m15s 4[root@k8s-1 ~]# kubectl get rs 5NAME DESIRED CURRENT READY AGE 6k8s-nginx-6d779d947c 3 3 3 8m36s 7
模拟高可用,将k8s-3关机
[root@k8s-3 ~]# init 0
等一会再次查看,Kubernetes 需要一定时间来检测到节点故障并更新 Pod 状态
1[root@k8s-1 ~]# kubectl get node 2NAME STATUS ROLES AGE VERSION 3k8s-1 Ready control-plane,master 21h v1.23.17 4k8s-2 Ready worker 20h v1.23.17 5k8s-3 NotReady worker 20h v1.23.17 6 7# 等待约5分钟,Kubernetes 已经完成了故障转移:当 k8s-3 节点不可用时,原运行在该节点上的 Pod 被标记为 Terminating,同时控制器自动在可用的 k8s-2 节点上新建了 Pod,确保应用持续可用 8[root@k8s-1 ~]# kubectl get pod -o wide 9NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES 10k8s-nginx-6d779d947c-2r6gh 1/1 Running 0 33m 10.224.200.201 k8s-2 <none> <none> 11k8s-nginx-6d779d947c-cgc2b 1/1 Terminating 0 50m 10.224.13.68 k8s-3 <none> <none> 12k8s-nginx-6d779d947c-mv5qz 1/1 Running 0 33m 10.224.200.202 k8s-2 <none> <none> 13k8s-nginx-6d779d947c-nkdpm 1/1 Terminating 0 50m 10.224.13.69 k8s-3 <none> <none> 14k8s-nginx-6d779d947c-qhz5w 1/1 Running 0 50m 10.224.200.200 k8s-2 <none> <none> 15 16[root@k8s-1 ~]# kubectl get pod -o wide 17NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES 18k8s-nginx-6d779d947c-2r6gh 1/1 Running 0 143m 10.224.200.201 k8s-2 <none> <none> 19k8s-nginx-6d779d947c-mv5qz 1/1 Running 0 143m 10.224.200.202 k8s-2 <none> <none> 20k8s-nginx-6d779d947c-qhz5w 1/1 Running 0 160m 10.224.200.200 k8s-2 <none> <none> 21
k8s-3 开机并恢复正常后,会被纳入调度范围,新创建的 Pod(包括滚动更新、扩缩容时产生的)可能会被分配到该节点,但已有 Pod 不会自动迁移
手动触发重建
1[root@k8s-1 ~]# kubectl rollout restart deployment k8s-nginx 2deployment.apps/k8s-nginx restarted 3[root@k8s-1 ~]# kubectl get pod -o wide 4NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES 5k8s-nginx-5fffdc7cd7-p8h2p 0/1 ContainerCreating 0 2s <none> k8s-3 <none> <none> 6k8s-nginx-6d779d947c-2r6gh 1/1 Running 0 147m 10.224.200.201 k8s-2 <none> <none> 7k8s-nginx-6d779d947c-mv5qz 1/1 Running 0 147m 10.224.200.202 k8s-2 <none> <none> 8k8s-nginx-6d779d947c-qhz5w 1/1 Running 0 164m 10.224.200.200 k8s-2 <none> <none> 9[root@k8s-1 ~]# kubectl get pod -o wide 10NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES 11k8s-nginx-5fffdc7cd7-2c7fr 1/1 Running 0 24s 10.224.13.71 k8s-3 <none> <none> 12k8s-nginx-5fffdc7cd7-ckqhs 1/1 Running 0 35s 10.224.200.203 k8s-2 <none> <none> 13k8s-nginx-5fffdc7cd7-p8h2p 1/1 Running 0 43s 10.224.13.70 k8s-3 <none> <none> 14 15# 在创建一个就会分配 16[root@k8s-1 ~]# kubectl create deployment k8s-nginx-2 --image=nginx -r 3 17deployment.apps/k8s-nginx-2 created 18[root@k8s-1 ~]# kubectl get pod -o wide 19NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES 20k8s-nginx-2-6449bd5588-f8x6k 0/1 ContainerCreating 0 4s <none> k8s-3 <none> <none> 21k8s-nginx-2-6449bd5588-fzrqn 0/1 ContainerCreating 0 4s <none> k8s-3 <none> <none> 22k8s-nginx-2-6449bd5588-jk22m 0/1 ContainerCreating 0 4s <none> k8s-2 <none> <none> 23k8s-nginx-5fffdc7cd7-ckqhs 1/1 Running 1 (21h ago) 21h 10.224.200.205 k8s-2 <none> <none> 24k8s-nginx-5fffdc7cd7-jdggz 1/1 Running 0 138m 10.224.200.209 k8s-2 <none> <none> 25k8s-nginx-5fffdc7cd7-vjpj4 1/1 Running 0 138m 10.224.200.210 k8s-2 <none> <none> 26[root@k8s-1 ~]# kubectl get pod -o wide 27NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES 28k8s-nginx-2-6449bd5588-f8x6k 1/1 Running 0 20s 10.224.13.72 k8s-3 <none> <none> 29k8s-nginx-2-6449bd5588-fzrqn 1/1 Running 0 20s 10.224.13.73 k8s-3 <none> <none> 30k8s-nginx-2-6449bd5588-jk22m 1/1 Running 0 20s 10.224.200.211 k8s-2 <none> <none> 31k8s-nginx-5fffdc7cd7-ckqhs 1/1 Running 1 (21h ago) 21h 10.224.200.205 k8s-2 <none> <none> 32k8s-nginx-5fffdc7cd7-jdggz 1/1 Running 0 138m 10.224.200.209 k8s-2 <none> <none> 33k8s-nginx-5fffdc7cd7-vjpj4 1/1 Running 0 138m 10.224.200.210 k8s-2 <none> <none> 34
删除rs会重新启新的rs
1[root@k8s-1 ~]# kubectl get rs 2NAME DESIRED CURRENT READY AGE 3k8s-nginx-2-6449bd5588 3 3 3 4m8s 4k8s-nginx-5fffdc7cd7 3 3 3 21h 5k8s-nginx-6d779d947c 0 0 0 23h 6[root@k8s-1 ~]# kubectl delete rs k8s-nginx-2-6449bd5588 7replicaset.apps "k8s-nginx-2-6449bd5588" deleted 8 9[root@k8s-1 ~]# kubectl get rs 10NAME DESIRED CURRENT READY AGE 11k8s-nginx-2-6449bd5588 3 3 0 4s 12k8s-nginx-5fffdc7cd7 3 3 3 21h 13k8s-nginx-6d779d947c 0 0 0 23h 14[root@k8s-1 ~]# kubectl get pod -o wide 15NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES 16k8s-nginx-2-6449bd5588-ddqpn 1/1 Running 0 27s 10.224.13.74 k8s-3 <none> <none> 17k8s-nginx-2-6449bd5588-knhcb 1/1 Running 0 27s 10.224.200.213 k8s-2 <none> <none> 18k8s-nginx-2-6449bd5588-rx6b5 1/1 Running 0 27s 10.224.200.212 k8s-2 <none> <none> 19k8s-nginx-5fffdc7cd7-ckqhs 1/1 Running 1 (21h ago) 21h 10.224.200.205 k8s-2 <none> <none> 20k8s-nginx-5fffdc7cd7-jdggz 1/1 Running 0 144m 10.224.200.209 k8s-2 <none> <none> 21k8s-nginx-5fffdc7cd7-vjpj4 1/1 Running 0 144m 10.224.200.210 k8s-2 <none> <none> 22
删除deploy,所管理的rs也会被删除
1[root@k8s-1 ~]# kubectl get deploy 2NAME READY UP-TO-DATE AVAILABLE AGE 3k8s-nginx 3/3 3 3 23h 4k8s-nginx-2 3/3 3 3 8m12s 5[root@k8s-1 ~]# kubectl delete deploy k8s-nginx-2 6deployment.apps "k8s-nginx-2" deleted 7[root@k8s-1 ~]# kubectl get deploy 8NAME READY UP-TO-DATE AVAILABLE AGE 9k8s-nginx 3/3 3 3 24h 10[root@k8s-1 ~]# kubectl get rs 11NAME DESIRED CURRENT READY AGE 12k8s-nginx-5fffdc7cd7 3 3 3 21h 13k8s-nginx-6d779d947c 0 0 0 24h 14[root@k8s-1 ~]# kubectl get pod -o wide 15NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES 16k8s-nginx-5fffdc7cd7-ckqhs 1/1 Running 1 (21h ago) 21h 10.224.200.205 k8s-2 <none> <none> 17k8s-nginx-5fffdc7cd7-jdggz 1/1 Running 0 147m 10.224.200.209 k8s-2 <none> <none> 18k8s-nginx-5fffdc7cd7-vjpj4 1/1 Running 0 147m 10.224.200.210 k8s-2 <none> <none> 19 20[root@k8s-1 ~]# kubectl delete deploy k8s-nginx 21deployment.apps "k8s-nginx" deleted 22[root@k8s-1 ~]# kubectl get pod -o wide 23No resources found in default namespace. 24
二、yaml文件启pod
kubectl apply 启动pod
1[root@k8s-1 pod]# vim pod1.yaml 2apiVersion: v1 # 指定了使用的 Kubernetes API 版本,v1 是核心 API 组的稳定版本 3kind: Pod # k8s里对象的类型,Pod 是 Kubernetes 中最小的部署单元 4metadata: # 元数据--》描述数据的数据,对pod进行描述 5 name: nginx # 容器的名字 6spec: # 定义对象的详细信息 7 containers: 8 - name: nginx 9 image: nginx:latest 10 ports: 11 - containerPort: 80 12
执行
1[root@k8s-1 pod]# kubectl apply -f pod1.yaml 2pod/nginx created 3[root@k8s-1 pod]# kubectl get pod -o wide 4NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES 5nginx 1/1 Running 0 18s 10.224.13.75 k8s-3 <none> <none> 6 7# 停了后,会重新启个新的 8[root@k8s-3 ~]# docker ps 9CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 10bb425d874e5e nginx "/docker-entrypoint.…" 3 minutes ago Up 3 minutes k8s_nginx_nginx_default_8cfe649e-66c0-4f39-8bab-c05ed496fd6f_0 11[root@k8s-3 ~]# docker stop bb425d874e5e 12bb425d874e5e 13 14[root@k8s-1 pod]# kubectl get pod -o wide 15NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES 16nginx 1/1 Running 1 (7s ago) 4m25s 10.224.13.75 k8s-3 <none> <none> 17[root@k8s-3 ~]# docker ps 18CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 193bdd8fbfa24e nginx "/docker-entrypoint.…" 16 seconds ago Up 15 seconds k8s_nginx_nginx_default_8cfe649e-66c0-4f39-8bab-c05ed496fd6f_1 20
kubectl apply 使用部署控制器启动pod
1[root@k8s-1 pod]# vim nginx-deployment.yaml 2apiVersion: apps/v1 3kind: Deployment 4metadata: 5 name: nginx-deployment 6 labels: # 标签 7 app: nginx # 具体的标签 8 company: sc 9spec: 10 replicas: 3 # 3个pod,创建一个副本控制器 11 selector: # 选择器 12 matchLabels: # 匹配标签 13 app: nginx 14 template: # 模版 15 metadata: 16 labels: 17 app: nginx 18 spec: 19 containers: 20 - name: nginx 21 image: nginx:latest 22 ports: 23 - containerPort: 80 24
1[root@k8s-1 pod]# kubectl apply -f nginx-deployment.yaml 2deployment.apps/nginx-deployment created 3[root@k8s-1 pod]# kubectl get deploy 4NAME READY UP-TO-DATE AVAILABLE AGE 5nginx-deployment 3/3 3 3 26s 6[root@k8s-1 pod]# kubectl get rs 7NAME DESIRED CURRENT READY AGE 8nginx-deployment-8d545c96d 3 3 3 39s 9[root@k8s-1 pod]# kubectl get pod 10NAME READY STATUS RESTARTS AGE 11nginx 1/1 Running 1 (3h19m ago) 3h23m 12nginx-deployment-8d545c96d-hp5bx 1/1 Running 0 46s 13nginx-deployment-8d545c96d-n7zr5 1/1 Running 0 46s 14nginx-deployment-8d545c96d-wp4nt 1/1 Running 0 46s 15
查看deploy和pod的详细信息
kubectl describe
1[root@k8s-1 pod]# kubectl describe deploy nginx-deployment 2Name: nginx-deployment 3Namespace: default 4CreationTimestamp: Wed, 17 Sep 2025 15:19:10 +0800 5Labels: app=nginx 6 company=sc 7Annotations: deployment.kubernetes.io/revision: 1 8Selector: app=nginx 9Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable 10StrategyType: RollingUpdate 11MinReadySeconds: 0 12RollingUpdateStrategy: 25% max unavailable, 25% max surge 13Pod Template: 14 Labels: app=nginx 15 Containers: 16 nginx: 17 Image: nginx:latest 18 Port: 80/TCP 19 Host Port: 0/TCP 20 Environment: <none> 21 Mounts: <none> 22 Volumes: <none> 23Conditions: 24 Type Status Reason 25 ---- ------ ------ 26 Available True MinimumReplicasAvailable 27 Progressing True NewReplicaSetAvailable 28OldReplicaSets: <none> 29NewReplicaSet: nginx-deployment-8d545c96d (3/3 replicas created) 30Events: 31 Type Reason Age From Message 32 ---- ------ ---- ---- ------- 33 Normal ScalingReplicaSet 3m57s deployment-controller Scaled up replica set nginx-deployment-8d545c96d to 3 34 35 36[root@k8s-1 pod]# kubectl describe pod nginx-deployment-8d545c96d-hp5bx 37Name: nginx-deployment-8d545c96d-hp5bx 38Namespace: default 39Priority: 0 40Node: k8s-3/192.168.168.147 41Start Time: Wed, 17 Sep 2025 15:19:10 +0800 42Labels: app=nginx 43 pod-template-hash=8d545c96d 44Annotations: cni.projectcalico.org/containerID: 00fd62401a9cd47dbc71253c77f1c996876780511ab33a7dc03e990c01bc1447 45 cni.projectcalico.org/podIP: 10.224.13.77/32 46 cni.projectcalico.org/podIPs: 10.224.13.77/32 47Status: Running 48IP: 10.224.13.77 49IPs: 50 IP: 10.224.13.77 51Controlled By: ReplicaSet/nginx-deployment-8d545c96d 52Containers: 53 nginx: 54 Container ID: docker://7a92106df639169d7c24e7cac16067b21d8fc77460254a3ad4898fc1b5c313d2 55 Image: nginx:latest 56 Image ID: docker-pullable://nginx@sha256:d5f28ef21aabddd098f3dbc21fe5b7a7d7a184720bc07da0b6c9b9820e97f25e 57 Port: 80/TCP 58 Host Port: 0/TCP 59 State: Running 60 Started: Wed, 17 Sep 2025 15:19:26 +0800 61 Ready: True 62 Restart Count: 0 63 Environment: <none> 64 Mounts: 65 /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-6lbfs (ro) 66Conditions: 67 Type Status 68 Initialized True 69 Ready True 70 ContainersReady True 71 PodScheduled True 72Volumes: 73 kube-api-access-6lbfs: 74 Type: Projected (a volume that contains injected data from multiple sources) 75 TokenExpirationSeconds: 3607 76 ConfigMapName: kube-root-ca.crt 77 ConfigMapOptional: <nil> 78 DownwardAPI: true 79QoS Class: BestEffort 80Node-Selectors: <none> 81Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s 82 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s 83Events: 84 Type Reason Age From Message 85 ---- ------ ---- ---- ------- 86 Normal Scheduled 4m31s default-scheduler Successfully assigned default/nginx-deployment-8d545c96d-hp5bx to k8s-3 87 Normal Pulling 4m29s kubelet Pulling image "nginx:latest" 88 Normal Pulled 4m16s kubelet Successfully pulled image "nginx:latest" in 7.307172632s (13.013712244s including waiting) 89 Normal Created 4m16s kubelet Created container nginx 90 Normal Started 4m15s kubelet Started container nginx 91
进入容器内部
[root@k8s-1 pod]#
kubectl exec -itnginx-deployment-8d545c96d-hp5bx – bash
root@nginx-deployment-8d545c96d-hp5bx:/#
kubectl exec:在运行的 Pod 中执行命令-it:两个参数的组合,-i 保持标准输入打开,-t 分配一个伪终端,这两个参数一起使用可以创建交互式会话- nginx-deployment-8d545c96d-hp5bx:目标 Pod 的名称
--:用于分隔 kubectl 命令和要在 Pod 内执行的命令bash:要在 Pod 内部执行的命令,即启动 bash 终端
三、pod的启动流程

- 管理员使用kubectl(命令行或在yaml文件)给api server发起请求,执行相关操作
- api server接受请求,将数据存入到ETCD数据库
- 通过watch机制,api server通知Controller Manager控制器管理器,去创建相关的rs副本控制器,副本控制器根据yaml文件里的内容去创建多少个副本的pod,pod使用什么镜像等信息,然后会返回给api server,再写到ETCD数据库
- 通过watch机制,通知Scheduler调度器生成相关的调度信息,根据过滤、评分选择好最优的节点服务器去启动pod,再把这些调度信息返回给api server ,写到ETCD数据库
- 通过watch机制,api server会通知被选中执行启动pod的节点服务器上的kubelet去启动pod,kubelet就会调用容器运行时接口(CRI),拉取镜像(如果需要),创建并启动容器
- kube-proxy配置pod的网络信息,返回告诉api server,写到ETCD数据库里
- kubelet启动pod完成后,再返回信息给api server,api server写到ETCD数据库里
四、pod的终止过程
- 用户向api server发送删除pod对象的命令
- api servcer中的pod对象信息会随着时间的推移而更新,在宽限期内(默认30s),pod被视为dead
- 将pod标记为terminating状态
- kubelet在监控到pod对象转为terminating状态的同时启动pod关闭过程
- 端点控制器监控到pod对象的关闭行为时将其从所有匹配到此端点的service资源的端点列表中移除
- 如果当前pod对象定义了preStop钩子处理器,则在其标记为terminating后即会以同步的方式启动执行
- pod对象中的容器进程收到停止信号
- 宽限期结束后,若pod中还存在仍在运行的进程,那么pod对象会收到立即终止的信号
- kubelet请求api server将此pod资源的宽限期设置为0从而完成删除操作,此时pod对于用户已不可见
钩子函数
钩子函数能够感知自身生命周期中的事件,并在容器的特定阶段执行运行用户指定的程序代码
kubernetes在主容器的启动之后和停止之前提供了两个钩子函数:
- post start:容器创建之后执行,如果失败了会重启容器
- pre stop :容器终止之前执行,执行完成之后容器将成功终止,在其完成之前会阻塞删除容器的操作
钩子处理器支持使用下面三种方式定义动作:
- Exec命令:在容器内执行一次命令
- TCPSocket:在当前容器尝试访问指定的socke
- HTTPGet:在当前容器中向某url发起http请求
《k8s-pod的启动》 是转载文章,点击查看原文。
