k8s通过yaml创建pod_K8S系列学习,RC和RS,傻傻分不清楚
Kubernetes学习路上的那些事儿,很有必要分享出来什么是ReplicationController仍然还是看官方解释,来自“一手”的资料。ReplicationController简称RC。实际工作中,很少单独操作Pod的,之所以k8s能够“自愈”,就是通过rc(ReplicationController)、rs(ReplicaSet)、Deployment等这些组件,再加上k8s核心con
Kubernetes学习路上的那些事儿,很有必要分享出来
什么是ReplicationController
仍然还是看官方解释,来自“一手”的资料。ReplicationController简称RC。
实际工作中,很少单独操作Pod的,之所以k8s能够“自愈”,就是通过rc(ReplicationController)、rs(ReplicaSet)、Deployment等这些组件,再加上k8s核心controller工作机制来实现的。
个人理解,以上这些组件,就是通过Label标签等机制,对Pod实现“水平维度”的控制,相当于“行业管理者”,相对于“部门组织管理者”而言。比如说,研发部这是一个实体组织,所有码农都得接受研发部长的管理,但产品部会分不同的产品线,每个产品线经理又从行业业务维度,对开发该产品的研发小组有行业业务管理职责。
实操过程
实验准备:
Kubernetes集群环境一套,可以选择在本地虚拟机(VirtualBox)上搭建,也可以选择在公有云上利用云主机来搭建,比如移动云、阿里云、腾讯云、华为云等。
当然,在生产环境中,肯定建议直接使用服务器进行搭建。
本实验是基于移动云的云主机搭建的集群环境,其中一台Node关机了,所以就剩下一台Master节点和一台Node节点可用。
步骤一:编写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
老规矩,附上代码的详细解释,截图如下:
步骤二:创建rc,查看pod副本数。
kubectl apply -f rc-test.yaml //创建rckubectl get pod //查看基于rc模板创建的pod运行状态
看到pod全部Running,说明创建成功。只要是镜像拉取成功,几乎是几秒就可以创建成功,这个启动速度肯定要比虚拟机快的多。
步骤三:操作pod,验证rc的副本控制效果。可以直接删除pod,但由于rc设置了目标副本数——2个,所以使用kubectl delete命令删除pod后,又会马上创建一个新的pod,以便维持2个副本。
查看详细信息,显示名称、命名空间、标签、选择器、副本数(当前/期望)等信息。
步骤四:便捷的进行扩容和缩容。
kubectl scale replicationcontroller rc-test --replicas=1 //缩容到1个副本kubectl scale replicationcontroller rc-test --replicas=5 //扩容到5个副本
扩展内容
ReplicationController(rc)在新的版本中,已经被ReplicaSet(rs)替换了,相对于rc,rs有更好的标签控制策略。对于pod副本的控制作用,rs和rc的效果是一样的。
ReplicationController和ReplicaSet最大的区别也就是标签控制这块儿,如下图所示:
更多推荐
所有评论(0)