Kubernetes手记(7)- 控制器配置清单

这是我参与更文挑战的第10天,活动详情查看: 更文挑战

七 控制器配置清单

7.1 ReplicaSet 控制器

详见:kubectl explain replicaset

  • 清单规范
apiVersion	<string>    # api 版本号,一般为 apps/v1
kind	    <string>    # 资源类别,标记创建什么类型的资源
metadata    <Object>    # POD 元数据
spec	    <Object>    # 元数据
复制代码

7.1.1 replicaset.spec 规范

  1. replicas 副本数量,指定一个数字

  2. selector 标签选择器,可以使用 matchLabels、matchExpressions 两种类型的选择器来选中目标 POD

matchLabels:直接给定键值
matchExpressions:基于给定的表达式来定义使用标签选择器:{key:"KEY",operator:"OPERATOR",value:[VAL1,VAL2,...]}
    使用 key 与 value 进行 operator 运算,复合条件的才被选择
    操作符:
    	In、NotIn:其 value 列表必须有值
    	Exists、NotExists:其 value 必须为空
复制代码
  1. template 模板,这里面定义的就是一个 POD 对象,这个对象只包含了 pod.metadata 和 pod.spec 两部分。

7.1.2 清单示例

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: myrs
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      app: myapp
      release: canary
  template:
    metadata:
      name: myapp-pod     # 这个其实没用,因为创建的 POD 以 rs 的名字开头
      labels:
        app: myapp        # 标签一定要符合 replicaset 标签选择器的规则,否则将陷入创建 pod 的死循环,直到资源耗尽
        release: canary
    spec:
      containers:
        - name: myapp-containers
          image: ikubernetes/myapp:v1
          ports:
            - name: http
              containerPort: 80
复制代码

7.2 Deployment控制器

Deployment 通过控制 ReplicaSet 来实现功能,除了支持 ReplicaSet 的扩缩容意外,还支持滚动更新和回滚等,还提供了声明式的配置,这个是我们日常使用最多的控制器。它是用来管理无状态的应用。

Deployment 在滚动更新时候,通过控制多个 ReplicaSet 来实现,ReplicaSet 又控制多个 POD,多个 ReplicaSet 相当于多个应用的版本。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享