Docker&Kubernetes ❀ Kubernetes集群Pod控制器 - ReplicaSet(RS)
Posted 无糖可乐没有灵魂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker&Kubernetes ❀ Kubernetes集群Pod控制器 - ReplicaSet(RS)相关的知识,希望对你有一定的参考价值。
文章目录
1、资源配置清单
ReplicaSet的主要作用是保证一定数量的Pod能够正常运行,他会持续监听这些Pod的运行状态,一旦Pod发生故障,就会自动重启或者重建,同时还支持对Pod数量的扩缩以及对Pod镜像的升级;
参数查询方法:
[root@master ~]# kubectl explain rs
参数汇总梳理:
apiVersion: apps/v1 #版本信息
kind: ReplicaSet #类型
metadata: #元数据
name:
namespace:
labels:
controller: rs
spec: #详细描述
replicas: 3 #副本数量,默认为1
selector: #选择器,在Pod模板内定义标签,控制器定义选择器,选择该标签,即当前控制器可以控制模板创建出的所有Pod
matchLabels: #匹配标签规则
app: nginx-pod
matchExpressions: #匹配表达式规则
- key: "app"
operator: In
values: ["nginx-pod"]
template: #模板,当副本数量不足时,根据下面的配置创建Pod
metadata:
labels: #Pod标签
app: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.17.1
ports:
- containerPort: 80
2、创建ReplicaSet控制器
#创建YAML文件
[root@master ~]# cat pc-replicaset.yaml
apiVersion: apps/v1 #版本信息
kind: ReplicaSet #类型
metadata: #元数据
name: pc-replicaset
namespace: dev
spec: #详细描述
replicas: 3 #副本数量
selector: #选择器,指定管理那些Pod
matchLabels: #匹配标签规则
app: nginx-pod
template: #模板,当副本数量不足时,根据下面的配置创建Pod
metadata:
labels: #Pod标签
app: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.17.1
#调用YAML文件
[root@master ~]# kubectl apply -f pc-replicaset.yaml
replicaset.apps/pc-replicaset created
#查看RS控制器
[root@master ~]# kubectl get rs pc-replicaset -n dev -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
pc-replicaset 3 3 3 70s nginx nginx:1.17.1 app=nginx-pod
# DESIRED:期望副本数量;
# CURRENT:当前副本数量;
# READY:已经准备好提供服务的副本数量;
#查看RS控制器创建的Pod
[root@master ~]# kubectl get pod -n dev
NAME READY STATUS RESTARTS AGE
pc-replicaset-8bx4b 1/1 Running 0 109s
pc-replicaset-fnm2h 1/1 Running 0 109s
pc-replicaset-nvv65 1/1 Running 0 109s
# 可以查看到由RS控制器创建好的Pod命名格式为:ReplicaSet_Name-xxxxx(五位随机码)
3、副本扩缩容
修改方式比较多,常用的有:Edit、命令修改、Apply;
3.1 Edit修改
[root@master ~]# kubectl edit rs pc-replicaset -n dev
# 此处Edit编辑YAML文件的修改方法同vi/vim使用方法一致
#编辑完成后确认自动启用YAML文件
[root@master ~]# kubectl edit rs pc-replicaset -n dev
replicaset.apps/pc-replicaset edited
#查看修改后的Pod数量
[root@master ~]# kubectl get pod -n dev
NAME READY STATUS RESTARTS AGE
pc-replicaset-8bx4b 1/1 Running 0 9m27s
pc-replicaset-fk86f 1/1 Running 0 42s
pc-replicaset-fnm2h 1/1 Running 0 9m27s
pc-replicaset-mpxkt 1/1 Running 0 42s
pc-replicaset-nvv65 1/1 Running 0 9m27s
pc-replicaset-vkxc9 1/1 Running 0 42s
3.2 命令修改
[root@master ~]# kubectl scale rs pc-replicaset --replicas=2 -n dev
replicaset.apps/pc-replicaset scaled
[root@master ~]# kubectl get pods -n dev
NAME READY STATUS RESTARTS AGE
pc-replicaset-8bx4b 1/1 Running 0 13m
pc-replicaset-nvv65 1/1 Running 0 13m
3.3 Apply命令
#使用vim直接修改YAML文件内容,替换需要修改的字段参数
[root@master ~]# vim pc-replicaset.yaml
#使用apply命令直接替换即可
[root@master ~]# kubectl apply -f pc-replicaset.yaml
replicaset.apps/pc-replicaset configured
4、镜像升级
升级方式分为两种:Edit、命令修改
4.1 Edit修改
[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 3 3 3 33m nginx nginx:1.17.3 app=nginx-pod
4.2 命令修改
[root@master ~]# kubectl set image rs pc-replicaset nginx=nginx:1.17.2 -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 3 3 3 37m nginx nginx:1.17.2 app=nginx-pod
4.3 Apply
[root@master ~]# cat pc-replicaset.yaml | grep image
image: nginx:1.17.1
[root@master ~]# kubectl apply -f pc-replicaset.yaml
replicaset.apps/pc-replicaset configured
[root@master ~]# kubectl get rs pc-replicaset -n dev -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
pc-replicaset 3 3 3 39m nginx nginx:1.17.1 app=nginx-pod
5、删除ReplicaSet控制器
#直接删除
[root@master ~]# kubectl delete -f pc-replicaset.yaml
#删除ReplicaSet控制器不删除Pod
[root@master ~]# kubectl delete rs pc-replicaset -n dev --cascade=false
warning: --cascade=false is deprecated (boolean value) and can be replaced with --cascade=orphan.
replicaset.apps "pc-replicaset" deleted
[root@master ~]# kubectl get pod -n dev
NAME READY STATUS RESTARTS AGE
pc-replicaset-8bx4b 1/1 Running 0 41m
pc-replicaset-dtqcn 1/1 Running 0 22m
pc-replicaset-nvv65 1/1 Running 0 41m
以上是关于Docker&Kubernetes ❀ Kubernetes集群Pod控制器 - ReplicaSet(RS)的主要内容,如果未能解决你的问题,请参考以下文章
Docker&Kubernetes ❀ Kubernetes集群安装部署过程与常见的错误解决方法
Docker&Kubernetes ❀ Kubernetes集群安装部署过程与常见的错误解决方法
Docker&Kubernetes ❀ Kubernetes集群实践与部署笔记知识点梳理
Docker&Kubernetes ❀ Docker 容器技术笔记链接梳理