首页 > 其他分享 >Kubernetes(k8s)控制器(三):ReplicationController

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

时间:2023-02-09 04:11:06浏览次数:57  
标签:kubectl Kubernetes ReplicationController daemonset rc Pod k8s k8scloude1

目录

一.系统环境

服务器版本 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.

标签:kubectl,Kubernetes,ReplicationController,daemonset,rc,Pod,k8s,k8scloude1
From: https://www.cnblogs.com/renshengdezheli/p/17103952.html

相关文章

  • k8s pod问题记录
    k8spod常见问题处理最近由于实习中频繁涉及到k8spod的部署,也遇到了很多pod的问题,所以在此对个人部署k8spod时遇见的一些问题进行总结pod处于pending状态因为是利用......
  • Kubernetes中PV&PVC访问模式
    问题为什么PV的accessmode设置的访问模式是ReadWriteOnce,但是其他节点还是可以读写。为什么PV的accessmode设置的模式为ReadOnlyMany,其他节点还是可以读写。前言这是明......
  • API对象--Ingress(chrono《kubernetes入门实战课》笔记整理)
    【概念说明】Service的功能和运行机制,主要由kube-proxy控制的四层负载均衡,即根据IP、PORT来做负载均衡。而很多应用都是在7层做均衡更为合理,比如根据主机名、URI、请求......
  • k8s集群安装
    那之前呢已经给大家做过了一个最基础的这么一个安装部分,对吧?包括我们的一些准备操作,包括我们的软路由的安装,那接下来呢带大家去安装一下我们的整个k8s的集群。koolshare构......
  • 从零开始搭建k8s多节点服务
    文章目录前言一、安装系统centos7二、配置静态ip三.环境准备完毕、开始搭建k8s1.所有节点系统初始化2.设置主机名称(3台都要设置)3.所有节点安装Docker/kubeadm/kubelet......
  • 【K8S】搭建k8s 1.23.1 单master双node集群
    【K8S】搭建k8s1.23.1单master双node集群前言:从k8s1.24开始,把dockershim去除了,官方推荐使用containerd作为容器运行时,根据我的时间,配置CRI是个大坑,没有准确避坑的直接......
  • 8 k8s运行zookeeper和redis等实例
    一Kubernetes实战案例-自定义镜像结合PV/PVC运行Zookeeper集群1构建zookeeper镜像dockfile内容:FROMharbor.magedu.com/magedu/slim_java:8ENVZK_VERSION3.4.14......
  • jenkins 添加kubernetes-k8s
                   ......
  • k8s集群安装准备
    导言那这节课呢我们就亲自动手去构建一个我们的k8s集群。那所以这章内容我们分为两个部分,第一个前期准备,我们去准备一下我们的环境,去构建对吧?第二部分就是我们的集群安装,......
  • k8s部署canal-1.1.6版本实现MySQL数据库数据同步
    1、版本说明软件&镜像版本&镜像信息说明Kubernetesv1.23.7k8s服务器Kuboardv3.5.2.0k8s连接管理工具Canalv1.1.6数据同步......