14-k8s控制器资源-rs控制器replicasets

replicaset副本控制器,简称:rs控制器;

用法:与rc控制器"几乎"相同;

能力:可以指定pod的副本始终存活,相比于rc控制器;支持标签匹配,也支持标签表达式

注意:不论是rc还是rs资源,都是通过"标签"惊醒匹配pod的,如果有同样的标签,则算作一个副本;

一、rs控制器资源的管理

1,基于标签-创建rs资源

· 编辑rs资源清单

root@k8s231 rs\]# cat rs.yaml apiVersion: apps/v1 kind: ReplicaSet metadata: name: rs01 spec: #控制pod副本的数量(k8s系统集群中,匹配到标签的数量) replicas: 9 #选择需要创建副本的pod的标签 selector: #声明基于标签匹配pod(这里就是与rc控制器的区别,rc不需要这个资源) matchLabels: k8s: xinjizhiwa #pod模板,就是编写pod资源 template: metadata: name: pod-rs labels: k8s: xinjizhiwa spec: containers: - name: c1 image: harbor.xinjizhiwa.com/xinjizhiwa-nginx/nginx:v2 ports: - containerPort: 80 command: \["nginx","-g","daemon off;"

· 创建rs资源

root@k8s231 rs\]# kubectl apply -f rs.yaml

· 查看是否创建成功

2,基于标签表达式创建rs资源

· 编辑rs资源清单(标签表达式-Exists)

root@k8s231 rs\]# cat rs.yaml apiVersion: apps/v1 kind: ReplicaSet metadata: name: rs01 spec: #控制pod副本的数量(k8s系统集群中,匹配到标签的数量) replicas: 9 #选择需要创建副本的pod的标签 selector: #1,声明基于标签匹配pod(这里就是与rc控制器的区别,rc不需要这个资源) #matchLabels: #2,基于标签表达式匹配pod matchExpressions: #指定标签的key值(:左边的) - key: k8s #指定key和value的关系,4个值可以选择 #第一个In:只要 #第二个Notin:只要不.. #第三个值Exists:只要key匹配成功就行,value可以使任意值; #第四个值DoesNotExist:只要不存在指定的key,就算匹配成功; operator: Exists #pod模板,就是编写pod资源 template: metadata: name: pod-rs labels: k8s: xinjizhiwa spec: containers: - name: c1 image: harbor.xinjizhiwa.com/xinjizhiwa-nginx/nginx:v2 ports: - containerPort: 80 command: \["nginx","-g","daemon off;"

· 编辑rs资源清单(标签表达式-I n

root@k8s231 rs\]# cat rs.yaml apiVersion: apps/v1 kind: ReplicaSet metadata: name: rs01 spec: #控制pod副本的数量(k8s系统集群中,匹配到标签的数量) replicas: 9 #选择需要创建副本的pod的标签 selector: #1,声明基于标签匹配pod(这里就是与rc控制器的区别,rc不需要这个资源) #matchLabels: #2,基于标签表达式匹配pod matchExpressions: #指定标签的key值(:左边的) - key: k8s #指定key和value的关系,4个值可以选择 #第一个In:只要 #第二个Notin:只要不.. #第三个值Exists:只要key匹配成功就行,value可以使任意值; #第四个值DoesNotExist:只要不存在指定的key,就算匹配成功; operator: In #指定value的列表 values: - xinjizhiwa - xin #pod模板,就是编写pod资源 template: metadata: name: pod-rs labels: k8s: xinjizhiwa spec: containers: - name: c1 image: harbor.xinjizhiwa.com/xinjizhiwa-nginx/nginx:v2 ports: - containerPort: 80 command: \["nginx","-g","daemon off;"

3,查看rs资源

root@k8s231 rs\]# kubectl get rs NAME DESIRED CURRENT READY AGE rs01 9 9 9 3m17s

4,删除rs资源

root@k8s231 rs\]# kubectl delete rs rs01

二、rs资源的升级和回滚

1,创建rs与pod资源(v2版本)

· 编辑资源清单

root@k8s231 rs\]# cat rs.yaml apiVersion: apps/v1 kind: ReplicaSet metadata: name: rs01 spec: #控制pod副本的数量(k8s系统集群中,匹配到标签的数量) replicas: 9 #选择需要创建副本的pod的标签 selector: #1,声明基于标签匹配pod(这里就是与rc控制器的区别,rc不需要这个资源) matchLabels: k8s: xinjizhiwa #2,基于标签表达式匹配pod #matchExpressions: #指定标签的key值(:左边的) #- key: k8s #指定key和value的关系,4个值可以选择 #第一个In:只要 #第二个Notin:只要不.. #第三个值Exists:只要key匹配成功就行,value可以使任意值; #第四个值DoesNotExist:只要不存在指定的key,就算匹配成功; #operator: Notin #指定value的列表 #values: #- xinjizhi #- xin #pod模板,就是编写pod资源 template: metadata: name: pod-rs labels: k8s: xinjizhiwa spec: containers: - name: c1 image: harbor.xinjizhiwa.com/xinjizhiwa-nginx/nginx:v2 ports: - containerPort: 80 command: \["nginx","-g","daemon off;"

· 创建资源

root@k8s231 rs\]# kubectl apply -f rs.yaml

2,将版本镜像回滚到v1

· 修改资源清单

root@k8s231 rs\]# cat rs.yaml apiVersion: apps/v1 kind: ReplicaSet metadata: name: rs01 spec: replicas: 9 selector: matchLabels: k8s: xinjizhiwa template: metadata: name: pod-rs labels: k8s: xinjizhiwa spec: containers: - name: c1 #这里改成v1,代表回滚上一个镜像 image: harbor.xinjizhiwa.com/xinjizhiwa-nginx/nginx:v1 ports: - containerPort: 80 command: \["nginx","-g","daemon off;"

· 重新apply执行清单

root@k8s231 rs\]# kubectl apply -f rs.yaml

· 删除现有rs启动的pod

root@k8s231 rs\]# kubectl delete pods --all

· 再次查看,全变成v1版本

注意,也可以一个一个pod删除,就等于逐渐的一个一个pod进行升级和回滚,也叫金丝雀发布,在rs资源中,我们先不细讲,等到deployments资源时,会详细讲这个发布机制;

相关推荐
奥尔特星云大使2 小时前
《系统规划与管理师教程(第2版)》方法篇 第10章 云原生系统规划 知识点总结
云原生·软考·高级·系规
熙客3 小时前
Kubernetes是如何保证有状态应用数据安全和快速恢复的
mysql·云原生·容器·kubernetes
Wang's Blog4 小时前
Nestjs框架: 微服务项目工程结构优化与构建方案
微服务·云原生·架构·nestjs
似水流年 光阴已逝6 小时前
Kubernetes Pod 基本原理:全面详解
云原生·容器·kubernetes·pod
PKNLP6 小时前
07.docker介绍与常用命令
运维·docker·容器
阿里云云原生6 小时前
评估工程正成为下一轮 Agent 演进的重点
云原生
掘根8 小时前
【Docker】网络
网络·docker·容器
高旭博9 小时前
10. kubernetes资源——statefulset有状态负载
云原生·容器·kubernetes
_Walli_9 小时前
k8s集群搭建(七)-------- 微服务间的调用
微服务·容器·kubernetes
马达加斯加D10 小时前
k8s --- resource: Pod, ReplicaSet and Deployment
云原生·容器·kubernetes