12.3. Nutanix 安装后配置


完成并验证 OpenShift Container Platform 与 Nutanix 云供应商的集成。

注意

默认情况下,安装程序会下载并安装 Red Hat Enterprise Linux CoreOS (RHCOS)镜像。如果 Prism Central 无法访问互联网,您可以在任何 HTTP 服务器上托管 RHCOS 镜像,并将安装程序指向镜像,也可以使用 Prism Central 手动上传镜像。

12.3.1. 更新 Nutanix 配置设置

使用 Assisted Installer 在 Nutanix 平台上安装 OpenShift Container Platform 后,手动更新以下 Nutanix 配置设置。

先决条件

  • 您有 Nutanix Prism Element 用户名。
  • 您有 Nutanix Prism Element 密码。
  • 您有 Nutanix Prism 存储容器。
  • Assisted Installer 成功完成安装集群。
  • 您已将集群连接到 console.redhat.com
  • 您可以访问 Red Hat OpenShift Container Platform 命令行界面。

流程

  1. 在 OpenShift Container Platform 命令行界面中,更新 Nutanix 集群配置设置:

    $ oc patch infrastructure/cluster --type=merge --patch-file=/dev/stdin <<-EOF
    {
      "spec": {
        "platformSpec": {
          "nutanix": {
            "prismCentral": {
              "address": "<prismcentral_address>", 
    1
    
              "port": <prismcentral_port> 
    2
    
            },
            "prismElements": [
              {
                "endpoint": {
                  "address": "<prismelement_address>", 
    3
    
                  "port": <prismelement_port> 
    4
    
                },
                "name": "<prismelement_clustername>" 
    5
    
              }
            ]
          },
          "type": "Nutanix"
        }
      }
    }
    EOF
    Copy to Clipboard Toggle word wrap
    1
    <prismcentral_address& gt; 替换为 Nutanix Prism Central 地址。
    2
    <prismcentral_port> 替换为 Nutanix Prism Central 端口。
    3
    <prismelement_address& gt; 替换为 Nutanix Prism Element 地址。
    4
    <prismelement_port> 替换为 Nutanix Prism Element 端口。
    5
    <prismelement_clustername> 替换为 Nutanix Prism Element 集群名称。

    输出示例

    infrastructure.config.openshift.io/cluster patched
    Copy to Clipboard Toggle word wrap

    如需了解更多详细信息,请参阅在 Nutanix 上创建计算机器集

    注意

    可选:您可以定义 prism category 键值对。这些类别键值对必须在 Prism Central 中存在。您可以为计算节点、control plane 节点或所有节点在单独的类别中定义键值对。

  2. 创建 Nutanix secret:

    $ cat <<EOF | oc create -f -
    apiVersion: v1
    kind: Secret
    metadata:
       name: nutanix-credentials
       namespace: openshift-machine-api
    type: Opaque
    stringData:
      credentials: |
    [{"type":"basic_auth","data":{"prismCentral":{"username":"${<prismcentral_username>}","password":"${<prismcentral_password>}"},"prismElements":null}}] 
    1
     
    2
    
    EOF
    Copy to Clipboard Toggle word wrap
    1
    <prismcentral_username& gt; 替换为 Nutanix Prism Central 用户名。
    2
    <prismcentral_password& gt; 替换为 Nutanix Prism Central 密码。

    输出示例

    secret/nutanix-credentials created
    Copy to Clipboard Toggle word wrap

  3. 安装 OpenShift Container Platform 版本 4.13 或更高版本时,更新 Nutanix 云提供商配置:

    1. 获取 Nutanix 云提供商配置 YAML 文件:

      $ oc get cm cloud-provider-config -o yaml -n openshift-config > cloud-provider-config-backup.yaml
      Copy to Clipboard Toggle word wrap
    2. 创建一个配置文件的备份:

      $ cp cloud-provider-config_backup.yaml cloud-provider-config.yaml
      Copy to Clipboard Toggle word wrap
    3. 打开配置 YAML 文件:

      $ vi cloud-provider-config.yaml
      Copy to Clipboard Toggle word wrap
    4. 编辑配置 YAML 文件,如下所示:

      kind: ConfigMap
      apiVersion: v1
      metadata:
        name: cloud-provider-config
        namespace: openshift-config
      data:
        config: |
          {
          	"prismCentral": {
          		"address": "<prismcentral_address>",
          		"port":<prismcentral_port>,
          		"credentialRef": {
          		   "kind": "Secret",
          		   "name": "nutanix-credentials",
          		   "namespace": "openshift-cloud-controller-manager"
          		}
          	},
          	"topologyDiscovery": {
          		"type": "Prism",
          		"topologyCategories": null
          	},
          	"enableCustomLabeling": true
          }
      Copy to Clipboard Toggle word wrap
    5. 应用配置更新:

      $ oc apply -f cloud-provider-config.yaml
      Copy to Clipboard Toggle word wrap

      输出示例

      Warning: resource configmaps/cloud-provider-config is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by oc apply. oc apply should only be used on resources created declaratively by either oc create --save-config or oc apply. The missing annotation will be patched automatically.
      
      configmap/cloud-provider-config configured
      Copy to Clipboard Toggle word wrap

