You need to enable JavaScript to run this app.
导航
VCI Pod 原地重启
最近更新时间:2024.08.06 14:29:17首次发布时间:2024.08.06 14:29:17

弹性容器实例(VCI)基于 OpenKruise 的原地升级功能,支持 VCI Pod 原地重启能力。本文介绍如何使用 Openkruise 对 VCI Pod 进行原地升级。

背景信息

OpenKruise 是基于 Kubernetes 的一个扩展套件,主要聚焦于云原生应用的自动化,例如部署、发布、运维以及可用性防护。通过在 VKE 中部署 OpenKruise,可以实现对工作负载中的 Pod 进行原地升级。详细说明,请参见 OpenKruise 原地升级

使用说明

前提条件

操作步骤

  1. 在 VCI 业务集群中,安装 OpenKruise(VKE 应用模板名称为 Kruise)。详细操作,请参见 应用模板
    alt
  2. 通过 kubectl 创建一个 OpenKruise 的 Workload,并指定部署到 VCI。示例 YAML 文件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  # 容器镜像的地址和版本,请配置为您自己的镜像地址。
    
  3. 执行如下命令,创建 OpenKruise 的 Workload(本示例中为 CloneSet)。
    kubectl apply -f <CloneSet 的 YAML 配置文件路径>
    
    本示例中命令如下:
    kubectl apply -f vci-openkruise.yaml
    
  4. 成功创建 Workload 后,查看并记录 Pod 的名称和 VCI 实例 ID。
    1. 执行以下命令获取 CloneSet 下 Pod 的名称。
      kubectl get pods -l <与 CloneSet 相关的标签键>=<标签值>
      
      本示例中命令如下:
      kubectl get pods -l cloneset=vci-cloneset
      
      从返回信息的NAME字段下获取 Pod 的名称。
    2. 执行以下命令,查看 Pod 的详情,获取 VCI 实例 ID。
      kubectl describe pod <Pod 的名称>
      
      本示例中命令如下:
      kubectl describe pod vci-cloneset-79886764b9-fm7tn
      
      从返回信息的 Annotation:vci.vke.volcengine.com/instance-id 中获取 VCI 实例 ID。
  5. 修改 Workload 的 YAML,将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。
    
  6. 再次查看并记录 Workload 中 Pod 的名称和 VCI 实例 ID。
    Pod 将会重新拉取镜像,但 Pod 的名称和 VCI 实例 ID 不会发生变化。