|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 2022-03-30 11:56  yanqi_vip  阅读(36)  评论(0)    收藏  举报

导航