Kubernetes学习路上的那些事儿,很有必要分享出来

b7561456c885378f519aafde73d94ea7.png
62604a27b3d2d9fc608bb1640489a0d6.png

什么是ReplicationController

仍然还是看官方解释,来自“一手”的资料。ReplicationController简称RC。

0c2ea2e8158a79f15a548d241f60f4e1.png

实际工作中,很少单独操作Pod的,之所以k8s能够“自愈”,就是通过rc(ReplicationController)、rs(ReplicaSet)、Deployment等这些组件,再加上k8s核心controller工作机制来实现的。

个人理解,以上这些组件,就是通过Label标签等机制,对Pod实现“水平维度”的控制,相当于“行业管理者”,相对于“部门组织管理者”而言。比如说,研发部这是一个实体组织,所有码农都得接受研发部长的管理,但产品部会分不同的产品线,每个产品线经理又从行业业务维度,对开发该产品的研发小组有行业业务管理职责。

实操过程

实验准备:

Kubernetes集群环境一套,可以选择在本地虚拟机(VirtualBox)上搭建,也可以选择在公有云上利用云主机来搭建,比如移动云、阿里云、腾讯云、华为云等。

当然,在生产环境中,肯定建议直接使用服务器进行搭建。

本实验是基于移动云的云主机搭建的集群环境,其中一台Node关机了,所以就剩下一台Master节点和一台Node节点可用。

b3e1b3f2fe559bef5ac5218dc1d00619.png

步骤一:编写rc的yaml文件。如果看过上一个帖子(Pod的yaml文件),应该对yaml文件不是那么陌生了吧。新建rc.yaml文件,直接上代码:

apiVersion: v1                kind: ReplicationControllermetadata:  name: rc-testspec:  replicas: 2  template:    metadata:      name: rctest      labels:        app: rctest    spec:      containers:      - name: rctest        image: nginx        ports:        - containerPort: 80

老规矩,附上代码的详细解释,截图如下:

4e3d19ac000154ec3c6d7cf925933e62.png

步骤二:创建rc,查看pod副本数。

kubectl apply -f rc-test.yaml   //创建rckubectl get pod              //查看基于rc模板创建的pod运行状态

看到pod全部Running,说明创建成功。只要是镜像拉取成功,几乎是几秒就可以创建成功,这个启动速度肯定要比虚拟机快的多。

8d96bb9b677b4f85127a2e77bf236fc1.png

步骤三:操作pod,验证rc的副本控制效果。可以直接删除pod,但由于rc设置了目标副本数——2个,所以使用kubectl delete命令删除pod后,又会马上创建一个新的pod,以便维持2个副本。

5753309418902599870fb35c688ca0c8.png

查看详细信息,显示名称、命名空间、标签、选择器、副本数(当前/期望)等信息。

83b266548876a155acb87eb2e6807644.png

步骤四:便捷的进行扩容和缩容。

kubectl scale replicationcontroller rc-test --replicas=1    //缩容到1个副本kubectl scale replicationcontroller rc-test --replicas=5    //扩容到5个副本
534cb2f9947a4b033b11625c7cee8a04.png

扩展内容

ReplicationController(rc)在新的版本中,已经被ReplicaSet(rs)替换了,相对于rc,rs有更好的标签控制策略。对于pod副本的控制作用,rs和rc的效果是一样的。

bb3324938b06498e81229c1a8799ce87.png

ReplicationController和ReplicaSet最大的区别也就是标签控制这块儿,如下图所示:

270fba06e201ea428a1a8884d00accee.png
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