ReplicaSet
ReplicaSet的主要作用就是维持一组pod副本的运行,说白了,就是保证一定数量的pod能够在集群中正常运行,它会持续监听这些pod的运行状态,一旦pod发生故障,就会重启pod,如果数量减少了,就会增加新的pod。同时它在支持对pod数量的扩缩容和版本镜像的升级。
replicaSet的资源清单文件:
在这里,需要新了解的配置项就是spec下面的几个选项:
- replicas:指定副本数量,其实就是当前rs创建出来的pod的数量,默认为1
- selector:选择器,它的作用是建立pod控制器和pod之间的关联关系,采用的label selector机制在pod模板上定义label,在控制器上定义选择器,就可以表明当前控制器能够管理那些pod了。
- template:模板,就是当前控制器创建pod所使用的模板,里面其实就是前一章学过的pod的定义。
创建pc-replicaset.yaml文件
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: pc-replicaset
namespace: dev
spec:
replicas: 2
selector:
matchLabels:
app: nginx-pod
template:
metadata:
labels:
app: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.17.1
#创建rs
kubectl create -f pc-replicaset.yaml
#查看rs
#DESIRED:期望副本数量
#CURRENT:当前副本数量
#READY:已经准备好提供服务的副本数量
[root@master k8s]# kubectl get rs pc-replicaset -n dev -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
pc-replicaset 2 2 2 65s nginx nginx:1.17.1 app=nginx-pod
扩缩容
# 编辑rs的副本数量,修改spec:replicas:3即可
kubectl edit rs pc-replicaset -n dev
#查看pod
[root@master k8s]# kubectl get pods -n dev
NAME READY STATUS RESTARTS AGE
pc-replicaset-hkgqr 1/1 Running 0 73s
pc-replicaset-hqgx7 1/1 Running 0 19m
pc-replicaset-zxp4c 1/1 Running 0 19m
[root@master k8s]# kubectl get rs pc-replicaset -n dev -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
pc-replicaset 3 3 3 18m nginx nginx:1.17.1 app=nginx-pod
#也可以直接使用命令实现
#使用scale命令实现扩缩容,后面--replicas=n,直接指定目标即可
kubectl scale rs pc-replicaset --replicas=2 -n dev
#命令运行完毕查看,pod较多时会有退出状态
[root@master k8s]# kubectl get pods -n dev
NAME READY STATUS RESTARTS AGE
pc-replicaset-hqgx7 1/1 Running 0 21m
pc-replicaset-zxp4c 1/1 Running 0 21m
镜像升级
#编辑rs的容器镜像,- image: nginx:1.17.2
kubectl edit rs pc-replicaset -n dev
#再次查看,发现镜像版本已经变更了
[root@master k8s]# kubectl get rs -n dev -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
pc-replicaset 2 2 2 25m nginx nginx:1.17.2 app=nginx-pod
#同样的道理,也可以使用命令完成这个工作
#kubectl set image rs rs的名称 容器=镜像版本 -n namespace
kubectl set image rs pc-replicaset nginx=nginx:1.17.1 -n dev
#再次查看,发现镜像版本已经变更了
[root@master k8s]# kubectl get rs -n dev -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
pc-replicaset 2 2 2 27m nginx nginx:1.17.1 app=nginx-pod
删除ReplicaSet
#使用kubectl delete命令会删除此rs以及管理的pod
#在k8s删除rs前,会将rs的replicasclear调整为0,等待所有的pod被删除后,再执行rs对象的删除。
[root@master k8s]# kubectl delete rs pc-replicaset -n dev
replicaset.apps "pc-replicaset" deleted
#如果希望仅仅删除rs对象(保留pod),可以使用kubectl delete 命令添加--cascade=false选项(不推荐)
kubectl delete rs pc-replicaset -n dev --cascade=false
#也可以直接使用yaml直接删除(推荐)
kubectl delete -f pc-replicaset.yaml
注意:非原创,是跟着黑马视频学习一个字一个字敲出来的笔记
视频地址:
https://www.bilibili.com/video/BV1xX4y1K7nb?p=2