gpt4 book ai didi

Kubernetes(k8s)控制器(三):ReplicationController

转载 作者:我是一只小鸟 更新时间:2023-02-09 06:33:13 26 4
gpt4 key购买 nike

目录
  • 一.系统环境
  • 二.前言
  • 三.ReplicationController概览
  • 四.ReplicationController工作机制
  • 五.创建ReplicationController
  • 六.扩展replicationcontroller副本数

一.系统环境

服务器版本 docker软件版本 Kubernetes(k8s)集群版本 CPU架构
CentOS Linux release 7.4.1708 (Core) Docker version 20.10.12 v1.21.9 x86_64

Kubernetes集群架构:k8scloude1作为master节点,k8scloude2,k8scloude3作为worker节点 。

服务器 操作系统版本 CPU架构 进程 功能描述
k8scloude1/192.168.110.130 CentOS Linux release 7.4.1708 (Core) x86_64 docker,kube-apiserver,etcd,kube-scheduler,kube-controller-manager,kubelet,kube-proxy,coredns,calico k8s master节点
k8scloude2/192.168.110.129 CentOS Linux release 7.4.1708 (Core) x86_64 docker,kubelet,kube-proxy,calico k8s worker节点
k8scloude3/192.168.110.128 CentOS Linux release 7.4.1708 (Core) x86_64 docker,kubelet,kube-proxy,calico k8s worker节点

二.前言

使用ReplicationController的 前提 是已经有一套可以正常运行的Kubernetes集群,关于Kubernetes(k8s)集群的安装部署,可以查看博客《Centos7 安装部署Kubernetes(k8s)集群》 https://www.cnblogs.com/renshengdezheli/p/16686769.html.

三.ReplicationController概览

ReplicationController 确保在任何时候都有特定数量的 Pod 副本处于运行状态 。 换句话说,ReplicationController 确保一个 Pod 或一组同类的 Pod 总是可用的.

注意 :对于ReplicationController,现在更推荐使用配置 ReplicaSet 的 Deployment 来建立副本管理机制。关于deployment控制器的详细内容,请查看博客《 Kubernetes(k8s)控制器(一):deployment 》.

四.ReplicationController工作机制

当 Pod 数量过多时,ReplicationController 会终止多余的 Pod。当 Pod 数量太少时,ReplicationController 将会启动新的 Pod。 与手动创建的 Pod 不同,由 ReplicationController 创建的 Pod 在失败、被删除或被终止时会被自动替换 。 例如,在中断性维护(如内核升级)之后,你的 Pod 会在节点上重新创建。 因此,即使你的应用程序只需要一个 Pod,你也应该使用 ReplicationController 创建 Pod。 ReplicationController 类似于进程管理器,但是 ReplicationController 不是监控单个节点上的单个进程,而是监控跨多个节点的多个 Pod.

ReplicationController 通常缩写为 "rc",并作为 kubectl 命令的快捷方式.

一个 简单的示例 是创建一个 ReplicationController 对象来可靠地无限期地运行 Pod 的一个实例。 更 复杂的用例 是运行一个多副本服务(如 web 服务器)的若干相同副本.

五.创建ReplicationController

配置ReplicationController,replicas: 3 指定3个副本.

                        
                          [root@k8scloude1 daemonset]# vim ReplicationController.yaml

[root@k8scloude1 daemonset]# cat ReplicationController.yaml 
apiVersion: v1 
kind: ReplicationController 
metadata: 
  name: rc 
spec: 
  replicas: 3 
  selector: 
    app: nginx 
  template: 
    metadata: 
      name: nginx 
      labels: 
        app: nginx 
    spec: 
      terminationGracePeriodSeconds: 0
      containers: 
      - name: nginx 
        image: nginx 
        imagePullPolicy: IfNotPresent
        ports: 
        - containerPort: 80

                        
                      

创建replicationcontroller 。

                        
                          [root@k8scloude1 daemonset]# kubectl apply -f ReplicationController.yaml 
replicationcontroller/rc created

[root@k8scloude1 daemonset]# kubectl get rc
NAME   DESIRED   CURRENT   READY   AGE
rc     3         3         3       11s

                        
                      

查看pod,发现有3个pod 。

                        
                          [root@k8scloude1 daemonset]# kubectl get pod -o wide
NAME       READY   STATUS    RESTARTS   AGE   IP               NODE         NOMINATED NODE   READINESS GATES
rc-ddtpl   1/1     Running   0          28s   10.244.251.225   k8scloude3   <none>           <none>
rc-dlzzj   1/1     Running   0          28s   10.244.112.170   k8scloude2   <none>           <none>
rc-mw8dw   1/1     Running   0          28s   10.244.112.171   k8scloude2   <none>           <none>

                        
                      

六.扩展replicationcontroller副本数

通过kubectl scale rc 扩展replicationcontroller副本数,--replicas=5 设置pod副本数为5 。

                        
                          [root@k8scloude1 daemonset]# kubectl scale rc rc --replicas=5
replicationcontroller/rc scaled

                        
                      

现在有5个pod了 。

                        
                          [root@k8scloude1 daemonset]# kubectl get pod -o wide
NAME       READY   STATUS    RESTARTS   AGE   IP               NODE         NOMINATED NODE   READINESS GATES
rc-ddtpl   1/1     Running   0          68s   10.244.251.225   k8scloude3   <none>           <none>
rc-dlzzj   1/1     Running   0          68s   10.244.112.170   k8scloude2   <none>           <none>
rc-gc8n5   1/1     Running   0          3s    10.244.251.226   k8scloude3   <none>           <none>
rc-mw8dw   1/1     Running   0          68s   10.244.112.171   k8scloude2   <none>           <none>
rc-s2l7z   1/1     Running   0          3s    10.244.112.172   k8scloude2   <none>           <none>

[root@k8scloude1 daemonset]# kubectl get rc
NAME   DESIRED   CURRENT   READY   AGE
rc     5         5         5       72s

                        
                      

设置pod副本数为1 。

                        
                          [root@k8scloude1 daemonset]# kubectl scale rc rc --replicas=1
replicationcontroller/rc scaled

[root@k8scloude1 daemonset]# kubectl get rc
NAME   DESIRED   CURRENT   READY   AGE
rc     1         1         1       103s

                        
                      

删除replicationcontroller 。

                        
                          [root@k8scloude1 daemonset]# kubectl delete rc rc 
replicationcontroller "rc" deleted

[root@k8scloude1 daemonset]# kubectl get rc
No resources found in daemonset namespace.

                        
                      

最后此篇关于Kubernetes(k8s)控制器(三):ReplicationController的文章就讲到这里了,如果你想了解更多关于Kubernetes(k8s)控制器(三):ReplicationController的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com