Kubernetes 系列 Replication Controller

  RC是k8s系统中核心概念之一,它定义了一个期望的场景,即声明某种Pod的副本数量在任意时刻都符合某个预期值。所以RC定义包括如下 几个部分: (1) Pod期待的副本数(replicas)  (2) 用于筛选目标Pod的Label Selector。(3)当Pod的副本数量小于预期数量时,用于创建新Pod的Pod模板(template)。

  下面是一个完整的rc定义的例子,即确保拥有name=userpermissionapi标签的这个Pod,在整个k8s集群中始终只有一个副本。

apiVersion: v1
kind: ReplicationController
metadata:
  name: userpermissionapi
  labels:
    name: userpermissionapi
spec:
  replicas: 1
  selector:
    name: userpermissionapi
  template:
    metadata:
      labels: 
        name: userpermissionapi
    spec:
      containers:
      - name: userpermissionapi
        image: swr.cn-east-3.myhuaweicloud.com/hushaoren/userpermissionapi:v2.1
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 5000
      tolerations:
      - key: "node-role.kubernetes.io/master"
        operator: "Equal"
        value: ""
        effect: "NoSchedule"

  当我们定义一个rc,并提交到k8s集群中以后,master节点上的controller manager组件就得到通知,定期巡检系统中当前存活的目标 Pod,并确保目标pod实例数量刚好等于此pc的期望值。

    多了,rc会停掉一些pod,少了会创建一些pod。所以说rc 实现了用户应用集群的高可用性。此外还可以修改pc的副本数量,实现Pod的动态缩放功能. 如执行:

kubectl scale rc redis-slave  --replicas=3

  注意:删除rc并不会影响通过该rc已创建好的pod,为了删除所有pod,可以设置 replicas的值为0,然后更新该rc。

   平滑升级: 比如我们的应用升级时,通常会通过build一个新的docker镜像,修复rc配置文件拉取镜像的版本。假如一个应用有10个pod旧版本,最佳方式是每次停一个旧版本pod,同时创建一个新版本的pod(自动创建),整个过程中,此消彼长,而运行中的pod数量始终是10个,这也叫滚动升级。

  由于Replication Controller与k8s代码上的模块Replication Controller同名,所以在k8s v1.2时,它就升级成了另一个新的概念-------replica set。官方叫下一代rc。它与rc当前存在的唯一区别是: replica sets支持基于集合的label selector,而rc只支持基于等式的label selecor。

  kubectl命令行工具适用于rc的绝大部分命令都同样适用于replica set。此外当前我们很少单独使用replica set, 它主要被deployment 这个更高层次的资源对象所使用。从而形成一整套pod创建,删除,更新的编排机制。 当使用deployment 时,无须关心它是如何创建和维护replica set的,这一切都是自动发生的。

  replica set和deployment 这两个重要资源对象替代了之前的Replication Controller的使用。

  总结:

     1. 大多数情况下,我们通过定义一个rc实现pod的创建过程及副本数量的自动控制。

          2. rc里包括完整的pod定义模板(ymal中节点可以全部配置)

          3. rc通过label selector机制实现对pod副本的自动控制

     4. 通过改变rc里的pod副本数量,可以实现pod的扩容和缩容功能。

     5. 能过改变rc里pod模板的镜像版本,可以实现pod的滚动升级功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值