【Kubernetes资源篇】Replicaset控制器入门实战详解

这篇具有很好参考价值的文章主要介绍了【Kubernetes资源篇】Replicaset控制器入门实战详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、ReplicaSet 控制器介绍

官方中文参考文档:

ReplicaSet是k8s中一种资源对象,简写 rs用于管理Pod副本数量和健康状态,在spec.replicas 字段中可以定义Pod副本数量,ReplicaSet会始终保持Pod在指定数量,当发现Pod数量大于副本数量时,会移除多出的Pod,当发现Pod小于副本数量会自动创建Pod,使其始终维护在副本数量,此外,ReplicaSet还会监控Pod的健康状态,如果某个Pod出现故障,ReplicaSet会自动替换它

ReplicaSet特点如下:

  • 自动化管理:ReplicaSet可以自动地创建、删除和更新Pod副本,以确保指定数量的Pod副本一直在运行。
  • 健康检查:ReplicaSet会定期检查Pod的健康状态,并根据需要重启或替换不健康的Pod。
  • 水平扩展:通过增加或减少Pod副本的数量,可以实现应用程序的水平扩展,以满足不同的负载需求。
  • 选择器:ReplicaSet使用标签选择器来选择要管理的Pod副本。
  • 有状态管理:ReplicaSet可以管理有状态的应用程序,例如数据库,以确保数据的一致性和可用性。
  • 更新:不支持滚动更新,需要手动删除旧Pod实现更新

ReplicaSet常用字段解释:

apiVersion: apps/v1      # RS版本
kind: ReplicaSet         # 定义RS资源类型  
metadata:                # RS元数据
  name: nginx-replicaset # RS名称
  namespace: default     # RS命名空间
  labels:                # RS标签
    app: web
    env: uat
spec: 
  replicas: 3            # 关联Pod副本数量
  selector:              
    matchLabels:         # 关联具有app=web的Pod
      app: web
  template:              # Pod模板
    metadata:            # Pod元数据
      namespace: default # Pod命名空间
      labels:            # Pod标签
        app: web
        env: uat
    spec:
      containers:        # Pod定义容器
      - name: web-nginx  # 容器名称
        image: nginx     # 容器使用镜像
        imagePullPolicy: IfNotPresent  # 容器镜像下载策略
        ports:         
        - containerPort: 80            # 容器内端口

二、ReplicaSet案例

1、Pod副本扩缩容案例

通过修改 spec.replicas 值来进行动态扩容、缩容,使用 nginx镜像定义副本数量 3,并添加了一些必要的探测,如下:

cat replicaset.yaml 

---
apiVersion: apps/v1     
kind: ReplicaSet 
metadata:                
  name: nginx-replicaset
  namespace: default   
  labels:               
    app: web
spec: 
  replicas: 3           
  selector:              
    matchLabels:       
      app: web
  template:             
    metadata:            
      namespace: default 
      labels:            
        app: web
    spec:
      containers:       
      - name: web-nginx 
        image: nginx:1.18.0
        imagePullPolicy: IfNotPresent  
        ports:         
        - containerPort: 80 
        startupProbe:
          tcpSocket:
            port: 80
        livenessProbe:
          httpGet:
            path: /index.html
            port: 80
        readinessProbe:
          httpGet:
            path: /index.html
            port: 80

执行YAML文件:

kubectl apply -f replicaset.yaml 

查看Pod、RS状态,是否创建且正常:

kubectl get rs,pod -l app=web

【Kubernetes资源篇】Replicaset控制器入门实战详解

当我们删除Pod时,RS会自动为我们创建出来,RS会始终维护Pod数量为3 删除命令如下:

kubectl delete pod nginx-replicaset-7mh2r

动态扩容副本数量,更新副本数量为5:

【Kubernetes资源篇】Replicaset控制器入门实战详解

重新 apply 一下 YAML文件:

kubectl apply -f replicaset.yaml 

验证,Pod数量:

kubectl get pod -l app=web

【Kubernetes资源篇】Replicaset控制器入门实战详解

缩容也是同样操作,更改replicas数值重新apply一下即可,此处省略。

2、Pod更新版本案例

所需镜像下载地址

ReplicaSet,不支持动态更新,只能是通过删除旧Pod方式,案例演示如下:

使用 web:v1 镜像 创建ReplicaSet资源

cat replicaset.yaml 
---
apiVersion: apps/v1     
kind: ReplicaSet 
metadata:                
  name: nginx-replicaset
  namespace: default   
  labels:               
    app: web
spec: 
  replicas: 3          
  selector:              
    matchLabels:       
      app: web
  template:             
    metadata:            
      namespace: default 
      labels:            
        app: web
    spec:
      containers:       
      - name: web-nginx 
        image: web:v1     # V1 镜像
        imagePullPolicy: IfNotPresent  
        ports:         
        - containerPort: 80 

执行文件:

kubectl apply -f replicaset.yaml
kubectl get pod -l app=web

查看PodIP地址,并访问:

kubectl describe pod nginx-replicaset-wht6q|grep IP

【Kubernetes资源篇】Replicaset控制器入门实战详解

根据以上更新使用 web:v2 镜像:

编辑上面 YAML 文件 只更改镜像版本即可如下图:

【Kubernetes资源篇】Replicaset控制器入门实战详解

执行文件:

