5.2.2 创建 ReplicaSet

类似于 Pod 资源,创建 ReplicaSet 控制器对象同样可以使用 YAML 或 JSON 格式的清单文件定义其配置,而后使用相关的创建命令来完成资源创建。前面 5.1.3 节中给出的示例清单就是一个简单的 ReplicaSet 的定义。它也由 kind、apiVersion、metadata、spec 和 status 这五个一级字段组成,其中 status 为只读字段,因此需要在清单文件中配置的仅为前 4 个字段。它的 spec 字段一般嵌套使用以下几个属性字段。

  • replicas <interger>:期望的 Pod 对象副本数。
  • selector <Object>:当前控制器匹配 Pod 对象副本的标签选择器,支持 matchLabels 和 matchExpressions 两种匹配机制。
  • template <Object>:用于补足 Pod 副本数量时使用的 Pod 模版资源。
  • minReadySeconds <interger>: 新建的 Pod 对象,在启动后的多长时间内如果其容器未发生崩溃等异常情况即被视为“就绪”;默认为0秒,表示一旦就绪性探测成功,即被视作可用。

将 5.1.3 节中的示例保存与资源清单文件中,例如 rs-example.yaml,而后即可使用如下命令将其创建:

**[terminal]
**[delimiter $ ]**[command kubectl apply -f rs-example.yaml]
replicaset.apps/rs-example created

集群中当前没有标签为 “app: rs-demo” 的 Pod 资源存在,因此 rs-example 需要按照 replicas 字段定义创建它们,名称以其所属的控制器名称为前缀。这两个 Pod 资源目前都处于 ContainerCreating 状态,即处于容器创建过程中,待创建过程完成后,其状态即转为 Running,Pod 也将转变为 “READY”:

**[terminal]
**[delimiter $ ]**[command kubectl get pods -l app=rs-demo]
NAME               READY   STATUS              RESTARTS   AGE
rs-example-97snc   0/1     ContainerCreating   0          2s
rs-example-vrz2n   0/1     ContainerCreating   0          2s

接下来可以使用 “kubectl get replicaset” 命令查看 ReplicaSet 控制器资源的相关状态。下面的命令结果显示出它已经根据清单中配置的 Pod 模版创建了 2 个 Pod 资源,不过这时他们尚未创建完成,因此仍为“READY”:

**[terminal]
**[delimiter $ ]**[command kubectl get replicaset rs-example -o wide]
NAME         DESIRED   CURRENT   READY   AGE   CONTAINERS   IMAGES                 SELECTOR
rs-example   2         2         2       4s    myapp        ikubernetes/myapp:v1   app=rs-demo

经由控制器创建与用户自主创建的 Pod 对象的功能并无二致,但其自动和解的功能在很大程度上能为用户省去不少的管理精力,这也是使用 Kubernetes 系统之上的应用程序变得拥有自愈能力的主要保障。

results matching ""

    No results matching ""