Controller

Kubernetes通常不会直接创建Pod,而是通过Controller来管理Pod的生命周期。Controller中定义了Pod的部署特性,比如有几个副本、在什么样 的Node上运行等。为了满足不同业务场景,Kubernetes开发了 Deployment、ReplicaSet、DaemonSet、StatefuleSet、Job等多种 Controller。

**

Deployment(最常用)

  1. 用户通过kubectl创建Deployment。
  2. Deployment创建ReplicaSet。
  3. ReplicaSet创建Pod。

image.png
对象的命名方式是“子对象的名字=父对象名字+随机字符串或数字”。

1. 创建deployment

  1. kubectl run nginx-deployment --image=nginx:1.7.9 --replicas=2

上面的命令将部署包含两个副本的Deployment
nginx-deployment,容器的image为nginx:1.7.9

2. 查看状态

  1. kubectl -n namespaceName get deployment

查看nginx-deployment 的状态,输出显示两个副本正常运行。

3. 查看详细信息

  1. kubectl -n namespaceName describe deployment

ReplicaSet

实现了Pod的多副本管理。
使用Deployment时会自动创建ReplicaSet,也就是说Deployment是通过ReplicaSet来管理 Pod的多个副本的,我们通常不需要直接使用ReplicaSet。

DaemonSet

用于每个Node最多只运行一个Pod副本的场景。 正如其名称所揭示的,DaemonSet通常用于运行daemon。

StatefuleSet

能够保证Pod的每个副本在整个生命周期中名称是不变的,而其他Controller不提供这个功能。当某个Pod发生故障需要删除并重新启动时,Pod的名称会发生变化,同时StatefuleSet会保证副本按照固定的顺序启动、更新或者删除。

Job

用于运行结束就删除的应用,而其他Controller中的Pod,通常是长期持续运行。

修改副本数量

kubectl scale

扩容或缩容 Deployment、ReplicaSet、Replication Controller或 Job 中Pod数量。
scale也可以指定多个前提条件,如:当前副本数量或 —resource-version ,进行伸缩比例设置前,系统会先验证前提条件是否成立。

  1. kubectl -n clink2-test6 scale deploy clink2-manager --replicas=0