k8s入门-Replication Controller控制器

一、Replication Controller控制器

在实际的生产环境中,我们其实很少单独创建Pod,而是通过控制器来进行Pod的管理,Kubernetes提供了很多的控制器,一个 Controllers 可以创建和管理很多个 Pod, 也提供复制、初始化,以及提供集群范围的自我恢复的功能。比如说: 如果一个节点宕机,Controller 将调度一个在其他节点上完全相同的 pod 来自动取代当前的 pod。

ReplicationController 确保在任何时间上运行 pod 的 “replicas” 数为定义的数量。换句话说,一个 ReplicationController 确保一个 pod 或同类的 pod 的集合总是运行和可用的。 如果 pod 超过指定的数量,它会杀死多出的。 如果少于指定数量,ReplicationController 将启动更多。与手动创建的 pod 不同,如果有 pod 失败、被删除或被终止,ReplicationController 会自动维护并替代这些 pod 。 例如,类似于内核升级这样的中断性维护,您的 pod 会在另一个节点上重新创建。 因此,即使您的应用程序只需要运行一个 pod ,我们也建议您使用 ReplicationController 。 您可以将 ReplicationController 视为与进程监视类似的东西, ReplicationController 会监视跨多个节点的多个 pod ,而不是单个节点上的单个进程。 ReplicationController 通常会缩写为 “rc” 或 “rcs” ,并作为 kubectl 命令参数中的简写。 一个简单的例子是创建1个 ReplicationController 对象,以便可靠地运行一个永不停止的 pod 实例。更复杂的用例是运行复制的几个相同的副本服务,如 Web 服务器。

在开始之前,先把之前创建的nginx-pod删除

[root@k8s-01 ~]# kubectl delete nginx-pod

二、RC常用管理

编写RC的YAML文件

[root@k8s-01 ~]# cat nginx-rc.yaml 
apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx-rc
spec:
  replicas: 3
  selector:
    app: nginx
  template:
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

这是一个ReplicationController类型的,可以看到replicas的值为3,表示启动3pod。

创建RC

[root@k8s-01 ~]# kubectl create -f nginx-rc.yaml
replicationcontroller/nginx-rc created

查看RC

[root@k8s-01 ~]# kubectl get rc
NAME       DESIRED   CURRENT   READY   AGE
nginx-rc   3         3         3       69s

查看Pod

[root@k8s-01 ~]# kubectl get pod
NAME                        READY   STATUS    RESTARTS   AGE
nginx-rc-c44xn              1/1     Running   0          88s
nginx-rc-kj7sm              1/1     Running   0          88s
nginx-rc-rfkvs              1/1     Running   0          88s

可以看到,3个pod都已经启动了。

这个时候,来删除其中的一个pod,看看会有什么结果:

[root@k8s-01 ~]# kubectl get pod
NAME                        READY   STATUS    RESTARTS   AGE
nginx-rc-c44xn              1/1     Running   0          13m
nginx-rc-kj7sm              1/1     Running   0          13m
nginx-rc-rfkvs              1/1     Running   0          13m

[root@k8s-01 ~]# kubectl delete pod nginx-rc-kj7sm
pod "nginx-rc-kj7sm" deleted

[root@k8s-01 ~]# kubectl get pod
NAME                        READY   STATUS    RESTARTS   AGE
nginx-rc-5tfs5              1/1     Running   0          14s
nginx-rc-c44xn              1/1     Running   0          14m
nginx-rc-rfkvs              1/1     Running   0          14m

删除了一个Pod之后,很快又生成了一个新的Pod,pod的数目始终维持在3个。

在扩容和缩容的时候,需要用到scale参数,把刚才启动的3个nginx-rc的pod缩容成2个:

[root@k8s-01 ~]# kubectl scale rc nginx-rc --replicas=2
replicationcontroller/nginx-rc scaled

[root@k8s-01 ~]# kubectl get pod
NAME                        READY   STATUS    RESTARTS   AGE
nginx-rc-c44xn              1/1     Running   0          34m
nginx-rc-rfkvs              1/1     Running   0          34m

[root@k8s-01 ~]# kubectl get rc
NAME       DESIRED   CURRENT   READY   AGE
nginx-rc   2         2         2       35m

可以看到pod变成两个了。

扩容成4个pod:

[root@k8s-01 ~]# kubectl scale rc nginx-rc --replicas=4
replicationcontroller/nginx-rc scaled

[root@k8s-01 ~]# kubectl get pod
NAME                        READY   STATUS    RESTARTS   AGE
nginx-rc-c44xn              1/1     Running   0          37m
nginx-rc-n24j8              1/1     Running   0          14s
nginx-rc-rfkvs              1/1     Running   0          37m
nginx-rc-thzh9              1/1     Running   0          14s

[root@k8s-01 ~]# kubectl get rc
NAME       DESIRED   CURRENT   READY   AGE
nginx-rc   4         4         4       37m

参考文章:
http://k8s.unixhot.com/kubernetes/rc.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值