|NO.Z.00141|——————————|CloudNative|——|KuberNetes&资源调度.V11|——|statefulset.v03|pod启动流程|
一、StatefulSet是如何为我们创建各自标识的容器的。
### --- StatefulSet类型pod启动顺序
~~~ pod是按照顺序去启动的
~~~ 删除的时候和创建的时候顺序是相反的。
[root@k8s-master01 ~]# kubectl get po //它是按顺序启动之后才会启动下一个,若是在启动web-2的时候,web-1挂掉了,那么他就不会在执行往下操作,而是在等web-1启动之后,才会去启动web-2
NAME READY STATUS RESTARTS AGE
busybox 1/1 Running 0 12m
web-0 1/1 Running 0 21m
web-1 1/1 Running 0 21m
web-2 1/1 Running 0 14m
### --- 删除pod流程
[root@k8s-master01 ~]# kubectl get po
NAME READY STATUS RESTARTS AGE
busybox 1/1 Running 0 16m
web-0 1/1 Running 0 25m
web-1 1/1 Running 0 25m
web-2 1/1 Running 0 18m
二、缩容资源,查看pod删除顺序
### --- 缩容pod的版本至2个副本
[root@k8s-master01 ~]# kubectl scale --replicas=2 sts web
statefulset.apps/web scaled
### --- web-2显示Terminating状态
~~~ 成为Terminating状态
[root@k8s-master01 ~]# kubectl get po
NAME READY STATUS RESTARTS AGE
busybox 1/1 Running 0 17m
web-0 1/1 Running 0 25m
web-1 1/1 Running 0 25m
web-2 0/1 Terminating 0 18m
### --- 查看pod的状态
[root@k8s-master01 ~]# kubectl get po // 已经被删除掉了
NAME READY STATUS RESTARTS AGE
busybox 1/1 Running 0 17m
web-0 1/1 Running 0 26m
web-1 1/1 Running 0 26m
三、扩展pod的副本数为5个,且把web-1和web-0删掉查看它的执行状态
### --- 查看每个pod的标签
[root@k8s-master01 ~]# kubectl get po --show-labels
NAME READY STATUS RESTARTS AGE LABELS
busybox 1/1 Running 0 18m <none>
web-0 1/1 Running 0 27m app=nginx,controller-revision-hash=web-6949d64dc8,statefulset.kubernetes.io/pod-name=web-0
web-1 1/1 Running 0 27m app=nginx,controller-revision-hash=web-6949d64dc8,statefulset.kubernetes.io/pod-name=web-1
### --- 使用这个标签去过滤一下查看它创建的变化的状态
[root@k8s-master01 ~]# kubectl get po -l app=nginx -w
NAME READY STATUS RESTARTS AGE
web-0 1/1 Running 0 28m
web-1 1/1 Running 0 28m
### --- 扩展pod的副本数为5个,且把web-1和web-0删掉查看它的状态
[root@k8s-master01 ~]# kubectl scale --replicas=5 sts web
statefulset.apps/web scaled
[root@k8s-master01 ~]# kubectl delete po web-0 // 删除web-0
pod "web-0" deleted
### --- 查看创建5个副本它的创建流程,创建web-3的时候删除掉web-0看他后续执行流程。
[root@k8s-master01 ~]# kubectl get po -l app=nginx -w
NAME READY STATUS RESTARTS AGE
web-0 1/1 Running 0 17m
web-1 1/1 Running 0 52m
web-2 0/1 Pending 0 0s
web-2 0/1 ContainerCreating 0 0s // 创建web-2
web-0 1/1 Terminating 0 17m // 在创建web-2的时候删除掉web-0
web-2 1/1 Running 0 4s // 创建完web-2之后没有再继续往下执行去创建web-3
web-0 0/1 Terminating 0 17m // 而是回过头来去创建web-0
web-0 0/1 ContainerCreating 0 0s
web-0 1/1 Running 0 3s // web-0启动完成之后再去启动web-3;按顺序往下执行。
web-3 0/1 Pending 0 0s
web-3 0/1 ContainerCreating 0 1s
web-3 1/1 Running 0 4s
web-4 0/1 Pending 0 0s
web-4 0/1 ContainerCreating 0 1s
web-4 1/1 Running 0 4s
四、缩减pod的副本数为2个,且查看它的执行流程
### --- 缩减pod的副本数为2个,且查看它的执行状态
~~~ 在缩减pod副本的时候,把web-0给它删除掉,查看它的执行状态。
[root@k8s-master01 ~]# kubectl scale --replicas=2 sts web
statefulset.apps/web scaled
[root@k8s-master01 ~]# kubectl delete po web-0 // 在删除web-4的时候我们删除掉了web-0,查看它的执行效果
pod "web-0" deleted
### --- 查看只保留了2个副本
[root@k8s-master01 ~]# kubectl get po
NAME READY STATUS RESTARTS AGE
web-0 1/1 Running 0 63s
web-1 1/1 Running 0 76m
### --- 查看它的执行过程
[root@k8s-master01 ~]# kubectl get po -l app=nginx -w
NAME READY STATUS RESTARTS AGE
web-0 1/1 Running 0 18m
web-1 1/1 Running 0 71m
web-2 1/1 Running 0 18m
web-3 1/1 Running 0 18m
web-4 1/1 Running 0 18m // 以上为所在pod的副本数量
web-4 1/1 Terminating 0 20m // 执行删除最后一个副本web-4,和创建的时候刚好相反,从后向前删除
web-0 1/1 Terminating 0 20m // 在执行web-4删除的时候,删除了web-0
web-0 0/1 Pending 0 0s // 它不会继续向下执行,而是删除web-0之后,把web-0重新启动之后再次执行向下删除
web-0 0/1 Pending 0 0s
web-0 0/1 ContainerCreating 0 0s
web-0 1/1 Running 0 6s // web-0重新启动
web-3 1/1 Terminating 0 22m // 向上执行删除web-3
web-3 0/1 Terminating 0 22m
web-2 0/1 Terminating 0 23m // 向上执行删除web-2
web-2 0/1 Terminating 0 23m
### --- 查看容器的名称
[root@k8s-master01 ~]# kubectl exec -ti web-0 -- sh
# hostname
web-0 // 我们使用StatefulSet部署的pod的名称是固定的。
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了