弹性容器实例(VCI)基于 OpenKruise 的原地升级功能,支持 VCI Pod 原地重启能力。本文介绍如何使用 Openkruise 对 VCI Pod 进行原地升级。
OpenKruise 是基于 Kubernetes 的一个扩展套件,主要聚焦于云原生应用的自动化,例如部署、发布、运维以及可用性防护。通过在 VKE 中部署 OpenKruise,可以实现对工作负载中的 Pod 进行原地升级。详细说明,请参见 OpenKruise 原地升级。
vci-openkruise.yaml
代码如下:apiVersion: apps.kruise.io/v1alpha1 kind: CloneSet metadata: labels: app: vci-cloneset name: vci-cloneset spec: replicas: 5 # CloneSet 副本数。 selector: matchLabels: app: vci-cloneset template: metadata: annotations: vke.volcengine.com/burst-to-vci: enforce # 强制部署到 VCI 上。 labels: app: vci-cloneset spec: containers: - name: nginx image: cr-cn-beijing.volces.com/tw/nginx:1.0 # 容器镜像的地址和版本,请配置为您自己的镜像地址。
本示例中命令如下:kubectl apply -f <CloneSet 的 YAML 配置文件路径>
kubectl apply -f vci-openkruise.yaml
本示例中命令如下:kubectl get pods -l <与 CloneSet 相关的标签键>=<标签值>
从返回信息的kubectl get pods -l cloneset=vci-cloneset
NAME
字段下获取 Pod 的名称。本示例中命令如下:kubectl describe pod <Pod 的名称>
从返回信息的 Annotation:kubectl describe pod vci-cloneset-79886764b9-fm7tn
vci.vke.volcengine.com/instance-id
中获取 VCI 实例 ID。image
字段更新为其他版本的容器镜像。示例 YAML 内容如下:apiVersion: apps.kruise.io/v1alpha1 kind: CloneSet metadata: labels: app: vci-cloneset name: vci-cloneset spec: replicas: 5 selector: matchLabels: app: vci-cloneset template: metadata: annotations: vke.volcengine.com/burst-to-vci: enforce # 强制部署到 VCI 上。 labels: app: vci-cloneset spec: containers: - name: nginx image: cr-cn-beijing.volces.com/tw/nginx:1.1 # 容器镜像的地址和版本,请配置为您自己的镜像地址。本示例将原先的镜像 tag:1.0 替换为 1.1。