kubectl apply -f replicaset.yaml
kubectl get pod -l app=web

注意,此时curl Pod返回内容依旧是 旧版Pod内容,需要手动删除旧Pod资源,RS会自动创建Pod,自动创建的Pod才会使用新的镜像

【Kubernetes资源篇】Replicaset控制器入门实战详解

删除Pod,根据自己当前环境pod名称进行删除:

kubectl delete pod nginx-replicaset-ff5pl nginx-replicaset-rvr9k nginx-replicaset-wht6q

删除后,RS会自动创建,查看新的Pod:

kubectl get pod -l app=web

访问Pod:

【Kubernetes资源篇】Replicaset控制器入门实战详解文章来源地址https://www.toymoban.com/news/detail-489533.html

到了这里,关于【Kubernetes资源篇】Replicaset控制器入门实战详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kubernetes 启动Pod的方法-Pod的调度算法-Pod间的通信-k8s的控制器-Pod资源控制-发布Service服务

    目录 Pod 参考文档:Pod | Kubernetes Pod配置文件:simple-pod.yaml 对master进行如下操作 Pod的状态有: 参考文档:(70条消息) Pod生命周期中的状态解释_pod状态_闹玩儿扣眼珠子的博客-CSDN博客 进入Pod内的nginx容器: 当我们创建一个Pod,其中的步骤是什么?(启动Pob的流程) 大概步骤:

    2024年02月13日
    浏览(50)
  • 学习笔记二十八:K8S控制器Daemonset入门到企业实战应用

    DaemonSet控制器能够确保k8s集群所有的节点都运行一个相同的pod副本,当向k8s集群中增加node节点时,这个node节点也会自动创建一个pod副本,当node节点从集群移除,这些pod也会自动删除;删除Daemonset也会删除它们创建的pod daemonset的控制器会监听kuberntes的daemonset对象、pod对象、

    2024年02月05日
    浏览(34)
  • 学习笔记二十七:K8S控制器Statefulset入门到企业实战应用

    用于管理有状态应用程序的部署。与无状态应用程序不同,有状态应用程序在运行时通常要求稳定的网络标识和持久性存储。 有状态服务:StatefulSet是有状态的集合,管理有状态的服务,它所管理的Pod的名称不能随意变化。数据持久化的目录也是不一样,每一个Pod都有自己独

    2024年02月06日
    浏览(37)
  • 18-k8s控制器资源-cronjob控制器

            job控制器是执行完一次任务,就结束;         cronjob控制器,是基于job控制器,定期频率性执行任务;等同于linux系统中的crontab一样; [root@k8s231 pi]# vim cronjob.yaml apiVersion: batch/v1 kind: CronJob metadata:   name: xinjizhiwa spec:   schedule: \\\"* * * * *\\\"   #定义job的模板   jobTemplate

    2024年02月22日
    浏览(49)
  • Kubernetes 准入控制器

    Kubernetes 极大地提高了当今生产中后端集群的速度和可管理性。由于灵活、可扩展、易用,Kubernetes 已成为容器编排的事实标准。Kubernetes 还提供了一系列保护功能。而 Admission Controllers(准入控制器) 是一组安全相关的插件,启用后能进一步使用 Kubernetes 更高级的安全功能。

    2024年02月06日
    浏览(33)
  • kubernetes-控制器

    目录 一、replicaset 二、deployment 1、版本迭代 2、回滚 3、滚动更新策略 4、暂停与恢复 三、daemonset 四、statefulset 五、job 六、cronjob ReplicaSet用于保证指定数量的 Pod 副本一直运行 replicaset是通过标签匹配pod replicaset自动控制副本数量,pod可以自愈 回收资源 Deployment 的主要作用是实

    2024年02月06日
    浏览(35)
  • 15-k8s控制器资源-deployment/部署控制器

            在学习rc和rs控制器资源时,我们指导,这两个资源都是控制pod的副本数量的,但是,他们两个有个缺点,就是在部署新版本pod或者回滚代码的时候,需要先apply资源清单,然后再删除现有pod,通过资源控制,重新拉取新的pod来实现回滚或者迭代升级;         那么

    2024年02月21日
    浏览(54)
  • 14-k8s控制器资源-rs控制器replicasets

            replicaset副本控制器,简称:rs控制器;         用法:与rc控制器“几乎”相同;         能力:可以指定pod的副本始终存活,相比于rc控制器;支持标签匹配,也支持标签表达式         注意:不论是rc还是rs资源,都是通过“标签”惊醒匹配pod的,如果有同样

    2024年02月21日
    浏览(45)
  • Kubernetes Pod控制器

    Pod控制器及其功用 Pod控制器,又称之为工作负载(workload),是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试进行重启,当根据重启策略无效,则会重新新建pod的资源 Deployment 部署无状态应用 负责创建和管理 ReplicaSet , 维护 Pod 副本数

    2024年02月12日
    浏览(27)
  • 07.资源控制器

    学习要点: 1.资源控制器 本节课我们来开始学习控制器的快捷方法:资源控制器。 一.资源控制器 1. 声明:资源控制器是某个特定场景下的产物,完全理解需要 PHP 项目基础; 2. 比如开发过博客系统,留言帖子系统之类,具有类似思维,否则你懂的..; 3. 只是学习了 PHP 基

    2024年02月04日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包