-
pod控制器之ReplicaSet
ReplicaSet介绍
ReplicaSet的主要作用是保证一定数量的pod能够正常运行,它会持续监听这些pod的运行状态,一旦pod发生故障,就会重启或重建。同时它还支持对pod数量的扩缩容和版本镜像的升级。
ReplicaSet的资源清单文件
apiVersion: apps/v1 #版本号 kind: ReplicaSet #类型 metadata: #元数据 name: #rs名称 namespace: #所属命名空间 labels: #标签 controller: rs spec: #详情描述 replicas: #副本数量 selector: #选择器,通过它指定该控制器管理哪些pod matchLabels: #Labels匹配规则 app: nginx-pod matchExpressions: #Expression匹配规则 - {key: app, operator: In, values: [nginx-pod]} template: #模板,当副本数量不足时,会根据下面的模板创建pod副本 metadata: labels: app: nginx-pod spec: containers: - name: nginx image: nginx:1.17.1 ports: - containerPort: 80
在这里面,需要新了解的配置项就是spec下面几个选项:
- replicas:指定副本数量,其实就是当前rs创建出来的pod的数量,默认为1
- selector:选择器,它的作用时建立pod控制器和pod之间的关联关系,采用的Label Selector机制,在pod木板上定义Label,在控制器上定义选择器,就可以表明当前控制器能管理哪些pod了
- template:模板,就是当前控制器创建pod所使用的模板,里面其实就是前面学过的pod的定义
创建ReplicaSet
创建pc-replicaset.yaml文件,内容如下:
apiVersion: apps/v1 kind: ReplicaSet metadata: name: pc-replicaset namespace: dev spec: replicas: 3 selector: matchLabels: app: nginx-pod template: metadata: labels: app: nginx-pod spec: containers: - name: nginx image: nginx:1.17.1
使用配置文件创建rs
[root@master ~]# vim pc-replicaset.yaml [root@master ~]# kubectl create -f pc-replicaset.yaml replicaset.apps/pc-replicaset created [root@master ~]# kubectl get rs pc-replicaset -n dev -o wide NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR pc-replicaset 3 3 3 17m nginx nginx:1.17.1 app=nginx-pod
查看pod
[root@master ~]# kubectl get pod -n dev NAME READY STATUS RESTARTS AGE pc-replicaset-fmlgx 1/1 Running 0 17m pc-replicaset-jg9xz 1/1 Running 0 17m pc-replicaset-rs92t 1/1 Running 0 17m
rs扩缩容
第一种方式:编辑rs文件
编辑rs的副本数量,修改spec:replicas
[root@master ~]# kubectl edit rs pc-replicaset -n dev #找到spec:replicas并将其从3替换成6 spec: replicas: 6 selector: matchLabels: app: nginx-pod template:
再次查看rs,发现rs已经扩充为了6个
[root@master ~]# kubectl edit rs pc-replicaset -n dev replicaset.apps/pc-replicaset edited [root@master ~]# kubectl get rs pc-replicaset -n dev -o wide NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR pc-replicaset 6 6 6 22h nginx nginx:1.17.1 app=nginx-pod
查看pod,发现又新创建了3个pod
[root@master ~]# kubectl get pod -n dev NAME READY STATUS RESTARTS AGE pc-replicaset-88q2r 1/1 Running 0 115s pc-replicaset-fmlgx 1/1 Running 1 22h pc-replicaset-j5pz6 1/1 Running 0 115s pc-replicaset-jg9xz 1/1 Running 1 22h pc-replicaset-rs92t 1/1 Running 1 22h pc-replicaset-xkdjg 1/1 Running 0 115s
第二种方式:使用命令
命令格式:
kubectl scale rs rs名称 --replicas=rs数量 -n 命名空间
将rs的数量减少为2个
[root@master ~]# kubectl scale rs pc-replicaset --replicas=2 -n dev replicaset.apps/pc-replicaset scaled [root@master ~]# kubectl get rs pc-replicaset -n dev -o wide NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR pc-replicaset 2 2 2 22h nginx nginx:1.17.1 app=nginx-pod [root@master ~]# kubectl get pod -n dev NAME READY STATUS RESTARTS AGE pc-replicaset-jg9xz 1/1 Running 1 22h pc-replicaset-rs92t 1/1 Running 1 22h
发现rs的数量已经减少为了2个
rs镜像升级
在生产环境中,可能会遇见镜像某个版本出现问题,必须升级镜像,因此rs就给我们提供了升级rs镜像的功能
方式一:编辑rs文件
[root@master ~]# kubectl edit rs pc-replicaset -n dev #找到image,将其改为1.17.2 spec: containers: - image: nginx:1.17.2 imagePullPolicy: IfNotPresent name: nginx resources: {}
查看rs镜像,发现已经变成了1.17.2
[root@master ~]# kubectl get rs pc-replicaset -n dev -o wide NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR pc-replicaset 2 2 2 23h nginx nginx:1.17.2 app=nginx-pod
方式二:使用命令
命令格式
kubectl set image rs rs名称 容器=镜像版本 -n 命名空间
使用命令将镜像版本修改回1.17.1
[root@master ~]# kubectl set image rs pc-replicaset nginx=nginx:1.17.1 -n dev replicaset.apps/pc-replicaset image updated [root@master ~]# kubectl get rs pc-replicaset -n dev -o wide NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR pc-replicaset 2 2 2 23h nginx nginx:1.17.1 app=nginx-pod
删除rs
使用kubectl delete命令会删除rs以及它管理的pod
在k8s删除rs前,会将rs的replicasclear调整为0,等待所有的pod被删除之后,再执行rs对象的删除
三种删除rs的方式
#第一种方式:使用kubectl delete kubectl delete rs rs名称 -n 命名空间 #第二种方式:只删除rs保留pod(不推荐使用) kubectl delete rs rs名称 -n 命名空间 --cascade=false #第三种方式:直接使用yaml删除(推荐) kubectl delete -f yaml文件名
这里使用第三种方式进行演示
[root@master ~]# kubectl delete -f pc-replicaset.yaml replicaset.apps "pc-replicaset" deleted [root@master ~]# kubectl get rs pc-replicaset -n dev Error from server (NotFound): replicasets.apps "pc-replicaset" not found
发现rs已经被删除
出处:https://www.cnblogs.com/Ayanamidesu/p/15013048.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式