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资源时,会详细讲这个发布机制;

相关推荐
To_OC9 小时前
跑了3个Docker容器后,我终于搞懂镜像和容器到底啥关系
后端·docker·容器
ltl12 小时前
mTLS 工程实践:服务间双向认证怎么落地
kubernetes
tryCbest13 小时前
Docker 从零到精通:知识与跨平台使用指南
docker·容器
开始学AI16 小时前
Codex2API Docker 使用宿主机代理:OAuth Token 兑换 403 问题排查与解决方案
运维·docker·容器
做前端的娜娜子16 小时前
Docker 常用命令全梳理:从镜像拉取到容器编排
docker·容器·掘金·金石计划
m0_5791466518 小时前
关于Docker Desktop导致C盘空间异常占用的排查与根治方案
运维·docker·容器
易番番ERP20 小时前
品牌代理商SKU繁多,ERP如何高效处理新旧规格替换?
数据库·微服务·云原生·sku·易番番erp
栩栩云生20 小时前
别再硬记 AWS 和 k8s 命令了!一行命令把十几个云平台的 CLI 全接进 AI
kubernetes·agent·mcp
对象存储与RustFS20 小时前
给 Kubernetes 找一个对象存储后端:RustFS Helm 部署 + 应用接入实录
后端·云原生·kubernetes
郝开21 小时前
Docker Compose 本地环境搭建:kkFileView
运维·docker·容器