12.3.2. 创建 Nutanix CSI Operator 组

为 Nutanix CSI Operator 创建一个 Operator 组。

有关 operator 组和相关概念的描述,请参阅 通用 Operator Framework 术语

先决条件

  • 您已更新了 Nutanix 配置设置。

流程

  1. 打开 Nutanix CSI Operator Group YAML 文件:

    $ vi openshift-cluster-csi-drivers-operator-group.yaml
    Copy to Clipboard Toggle word wrap
  2. 编辑 YAML 文件,如下所示:

    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      generateName: openshift-cluster-csi-drivers
      namespace: openshift-cluster-csi-drivers
    spec:
      targetNamespaces:
      - openshift-cluster-csi-drivers
      upgradeStrategy: Default
    Copy to Clipboard Toggle word wrap
  3. 创建 Operator 组:

    $ oc create -f openshift-cluster-csi-drivers-operator-group.yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    operatorgroup.operators.coreos.com/openshift-cluster-csi-driversjw9cd created
    Copy to Clipboard Toggle word wrap

12.3.3. 安装 Nutanix CSI Operator

Kubernetes 的 Nutanix Container Storage Interface (CSI) Operator 部署和管理 Nutanix CSI 驱动程序。

有关通过 OpenShift Container Platform Web 控制台执行此步骤的说明,请参阅 Nutanix CSI Operator 文档中的 安装 Operator 部分。

先决条件

  • 您已创建了 Nutanix CSI Operator 组。

流程

  1. 获取 Nutanix CSI Operator YAML 文件的参数值:

    1. 检查 Nutanix CSI Operator 是否存在:

      $ oc get packagemanifests | grep nutanix
      Copy to Clipboard Toggle word wrap

      输出示例

      nutanixcsioperator   Certified Operators   129m
      Copy to Clipboard Toggle word wrap

    2. 将 Operator 的默认渠道分配给一个 BASH 变量:

      $ DEFAULT_CHANNEL=$(oc get packagemanifests nutanixcsioperator -o jsonpath={.status.defaultChannel})
      Copy to Clipboard Toggle word wrap
    3. 将 Operator 的起始集群服务版本(CSV)分配给一个 BASH 变量:

      $ STARTING_CSV=$(oc get packagemanifests nutanixcsioperator -o jsonpath=\{.status.channels[*].currentCSV\})
      Copy to Clipboard Toggle word wrap
    4. 将订阅的目录源分配给一个 BASH 变量:

      $ CATALOG_SOURCE=$(oc get packagemanifests nutanixcsioperator -o jsonpath=\{.status.catalogSource\})
      Copy to Clipboard Toggle word wrap
    5. 将 Nutanix CSI Operator 源命名空间分配给一个 BASH 变量:

      $ SOURCE_NAMESPACE=$(oc get packagemanifests nutanixcsioperator -o jsonpath=\{.status.catalogSourceNamespace\})
      Copy to Clipboard Toggle word wrap
  2. 使用 BASH 变量创建 Nutanix CSI Operator YAML 文件:

    $ cat << EOF > nutanixcsioperator.yaml
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: nutanixcsioperator
      namespace: openshift-cluster-csi-drivers
    spec:
      channel: $DEFAULT_CHANNEL
      installPlanApproval: Automatic
      name: nutanixcsioperator
      source: $CATALOG_SOURCE
      sourceNamespace: $SOURCE_NAMESPACE
      startingCSV: $STARTING_CSV
    EOF
    Copy to Clipboard Toggle word wrap
  3. 创建 CSI Nutanix Operator:

    $ oc apply -f nutanixcsioperator.yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    subscription.operators.coreos.com/nutanixcsioperator created
    Copy to Clipboard Toggle word wrap

  4. 运行以下命令,直到 Operator 订阅状态变为 AtLatestKnown。这表示已创建了 Operator 订阅,可能需要一些时间。

    $ oc get subscription nutanixcsioperator -n openshift-cluster-csi-drivers -o 'jsonpath={..status.state}'
    Copy to Clipboard Toggle word wrap

