本文主要介绍如何在容器服务(VKE)上创建和使用弹性容器实例(VCI)类型的 DaemonSet(守护进程)的方法。
在 VKE 上创建了部署在 VCI 上的 Daemonset 之后,每个虚拟节点(Virtual Node)会启动一个 Sidecar Container “虚拟 Pod”,不存在“实体 Pod”。
VKE 上创建和使用 VCI 类型的 DaemonSet 流程如下:
创建 DaemonSet 时通过 Annotation 方式指定当前 DaemonSet 可以注入至 VCI Pod 中。
Annotation 说明,如下所示:
Annotation Key | Annotation Value 示例值 | 说明 | 是否必填 |
---|---|---|---|
vci.vke.volcengine.com/enable-daemonset-injection | "true" | 是否开启 VCI 类型的 DaemonSet 以 Sidecar Container 形式注入到业务 VCI Pod 中。取值如下:
| 本场景必选 |
完整的 YAML 示例代码如下所示:
apiVersion: apps/v1 kind: DaemonSet metadata: name: nginx-daemonset # Daemonset 名称。 namespace: default # Daemonset 所属的命名空间。 spec: selector: matchLabels: app: nginx template: metadata: annotations: vci.vke.volcengine.com/enable-daemonset-injection: "true" # 开启 VCI 类型的 Daemonset 注入到 VCI Pod 的能力。 labels: app: nginx spec: containers: - name: nginx # 容器名称。 image: nginx:1.14.2 # 容器镜像的地址和版本,请配置为您自己的镜像地址。若使用公网镜像,请确保您的集群能够访问公网。 ports: - containerPort: 80 # adjust port for your container tolerations: # 调度容忍,添加该 Toleration 才可创建 DaemonSet 对应的 VCI 实例。 - effect: NoSchedule key: vci.vke.volcengine.com/node-type operator: Equal value: vci
创建 VCI Pod 时,通过 Annotation 为当前 Pod 关联指定的 VCI DaemonSet。
Annotation 说明,如下所示:
Annotation Key | Annotation Value 示例值 | 说明 | 是否必填 |
---|---|---|---|
vci.vke.volcengine.com/injected-daemonset-names | ns1_vci-ds-log-service, ns2_vci-ds-monitor-service | 当前 Pod 需要以 Sidecar Container 方式注入的 VCI Daemonset 列表。取值要求如下:
| 本场景必选 |
本文以指定 VCI 规格创建 VCI Pod 为例,在创建 VCI Pod 过程中指定关联 VCI DaemonSet。 更多创建 VCI Pod 的方法和详细操作说明,请参见 创建实例。
完整的 YAML 示例代码如下所示:
apiVersion: v1 kind: Pod metadata: name: demo-gpu-1 # Pod 名称。 namespace: default # Pod 所属命名空间。 annotations: vke.volcengine.com/burst-to-vci: enforce #强制使用 VCI。 vci.vke.volcengine.com/preferred-instance-types: vci.u1.2c-4gi #指定 VCI 实例规格。 vci.vke.volcengine.com/injected-daemonset-names: ns1_vci-ds-log-service, ns2_vci-ds-monitor-service #当前 Pod 需要以 Sidecar Container 方式注入的 VCI Daemonset 列表。 spec: containers: - image: cr-cn-beijing.volces.com/****/nginx:1.0 # 容器镜像的地址和版本,请配置为您自己的镜像地址。若使用公网镜像,请确保您的集群能够访问公网。 imagePullPolicy: Always name: nginx resources: requests: #指定容器的 vCPU、内存、GPU。 cpu: 37 nvidia.com/gpu: 2 #指定容器的 GPU 卡数(同原生),可以同时指定 limits 和 requests,但值必须相等。 limits: cpu: 37 nvidia.com/gpu: 2