暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
控制器-replicaset.docx
29
5页
2次
2025-03-28
100墨值下载
### 6.2 ReplicaSet
rs
-
较少单独使用
```
rs
的主要作用是保证一定数量
pod
正常运行,它会持续监听这
pod
的运行状态,一旦
pod
发生障就重启重建同时支持
pod
数量扩容缩容镜像本升、降
级。
```
![rs.png]
(hps://note.youdao.com/yws/res/61818/WEBRESOURCE437bae267250b98511a7194569d8b11
a)
> ReplicaSet
的资源清单
```
apiVersion: apps/v1 #
指定
api
版本
kind: ReplicaSet #
指定资源类型
metadata: #
元数据
name: # rs
名称
namespace: #
所属命名空间
labels: #
标签
controller: rs
spec: #
详情描述
replicas: 3 #
副本数量
selector: #
选择器,通过它指定该控制器管理哪些
pod
matchLabels: #
标签匹配规则
match n.
匹配
app: nginx-pod
matchExpressions: # Expressions
匹配规则
- {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
)。
1 / 5
selector
:标签选择器,它的作用就是建立
pod
控制器和
pod
之间的关联关系,采用的
Label
Selector
机制,在
pod
模板上定义标签(
label
),在控制器上定义选择器,就可以表明当前
控制器能管理哪些
pod
了。
template
:模板,就是当前控制器创建
pod
所使用的模板,里面其实就是前一章学过的
pod
的定义。
/ˈtemplət/ n.
模板
```
#### 6.2.1
创建
rs
```
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.20.0
2.
创建
rs
[root@master ~]# kubectl create -f pc-replicaset.yaml
3.
查看
rs
[root@master ~]# kubectl get rs -n dev -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
pc-replicaset 3 3 3 81s nginx nginx:1.20.0 app=nginx-pod
#
字段解释
DESIRED
:期望副本数量
desired /dɪˈzaɪrd/ adj.
期望得到的
CURRENT
:当前副本数量
current /ˈkɜːrənt/ adj.
当前的
READY
:已经准备好提供服务的副本数量
ready /ˈredi/ adj.
准备好的
4.
查看当前控制器创建出来的
pod
(这里发现控制器创建出来的
pod
的名称是在控制器名称
后面拼接了
-xxxxx
随机码)
[root@master ~]# kubectl get pod -n dev
NAME READY STATUS RESTARTS AGE
pc-replicaset-g9jvs 1/1 Running 0 2m54s
2 / 5
pc-replicaset-tb5sg 1/1 Running 0 2m54s
pc-replicaset-wr45z 1/1 Running 0 2m54s
[root@master ~]#
```
#### 6.2.2
扩容与缩容
##### 6.2.2.1
通过
kubectl edit rs
命令扩缩容
```
1.
语法:
Kubectl edit [
资源类型
] [
资源对象
] -n
命名空间
2.
范例:
[root@master ~]# kubectl edit rs pc-replicaset -n dev
3.
查看
pod
,发现
pod
已经从
3
个变成
6
个了。
[root@master ~]# kubectl get rs pc-replicaset -n dev
NAME DESIRED CURRENT READY AGE
pc-replicaset 6 6 6 119m
```
##### 6.2.2.2
通过
kubectl scale rs
命令扩缩容
```
1.
语法:
kubectl scale --replicas=
副本数
rs <rs_name> -n
命名空间
2.
范例
[root@master ~]# kubectl scale --replicas=2 rs pc-replicaset -n dev
3.
查看
pod
,发现
pod
已经从
6
个变成
2
个了。
[root@master ~]# kubectl get rs pc-replicaset -n dev
NAME DESIRED CURRENT READY AGE
pc-replicaset 2 2 2 118m
```
#### 6.2.3
镜像更新
##### 6.2.3.1
通过
kubectl edit rs
命令更新
```
1.
命令:
kubectl edit rs <rs_name> -n
命名空间
2.
"- image: nginx:1.20.0"
修改为
"- image: nginx:1.26.0"
,就是将
nginx
1.20.0
升级到
1.26.0
[root@master ~]# kubectl edit rs pc-replicaset -n dev
3.
查看版本,发现镜像版本已从
1.20.0
变成
1.26.0
[root@master ~]# kubectl get rs pc-replicaset -n dev -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
pc-replicaset 2 2 2 26m nginx nginx:1.26.0 app=nginx
```
##### 6.2.3.2
通过
kubectl set image
命令更新
3 / 5
of 5
100墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。