Kubernetes基础:Deployment中ReplicaSet

在这里插入图片描述
Deployment是通过ReplicaSet来进行Pod的管理的,这篇文章通过一个简单的示例,对此进行说明。

Deployment的YAML示例

有如下busybox的Deployment的YAML配置文件:

[root@host131 Deployment]# cat v1.yaml 
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: busybox-deployment-v1
spec:
  replicas: 3
  selector:
    matchLabels:
      app: busybox-v1
  template:
    metadata:
      labels:
        app: busybox-v1
    spec:
      containers:
      - name: busybox-host
        image: busybox:1.31.1
        command: ["sleep"]
        args: ["1000"]
...
[root@host131 Deployment]# 

生成Deployment和Pod

[root@host131 Deployment]# kubectl create -f v1.yaml 
deployment.apps/busybox-deployment-v1 created
[root@host131 Deployment]# 

确认Deployment和Pod信息

[root@host131 Deployment]# kubectl get deployment -o wide
NAME                    READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS     IMAGES           SELECTOR
busybox-deployment-v1   3/3     3            3           9s    busybox-host   busybox:1.31.1   app=busybox-v1
[root@host131 Deployment]# 
[root@host131 Deployment]# kubectl get pods -o wide
NAME                                     READY   STATUS    RESTARTS   AGE   IP             NODE              NOMINATED NODE   READINESS GATES
busybox-deployment-v1-7bfdbd9656-9pg9s   1/1     Running   0          15s   10.254.152.6   192.168.163.131   <none>           <none>
busybox-deployment-v1-7bfdbd9656-l4knv   1/1     Running   0          15s   10.254.152.7   192.168.163.131   <none>           <none>
busybox-deployment-v1-7bfdbd9656-m8g9c   1/1     Running   0          15s   10.254.152.5   192.168.163.131   <none>           <none>
[root@host131 Deployment]# 

日志信息分析

确认Deployment

通过对Deployment和Pod等日志进行分析,确认在Deployment中生成Pod的顺序:

执行命令:kubectl describe deployment busybox-deployment-v1

主要日志信息:

Events:
  Type    Reason             Age   From                   Message
  ----    ------             ----  ----                   -------
  Normal  ScalingReplicaSet  34s   deployment-controller  Scaled up replica set busybox-deployment-v1-7bfdbd9656 to 3

可以看到出现了一个Replica Set,通过deployment-controller控制器创建,然后使用如下命令确认出了隐藏在后面工作的ReplicaSet, 此ReplicaSet的NAME与上述日志记载的名称相同

[root@host131 Deployment]# kubectl get rs -o wide
NAME                               DESIRED   CURRENT   READY   AGE   CONTAINERS     IMAGES           SELECTOR
busybox-deployment-v1-7bfdbd9656   3         3         3       54s   busybox-host   busybox:1.31.1   app=busybox-v1,pod-template-hash=7bfdbd9656
[root@host131 Deployment]# 

确认Replica Set

执行命令:kubectl describe rs busybox-deployment-v1-7bfdbd9656

主要日志信息:

Events:
  Type    Reason            Age   From                   Message
  ----    ------            ----  ----                   -------
  Normal  SuccessfulCreate  77s   replicaset-controller  Created pod: busybox-deployment-v1-7bfdbd9656-m8g9c
  Normal  SuccessfulCreate  77s   replicaset-controller  Created pod: busybox-deployment-v1-7bfdbd9656-9pg9s
  Normal  SuccessfulCreate  77s   replicaset-controller  Created pod: busybox-deployment-v1-7bfdbd9656-l4knv

可以清晰地看到3个Pod实例都是通过Replica Set生成的

确认Pod

执行命令:kubectl describe pod busybox-deployment-v1-7bfdbd9656-m8g9c

主要日志信息:

Events:
  Type    Reason     Age   From                      Message
  ----    ------     ----  ----                      -------
  Normal  Scheduled  94s   default-scheduler         Successfully assigned default/busybox-deployment-v1-7bfdbd9656-m8g9c to 192.168.163.131
  Normal  Pulled     92s   kubelet, 192.168.163.131  Container image "busybox:1.31.1" already present on machine
  Normal  Created    92s   kubelet, 192.168.163.131  Created container busybox-host
  Normal  Started    91s   kubelet, 192.168.163.131  Started container busybox-host

Pod的创建非常清晰:

  • 由调度器决定在192.168.163.131这台节点上进行Pod的生成
  • 拉取镜像(镜像事前已经存在的情况)
  • 创建镜像 busybox-host
  • 启动镜像 busybox-host

总结

从上述示例可以清晰地看到Deployment生成Pode的过程:Deployment -> Replica Set -> Pod生成。

发布了1084 篇原创文章 · 获赞 1299 · 访问量 402万+

猜你喜欢

转载自blog.csdn.net/liumiaocn/article/details/104213172