创建 ReplicaSet

适用于:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS

本文介绍如何在 Azure Arc 启用的 AKS 中创建、缩放和删除 ReplicaSet。ReplicaSet 用于确保一组稳定的副本 (replica) Pod 在任何给定时间运行。

ReplicaSet 概述

ReplicaSet 是一个进程,它运行 Pod 的多个实例并保持指定数量的 Pod 不变。 它确保在任意给定时间运行一组稳定的副本 Pod,这保证了有可用的指定数量的相同 Pod。

当某个 Pod 失败时,ReplicaSet 将启动一个新的 Pod 实例,并当正在运行的实例达到指定数量时进行纵向扩展。 反之,当创建了具有相同标签的实例时,它会纵向缩减或删除 Pod。

创建 ReplicaSet

使用 kubectl createkubectl apply 命令创建 ReplicaSet。 以下示例使用 YAML 文件创建 ReplicaSet:

kubectl apply –f nginx_replicaset.yaml

ReplicaSet 配置文件的功能以 YAML 格式显示:

apiVersion: apps/v1  
kind: ReplicaSet  
metadata: 
      name: web
      labels: 
         env: dev
         role: web
spec:  
   replicas: 4
   selector: 
       matchlabels: 
       role: web
        template:
           metadata:
       labels:
           role: web
spec:  
      containers:  
           -name: nginx  
           image: nginx

创建 ReplicaSet 后,可运行以下命令来查看状态:

kubectl get rs

可使用 kubectl edit 命令更改 Pod 的标签来删除 ReplicaSet 管理的 Pod,但不能删除它。 例如,如果运行 kubectl edit pods 7677-69h5b,则可在配置文件打开后更改 Pod 标签。

缩放 ReplicaSet

有两种方法来更改 ReplicaSet 管理的 Pod 数量。

  • 使用以下命令编辑控制器的配置:

    kubectl edit rs <ReplicaSet_NAME>
    
  • 使用以下命令直接增加或减少数字:

kubectl scale –replicas=2 rs <ReplicaSet_NAME>

编辑清单文件时,可将现有配置替换为更新后的配置:

kubectl replace –f nginx_replicaset.yaml

然后,运行 kubectl get rs <ReplicaSet_NAME> 来要查看 ReplicaSet 的状态。

也可使用 kubectl autoscale rs web –max=5 对 ReplicaSet 执行自动缩放。 可使用自动缩放根据节点的 CPU 负载调整 Pod 数量。

删除 ReplicaSet

与其他 Kubernetes 对象(如 DaemonSets)一样,可以使用 命令删除 ReplicaSet kubectl delete 。 例如,可使用以下命令:

  • 若要使用 ReplicaSet 名称删除 ReplicaSet,请运行以下命令:

    kubectl delete rs <ReplicaSet_NAME>
    
  • 若要使用 ReplicaSet 的文件名删除 ReplicaSet,请运行以下命令:

    kubectl delete –f nginx_replicaset.yaml
    
  • 上述命令会删除 ReplicaSet 及其管理的所有 Pod。 如果只想删除 ReplicaSet 资源,并在没有所有者的情况下保留 Pod,则需要手动删除它们。 若要手动删除 ReplicaSet,请运行以下命令:

    kubectl delete rs <ReplicaSet_NAME> --cascade=false
    

后续步骤