|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

 

 

posted on   yanqi_vip  阅读(30)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示