测试开发技术网站
博客
设计
设计
开发
Python
测试
unittest
运维
Linux基础应用
CI/CD
CI/CD
数据库
数据库
云计算
云计算
云原生
云原生
爬虫
爬虫
数据分析
数据分析
人工智能
人工智能
登录
注册
Kubernetes----ReplicaSet控制器
收藏本文
作者:redrose2100 类别: 日期:2022-05-23 13:43:22 阅读:970 次 消耗积分:0 分
# 一、ReplicaSet控制器简介 ## 1.1 ReplicaSet控制器简介 ReplicaSet控制器的主要作用是保证一定数量的pod能能够正常运行,它会持续监听这些pod的运行状态,一旦pod发生故障,就会重启或重建,同时它还支持对pod数量的扩缩容和版本镜像的升级 ![](/static/upload/20220523_134308.png) ## 1.2 ReplicaSet控制资源清单文件 ```yaml apiVersion: apps/v1 # 版本号 kind: ReplicaSet # 类型 metadata: # 元数据 name: # rs名称 namespace: # 所属命名空间 labels: # 标签 controller: rs spec: # 性情描述 replicas: 3 # 副本数量 selector: # 选择器,通过它指定该控制器管理哪些pod matchLabels: # label匹配规则 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实例演示 ## 2.1 ReplicaSet控制器创建 编辑replicaset.yaml文件,内容如下: ```yaml apiVersion: v1 kind: Namespace metadata: name: dev --- 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 ``` 使用如下命令创建资源 ```bash [root@master pod_controller]# kubectl apply -f replicaset.yaml namespace/dev created replicaset.apps/pc-replicaset created [root@master pod_controller]# ``` 通过如下命令可以查询到创建结果 ```bash [root@master pod_controller]# kubectl get rs,pod -n dev -o wide NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR replicaset.apps/pc-replicaset 3 3 3 2m57s nginx nginx:1.17.1 app=nginx-pod NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pod/pc-replicaset-74djl 1/1 Running 0 2m57s 10.244.2.50 node2
pod/pc-replicaset-m5tmz 1/1 Running 0 2m57s 10.244.1.23 node1
pod/pc-replicaset-wlvcm 1/1 Running 0 2m57s 10.244.1.24 node1
[root@master pod_controller]# ``` ## 2.2 ReplicaSet实现扩缩容 ### 2.2.1 通过修改配置文件方式实现 编辑replicaset.yaml文件,将replicas值设置为6个,如下 ```yaml apiVersion: v1 kind: Namespace metadata: name: dev --- apiVersion: apps/v1 kind: ReplicaSet metadata: name: pc-replicaset namespace: dev spec: replicas: 6 selector: matchLabels: app: nginx-pod template: metadata: labels: app: nginx-pod spec: containers: - name: nginx image: nginx:1.17.1 ``` 然后通过如下命令使配置生效 ```bash [root@master pod_controller]# kubectl apply -f replicaset.yaml namespace/dev unchanged replicaset.apps/pc-replicaset configured [root@master pod_controller]# ``` 通过如下命令可以查看到配置已经生效 ```bash [root@master pod_controller]# kubectl get rs,pod -n dev NAME DESIRED CURRENT READY AGE replicaset.apps/pc-replicaset 6 6 6 8m43s NAME READY STATUS RESTARTS AGE pod/pc-replicaset-2bcwc 1/1 Running 0 39s pod/pc-replicaset-74djl 1/1 Running 0 8m43s pod/pc-replicaset-7744x 1/1 Running 0 39s pod/pc-replicaset-7rqz2 1/1 Running 0 39s pod/pc-replicaset-m5tmz 1/1 Running 0 8m43s pod/pc-replicaset-wlvcm 1/1 Running 0 8m43s [root@master pod_controller]# ``` ## 2.2.2 通过命令的方式扩缩容 如下,通过如下命令将pod数量缩小到2个 ```bash [root@master pod_controller]# kubectl scale rs pc-replicaset --replicas=2 -n dev replicaset.apps/pc-replicaset scaled [root@master pod_controller]# ``` 然后使用如下命令查询,可以发现缩容已经完成 ```bash [root@master pod_controller]# kubectl get rs,pod -n dev NAME DESIRED CURRENT READY AGE replicaset.apps/pc-replicaset 2 2 2 11m NAME READY STATUS RESTARTS AGE pod/pc-replicaset-m5tmz 1/1 Running 0 11m pod/pc-replicaset-wlvcm 1/1 Running 0 11m [root@master pod_controller]# ``` ## 2.3 ReplicaSet实现镜像版本的升降级 ## 2.3.1 通过修改配置文件的方式升级镜像版本 编辑yaml文件,修改镜像版本为1.17.3,如下: ```yaml apiVersion: v1 kind: Namespace metadata: name: dev --- 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.3 ``` 然后使用如下命令使配置生效 ```bash [root@master pod_controller]# kubectl apply -f replicaset.yaml namespace/dev unchanged replicaset.apps/pc-replicaset configured [root@master pod_controller]# ``` 通过如下命令,可以发现镜像版本已经升级 ```bash [root@master pod_controller]# kubectl get rs,pod -n dev -o wide NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR replicaset.apps/pc-replicaset 2 2 2 15m nginx nginx:1.17.3 app=nginx-pod NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pod/pc-replicaset-m5tmz 1/1 Running 0 15m 10.244.1.23 node1
pod/pc-replicaset-wlvcm 1/1 Running 0 15m 10.244.1.24 node1
[root@master pod_controller]# ``` ### 2.3.2 通过命令的方式对镜像版本升降级 使用如下命令,将镜像版本再降到1.17.1 ```bash [root@master pod_controller]# kubectl set image rs pc-replicaset nginx=nginx:1.17.1 -n dev replicaset.apps/pc-replicaset image updated [root@master pod_controller]# ``` 通过如下命令查询,可以发现已经生效 ```bash [root@master pod_controller]# kubectl get rs,pod -n dev -o wide NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR replicaset.apps/pc-replicaset 2 2 2 17m nginx nginx:1.17.1 app=nginx-pod NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pod/pc-replicaset-m5tmz 1/1 Running 0 17m 10.244.1.23 node1
pod/pc-replicaset-wlvcm 1/1 Running 0 17m 10.244.1.24 node1
[root@master pod_controller]# ``` ## 2.4 删除ReplicaSet ### 2.4.1 命令行方式删除ReplicaSet以及Pod 使用如下命令删除,在删除ReplicaSet前,会先把pod数量调整为0,等所有pod都删除后,再删除ReplicaSet ```bash kubectl delete rs pc-replicaset -n dev ``` ### 2.4.2 仅删除ReplicaSet,保留Pod 使用如下命令即可 ```bash kubectl delete rs pc-replicaset -n dev --cascade=false ``` ### 2.4.3 使用yaml文件删除 使用如下命令(推荐) ```bash kubectl delete -f replicaset.yaml ```
始终坚持开源开放共享精神,同时感谢您的充电鼓励和支持!
版权所有,转载本站文章请注明出处:redrose2100, http://blog.redrose2100.com/article/270
上一篇:
Kubernetes----Pod控制器简介
下一篇:
Kubernetes----Deployment控制器
搜索
个人成就
出版书籍
《Pytest企业级应用实战》
测试开发技术全栈公众号
测试开发技术全栈公众号
DevOps技术交流微信群
加微信邀请进群
常用网站链接
开源软件洞察
云原生技术栈全景图
Python语言官方文档
Golang官方文档
Docker官方文档
Jenkins中文用户手册
Scrapy官方文档
VUE官方文档
Harbor官方文档
openQA官方文档
云原生开源社区
开源中国
Kubernetes中文文档
Markdown语法官方教程
Kubernetes中文社区
Kubersphere官方文档
BootStrap中文网站
JavaScript中文网
NumPy官方文档
Pandas官方文档
GitLink确实开源网站
数据库排名网站
编程语言排名网站
SEO综合查询网站
数学加减法练习自动生成网站
Kickstart Generator
文章分类
最新文章
最多阅读
特别推荐
×
Close
登录
注册
找回密码
登录邮箱:
登录密码:
图片验证码:
注册邮箱:
注册密码:
邮箱验证码:
发送邮件
注册邮箱:
新的密码:
邮箱验证码:
发送邮件