Kubernetes-ReplicationController(RC)

1 介绍

1.1 概念

  ReplicationController(副本控制器)是一种k8s资源,确保它的pod始终保持运行状态。它是用于复制和在异常情况下重新调度节点的k8s组件。

1.2 优点

1)RC可以确保一个pod(或多个pod副本)持续运行,在现有pod丢失时可以启动新的pod;
2)集群节点发生故障时,RC为其上面的pod(受RC控制的节点上的pod)创建替代副本;
3)轻松实现pod的水平伸缩。

2 RC工作原理

2.1 RC工作图

RC对pod数目处理的流程
  RC会持续监控正在运行的pod列表,并保证相应的“类型”的(标签选择器)pod数目与期望的相符。如果正在运行的pod数目小于期望值,则RC会根据pod模板创建新的副本;若正在运行的pod太多,RC将会删除多余的副本。

2.2 RC组成

RC组成部分

1)label selector(标签选择器),用于确定RC作用域中有哪些pod;(其更改后,RC会停止关注这些现有的pod)
2)replica count(副本个数),指定应运行的pod数目;(其更改后会影响到现有的pod)
3)pod template(pod模板),用于创建新的pod副本。(其更改后,只会影响新创建的pod)

3 RC使用

3.1 创建RC

写好yaml文件:

  • 版本号:apiVersion为v1
  • RC定义:kind配置为ReplicationController;
  • RC名字:metadata.name
  • pod实例数:spec.replicas
  • pod选择器:spec.selector中配置pod选择器,来决定RC的操作对象;
  • pod模板:spec.template
    RC的yaml模板

    by k8s in action

    创建RC命令
    $ kubectl create -f xxx.yaml

    RC对pod数量不足时(API Server允许客户端监听资源和资源列表的更改),产生响应:通过创建一个新的替代pod来响应pod的删除操作,

    3.2 查看RC

    查看RC命令
    $ kubectl get rc
    rc是replicationcontroller的简写;
    查看RC附加信息
    $ kubectl describe rc rc_name

    3.3 更改已托管的pod标签

    更改pod选择器
    $ kubectl label pod pod_name app=app_new_name --overwrite
    通过--overwrite覆盖原标签信息

    查看pod指定标签信息
    $ kubectl get pods -L app
    通过-L app选项在列表中显示app标签

    注意
    若更改了RC的标签选择器(而不是更改pod的标签),则会造成所有的原RC控制的pod脱离RC管理,RC会创建新的pod来匹配新的标签选择器。

    3.4 修改RC的pod模板

      更改RC的pod模板只会影响之后创建的pod,并且不会影响现有的pod。
    RC扩容
    方法1:
    $ kubectl scale rc rc_name --replicas=5
    方法2:
    $ kubectl edit rc rc_name
    更改spec.replicas键的值
    第一种是命令式,第二种是声明式。
    声明式
    声明式是指定了期望的状态,相比较于命令式而言。
    1)命令式是指需要step-by-step的编写命令或脚本,需要设想目标环境的各种情况,处理各种边缘问题,脚本在不同的环境里运行可能会产生不同的结果。不具备事务性,脚本执行过程中出现意外时,可能就会出现中间状态。
    2)声明式是使用配置文件直接描述最终状态,不必考虑流程和目标环境的各种细节,这种方式便于文档化和版本管理,重复部署不会产生不一致的结果,在不同的目标环境下也是可以产生一致的部署结果。具备事务性,要么成功,要么失败。

    3.5 删除RC

    删除RC及其管理的pod
    $ kubectl delete rc rc_name

    删除RC,保留pod
    $ kubectl delete rc rc_name --cascade=false
    通过--cascade=false保证RC的pod不受管理

    posted @   Andya_net  阅读(489)  评论(0编辑  收藏  举报
    编辑推荐:
    · AI与.NET技术实操系列(二):开始使用ML.NET
    · 记一次.NET内存居高不下排查解决与启示
    · 探究高空视频全景AR技术的实现原理
    · 理解Rust引用及其生命周期标识(上)
    · 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
    阅读排行:
    · 全程不用写代码,我用AI程序员写了一个飞机大战
    · DeepSeek 开源周回顾「GitHub 热点速览」
    · 记一次.NET内存居高不下排查解决与启示
    · 物流快递公司核心技术能力-地址解析分单基础技术分享
    · .NET10 - 预览版1新功能体验(一)
    点击右上角即可分享
    微信分享提示