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 命令行界面。
流程
在 OpenShift Container Platform 命令行界面中,更新 Nutanix 集群配置设置:
$ oc patch infrastructure/cluster --type=merge --patch-file=/dev/stdin <<-EOF { "spec": { "platformSpec": { "nutanix": { "prismCentral": { "address": "<prismcentral_address>", "port": <prismcentral_port> }, "prismElements": [ { "endpoint": { "address": "<prismelement_address>", "port": <prismelement_port> }, "name": "<prismelement_clustername>" } ] }, "type": "Nutanix" } } } EOF-
将
<prismcentral_address> 替换为 Nutanix Prism Central 地址。 -
将
<prismcentral_port>替换为 Nutanix Prism Central 端口。 -
将
<prismelement_address> 替换为 Nutanix Prism Element 地址。 -
将
<prismelement_port>替换为 Nutanix Prism Element 端口。 -
将
<prismelement_clustername>替换为 Nutanix Prism Element 集群名称。
输出示例
infrastructure.config.openshift.io/cluster patched如需了解更多详细信息,请参阅在 Nutanix 上创建计算机器集。
注意可选:您可以定义 prism category 键值对。这些类别键值对必须在 Prism Central 中存在。您可以为计算节点、control plane 节点或所有节点在单独的类别中定义键值对。
-
将
创建 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}}] EOF-
将
<prismcentral_username> 替换为 Nutanix Prism Central 用户名。 -
将
<prismcentral_password> 替换为 Nutanix Prism Central 密码。
输出示例
secret/nutanix-credentials created-
将
安装 OpenShift Container Platform 版本 4.13 或更高版本时,更新 Nutanix 云提供商配置:
获取 Nutanix 云提供商配置 YAML 文件:
$ oc get cm cloud-provider-config -o yaml -n openshift-config > cloud-provider-config-backup.yaml创建一个配置文件的备份:
$ cp cloud-provider-config_backup.yaml cloud-provider-config.yaml打开配置 YAML 文件:
$ vi cloud-provider-config.yaml编辑配置 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 }应用配置更新:
$ oc apply -f cloud-provider-config.yaml输出示例
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
12.3.2. 创建 Nutanix CSI Operator 组 复制链接链接已复制到粘贴板!
为 Nutanix CSI Operator 创建一个 Operator 组。
有关 operator 组和相关概念的描述,请参阅了解 Operator。
先决条件
- 您已更新了 Nutanix 配置设置。
流程
打开 Nutanix CSI Operator Group YAML 文件:
$ vi openshift-cluster-csi-drivers-operator-group.yaml编辑 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创建 Operator 组:
$ oc create -f openshift-cluster-csi-drivers-operator-group.yaml输出示例
operatorgroup.operators.coreos.com/openshift-cluster-csi-driversjw9cd created
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 组。
流程
获取 Nutanix CSI Operator YAML 文件的参数值:
检查 Nutanix CSI Operator 是否存在:
$ oc get packagemanifests | grep nutanix输出示例
nutanixcsioperator Certified Operators 129m将 Operator 的默认渠道分配给一个 BASH 变量:
$ DEFAULT_CHANNEL=$(oc get packagemanifests nutanixcsioperator -o jsonpath={.status.defaultChannel})将 Operator 的起始集群服务版本(CSV)分配给一个 BASH 变量:
$ STARTING_CSV=$(oc get packagemanifests nutanixcsioperator -o jsonpath=\{.status.channels[*].currentCSV\})将订阅的目录源分配给一个 BASH 变量:
$ CATALOG_SOURCE=$(oc get packagemanifests nutanixcsioperator -o jsonpath=\{.status.catalogSource\})将 Nutanix CSI Operator 源命名空间分配给一个 BASH 变量:
$ SOURCE_NAMESPACE=$(oc get packagemanifests nutanixcsioperator -o jsonpath=\{.status.catalogSourceNamespace\})
使用 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创建 CSI Nutanix Operator:
$ oc apply -f nutanixcsioperator.yaml输出示例
subscription.operators.coreos.com/nutanixcsioperator created运行以下命令,直到 Operator 订阅状态变为
AtLatestKnown。这表示已创建了 Operator 订阅,可能需要一些时间。$ oc get subscription nutanixcsioperator -n openshift-cluster-csi-drivers -o 'jsonpath={..status.state}'
12.3.4. 部署 Nutanix CSI 存储驱动程序 复制链接链接已复制到粘贴板!
Kubernetes 的 Nutanix Container Storage Interface (CSI)驱动程序为有状态的应用程序提供可扩展的和持久的存储。
有关通过 OpenShift Container Platform Web 控制台执行此步骤的说明,请参阅 Nutanix CSI Operator 文档中的使用 Operator 安装 CSI Driver 部分。
先决条件
- 已安装 Nutanix CSI Operator。
流程
创建一个
NutanixCsiStorage资源来部署驱动程序:$ cat <<EOF | oc create -f - apiVersion: crd.nutanix.com/v1alpha1 kind: NutanixCsiStorage metadata: name: nutanixcsistorage namespace: openshift-cluster-csi-drivers spec: {} EOF输出示例
snutanixcsistorage.crd.nutanix.com/nutanixcsistorage created为 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> EOF将
key参数替换为实际值,同时保持相同的格式。输出示例
secret/nutanix-secret created
12.3.5. 验证安装后配置 复制链接链接已复制到粘贴板!
验证您是否可以创建存储类和绑定的持久性卷声明。
先决条件
- 您已部署了 Nutanix CSI 存储驱动程序。
流程
验证您是否可以创建一个存储类:
$ 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> 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注意从 Nutanix 配置中获取 <
nutanix_storage_container>;例如SelfServiceContainer。输出示例
storageclass.storage.k8s.io/nutanix-volume created验证您是否可以创建 Nutanix 持久性卷声明(PVC):
创建持久性卷声明(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输出示例
persistentvolumeclaim/nutanix-volume-pvc created验证持久性卷声明(PVC)状态是否为 Bound:
$ oc get pvc -n openshift-cluster-csi-drivers输出示例
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE nutanix-volume-pvc Bound nutanix-volume 52s