12.3.4. 部署 Nutanix CSI 存储驱动程序

Kubernetes 的 Nutanix Container Storage Interface (CSI)驱动程序为有状态的应用程序提供可扩展的和持久的存储。

有关通过 OpenShift Container Platform Web 控制台执行此步骤的说明,请参阅 Nutanix CSI Operator 文档中的使用 Operator 安装 CSI Driver 部分。

先决条件

  • 已安装 Nutanix CSI Operator。

流程

  1. 创建一个 NutanixCsiStorage 资源来部署驱动程序:

    $ cat <<EOF | oc create -f -
    apiVersion: crd.nutanix.com/v1alpha1
    kind: NutanixCsiStorage
    metadata:
      name: nutanixcsistorage
      namespace: openshift-cluster-csi-drivers
    spec: {}
    EOF
    Copy to Clipboard Toggle word wrap

    输出示例

    snutanixcsistorage.crd.nutanix.com/nutanixcsistorage created
    Copy to Clipboard Toggle word wrap

  2. 为 CSI 存储驱动程序创建一个 Nutanix secret YAML 文件:

    $ cat <<EOF | oc create -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: ntnx-secret
      namespace: openshift-cluster-csi-drivers
    stringData:
      # prism-element-ip:prism-port:admin:password
      key: <prismelement_address:prismelement_port:prismcentral_username:prismcentral_password> 
    1
    
    EOF
    Copy to Clipboard Toggle word wrap
    1
    使用实际值替换这些参数,并保持相同的格式。

    输出示例

    secret/nutanix-secret created
    Copy to Clipboard Toggle word wrap

12.3.5. 验证安装后配置

验证您是否可以创建存储类和绑定的持久性卷声明。

先决条件

  • 您已部署了 Nutanix CSI 存储驱动程序。

流程

  1. 验证您是否可以创建一个存储类:

    $ cat <<EOF | oc create -f -
    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: nutanix-volume
      annotations:
        storageclass.kubernetes.io/is-default-class: 'true'
    provisioner: csi.nutanix.com
    parameters:
      csi.storage.k8s.io/fstype: ext4
      csi.storage.k8s.io/provisioner-secret-namespace: openshift-cluster-csi-drivers
      csi.storage.k8s.io/provisioner-secret-name: ntnx-secret
      storageContainer: <nutanix_storage_container> 
    1
    
      csi.storage.k8s.io/controller-expand-secret-name: ntnx-secret
      csi.storage.k8s.io/node-publish-secret-namespace: openshift-cluster-csi-drivers
      storageType: NutanixVolumes
      csi.storage.k8s.io/node-publish-secret-name: ntnx-secret
      csi.storage.k8s.io/controller-expand-secret-namespace: openshift-cluster-csi-drivers
    reclaimPolicy: Delete
    allowVolumeExpansion: true
    volumeBindingMode: Immediate
    EOF
    Copy to Clipboard Toggle word wrap
    注意
    1
    从 Nutanix 配置中获取 <nutanix_storage_container>,例如 SelfServiceContainer。

    输出示例

    storageclass.storage.k8s.io/nutanix-volume created
    Copy to Clipboard Toggle word wrap

  2. 验证您是否可以创建 Nutanix 持久性卷声明(PVC):

    1. 创建持久性卷声明(PVC):

      $ cat <<EOF | oc create -f -
      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: nutanix-volume-pvc
        namespace: openshift-cluster-csi-drivers
        annotations:
          volume.beta.kubernetes.io/storage-provisioner: csi.nutanix.com
          volume.kubernetes.io/storage-provisioner: csi.nutanix.com
        finalizers:
          - kubernetes.io/pvc-protection
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 1Gi
        storageClassName: nutanix-volume
        volumeMode: Filesystem
      EOF
      Copy to Clipboard Toggle word wrap

      输出示例

      persistentvolumeclaim/nutanix-volume-pvc created
      Copy to Clipboard Toggle word wrap

    2. 验证持久性卷声明(PVC)状态是否为 Bound:

      $ oc get pvc -n openshift-cluster-csi-drivers
      Copy to Clipboard Toggle word wrap

      输出示例

      NAME                 STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS     AGE
      nutanix-volume-pvc   Bound                                        nutanix-volume   52s
      Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat