5 ReplicaSet

ReplicaSet基础

ReplicaSet 的目的是维护一组在任何时候都处于运行状态的 Pod 副本的稳定集合。 因此,它通常用来保证给定数量的、完全相同的 Pod 的可用性。

RepicaSet 是通过一组字段来定义的,包括一个用来识别可获得的 Pod 的集合的选择算符、一个用来标明应该维护的副本个数的数值、一个用来指定应该创建新 Pod 以满足副本个数条件时要使用的 Pod 模板等等。 每个 ReplicaSet 都通过根据需要创建和 删除 Pod 以使得副本个数达到期望值, 进而实现其存在价值。当 ReplicaSet 需要创建新的 Pod 时,会使用所提供的 Pod 模板。

ReplicaSet 确保任何时间都有指定数量的 Pod 副本在运行。 然而,Deployment 是一个更高级的概念,它管理 ReplicaSet,并向 Pod 提供声明式的更新以及许多其他有用的功能。 因此,我们建议使用 Deployment 而不是直接使用 ReplicaSet,除非 你需要自定义更新业务流程或根本不需要更新。
这实际上意味着,你可能永远不需要操作 ReplicaSet 对象:而是使用 Deployment,并在 spec 部分定义你的应用。

创建ReplicaSet

[root@clientvm ~]# cat replicaset.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: myweb
  namespace: mytest
  labels:
    app: guestbook
    tier: web
spec:
  replicas: 3
  selector:
    matchLabels:
      tier: web
  template:
    metadata:
      labels:
        tier: web
    spec:
      containers:
      - name: nginx
        image: nginx
        imagePullPolicy: IfNotPresent
[root@clientvm ~]# kubectl apply -f replicaset.yaml
replicaset.apps/myweb created
[root@clientvm ~]#
[root@clientvm ~]# kubectl get pod -n mytest
NAME          READY   STATUS              RESTARTS   AGE
myweb-6tvp2   0/1     ContainerCreating   0          11s
myweb-krfmq   0/1     ContainerCreating   0          11s
myweb-l8qhv   0/1     ContainerCreating   0          11s

修改副本数

## 修改RS,设置副本数为1
[root@clientvm ~]# kubectl edit -n mytest rs myweb
replicaset.apps/myweb edited

[root@clientvm ~]# kubectl get pod -n mytest
NAME          READY   STATUS    RESTARTS   AGE
myweb-6tvp2   1/1     Running   0          10m

修改yaml文件

## 修改yaml文件,设置副本数为2
[root@clientvm ~]# vim replicaset.yaml
......
spec:
  replicas: 2

[root@clientvm ~]# kubectl apply -f replicaset.yaml
replicaset.apps/myweb configured
[root@clientvm ~]# kubectl get pod -n mytest
NAME          READY   STATUS    RESTARTS   AGE
myweb-6tvp2   1/1     Running   0          21m
myweb-jtncn   1/1     Running   0          6s

命令行

[root@clientvm ~]# kubectl scale  --replicas=4 replicaset myweb -n mytest
replicaset.apps/myweb scaled
[root@clientvm ~]#
[root@clientvm ~]# kubectl get pod -n mytest
NAME          READY   STATUS    RESTARTS   AGE
myweb-6tvp2   1/1     Running   0          22m
myweb-bmbv8   1/1     Running   0          5s
myweb-glslz   1/1     Running   0          5s
myweb-jtncn   1/1     Running   0          116s

删除RS

[root@clientvm ~]# kubectl delete -n mytest rs myweb
replicaset.apps "myweb" deleted
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值