Deployment 或 RC 的主要功能之一就是自动部署一个容器应用的多份副本,以及持续监控副本的数量,在集群内始终维持用户指定的副本数量。

下面是一个Deployment 配置的例子,使用这个配置文件可以创建一个ReplicaSet,这个ReplicaSet 会创建3个Nginx 应用的Pod:

# nginx-deployment-1.yaml
apiVersion: apps/v1
kind: Deployment
metadata: 
  name: nginx-deployment-1
spec: 
  selector: 
    matchLabels: 
      app: nginx
  replicas: 3
  template: 
    metadata: 
      labels: 
        app: nginx
    spec: 
      containers: 
      - name: nginx 
        image: nginx:1.7.9
        ports: 
        - containerPort: 80

运行kubectl create 命令创建这个Deployment:

[root@k8s-master ~]# kubectl create -f nginx-deployment-1.yaml
deployment.apps/nginx-deployment-1 created

查看Deployment 的状态:

[root@k8s-master ~]# kubectl get deployments
NAME                 READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment-1   3/3     3            3           60s

该状态说明 已创建好所有3个副本,并且所有副本都是最新的可用的。

通过运行kubectl get rs 和kubectl get pods 可以查看已创建的ReplicaSet (RS) 和 Pod 的信息。

[root@k8s-master ~]# kubectl get rs 
NAME                           DESIRED   CURRENT   READY   AGE
nginx-deployment-1-f7ccf9478   3         3         3       3m25s

[root@k8s-master ~]# kubectl get pods
NAME                                      READY   STATUS             RESTARTS        AGE
nginx-deployment-1-f7ccf9478-fz9l5        1/1     Running            0               4m
nginx-deployment-1-f7ccf9478-nxf7v        1/1     Running            0               4m
nginx-deployment-1-f7ccf9478-rrgc4        1/1     Running            0               4m

从调度策略上来说,这3个Nginx Pod 由系统全自动完成调度。它们各自最终运行在哪个节点上,完全由Master 的Scheduler 经过一系列算法计算退出,用户无法干预调度过程和结果。

Logo

开源、云原生的融合云平台

更多推荐