本节介绍如何在 Kubernetes 环境中将 NCP 从 2.5.* 升级到 3.0.x。

  1. 下载安装文件。请参见下载安装文件
  2. 运行以下命令以在当前环境中查看 ConfigMap 和 ncp.ini。
    kubectl describe configmap nsx-ncp-config -n nsx-system
    kubectl describe configmap nsx-node-agent-config -n nsx-system
  3. 根据当前环境编辑 NCP YAML 文件。有关参考,请参见编辑 NCP YAML 文件
    • 您必须在 [nsx_node_agent] 部分定义 ovs_uplink_port
    • image: nsx-ncp 的所有实例替换为新的 NCP 映像名称。
    • 如果使用 Kubernetes 密钥存储 NCP 的证书,请参阅编辑 NCP YAML 文件中有关挂载密钥卷的“更新 NCP 部署规范”部分。
  4. 运行以下命令以检查 NCP YAML 文件的语法:
    kubectl apply -f ncp-<platform_name>.yml --server-dry-run
    响应将列出要创建或更新的资源(在输出中显示为“configured”)。例如,
    customresourcedefinition.apiextensions.k8s.io/nsxerrors.nsx.vmware.com created (server dry run)
    customresourcedefinition.apiextensions.k8s.io/nsxlocks.nsx.vmware.com created (server dry run)
    namespace/nsx-system unchanged (server dry run)
    serviceaccount/ncp-svc-account unchanged (server dry run)
    clusterrole.rbac.authorization.k8s.io/ncp-cluster-role configured (server dry run)
    clusterrole.rbac.authorization.k8s.io/ncp-patch-role configured (server dry run)
    clusterrolebinding.rbac.authorization.k8s.io/ncp-cluster-role-binding unchanged (server dry run)
    clusterrolebinding.rbac.authorization.k8s.io/ncp-patch-role-binding unchanged (server dry run)
    serviceaccount/nsx-node-agent-svc-account unchanged (server dry run)
    clusterrole.rbac.authorization.k8s.io/nsx-node-agent-cluster-role configured (server dry run)
    clusterrolebinding.rbac.authorization.k8s.io/nsx-node-agent-cluster-role-binding unchanged (server dry run)
    configmap/nsx-ncp-config configured (server dry run)
    deployment.extensions/nsx-ncp configured (server dry run)
    configmap/nsx-node-agent-config configured (server dry run)
    daemonset.extensions/nsx-ncp-bootstrap configured (server dry run)
    daemonset.extensions/nsx-node-agent configured (server dry run)
  5. 运行以下命令以删除旧的 NCP 资源:
    kubectl delete deployment nsx-ncp -n nsx-system
  6. 运行以下命令以检查是否所有旧的 NCP Pod 均已终止:
    kubectl get pods -l component=nsx-ncp -n nsx-system

    如果所有旧的 NCP Pod 均已终止,它应不会列出任何 Pod。等待所有 Pod 终止后再继续。

  7. 清除旧的选举锁定。在 NSX Manager Web UI 中,转到“搜索”页面,然后使用以下标记对资源执行高级搜索:
    Scope: ncp\/ha         Tag: true
    Scope: ncp\/cluster    Tag: <name of the cluster in ncp.ini>

    您应看到一个或多个 SpoofGuard 资源。清除这些资源上的所有标记。

  8. 运行以下命令开始升级:
    kubectl apply -f ncp-{platform_name}.yml
  9. 运行以下命令检查升级状态:
    kubectl get pods -o wide -n nsx-system

    输出应显示正在创建的新 Pod,并终止旧 Pod。成功升级后,所有 Pod 的状态均应显示为 Running