NetApp Disaster Recovery 的 Kubernetes 集群要求
在为 Kubernetes 集群配置 NetApp Disaster Recovery 之前,您必须准备好每个 Kubernetes 集群。通常,保护适用于源和单独的目标集群,这意味着需要将这些程序应用于对中的每个集群。
前提条件
在配置 Kubernetes 集群要求之前,请确保已配置 Kubernetes 集群和 ONTAP 集群。
Kubernetes 集群
对于每个 Kubernetes 集群,请确保:
-
您对每个 Kubernetes 集群具有管理 `kubectl`员访问权限。
-
运行安装命令时可使用 Helm 3
ONTAP 要求
对于每个 ONTAP 群集,请确保已配置以下资源:
-
管理 LIF - Trident 用于管理 API 访问
-
数据 (NFS) LIF - 用于卷的 NFS 流量
-
SVM 名称 - 托管卷的 Storage VM
-
凭据 - Trident 将使用的账户(通常, `admin`或 SVM 范围的账户)
-
工作节点必须能够访问 ONTAP 管理和数据 LIF。
-
如果使用
autoExportPolicy和 CIDR 限制,请包括节点子网。
安装 NetApp Trident CSI
如果您已经安装了 Trident,请使用命令
`kubectl get pods -n trident`验证安装。如果安装成功,您将看到 Trident 控制器、节点 pods(DaemonSet),并且操作员的状态在几分钟后处于 `Running`状态。
配置 ONTAP 后端和 Trident StorageClass
创建 Kubernetes 密钥
在该命名空间中创建一个 Kubernetes 密钥:
+
kubectl create secret generic trident-ontap-secret -n <namespace> \
--from-literal=username=<adminOrOtherUsername> \
--from-literal=password='<YOUR_ONTAP_PASSWORD>'
有关详细信息,请参见"在该命名空间中创建一个 Kubernetes 密钥"。
创建 TridentBackendConfig
您可以
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: <name>
namespace: <trident>
spec:
version: 1
backendName: <name>
storageDriverName: <driverName>
managementLIF: <MANAGEMENT_LIF_IP>
dataLIF: <DATA_LIF_IP>
svm: <SVM_NAME>
autoExportPolicy: true
autoExportCIDRs:
- 0.0.0.0/0
credentials:
name: trident-ontap-secret
您可以使用命令 `kubectl get TridentBackendConfig -n trident`验证配置。如果配置成功, `phase`输出应显示为 Bound, `status`应显示为 Success。如果状态为 Failed,请查看"获取更多详细信息"步骤,然后解决任何问题,例如凭据不正确或网络可达性问题。
配置存储类
"创建存储类对象"。使用 provisioner csi.trident.netapp.io。例如:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: <name>
provisioner: csi.trident.netapp.io
parameters:
backendType: "<type>"
storagePools: "<pool>:.*"
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
您可以选择将一个存储类标记为集群默认值。每个集群只能指定一个默认值。
kubectl patch storageclass ontap-backend \
-p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
Trident Protect 复制的应用 PVC 必须使用通过 Trident 配置的存储(此 StorageClass 或您使用正确 storagePools / 选择器定义的另一个)。
要使 Trident Protect 复制您的应用程序数据,应用程序必须使用来自 Trident 管理的 ONTAP 卷的存储。您可以使用此存储类或其他存储类,但必须将其配置为通过 Trident 使用 ONTAP 后端。
配置卷组快照自定义资源定义 (CRD)
"安装 snapshot CRD 和 snapshot 控制器。"。这些安装是 Trident Protect 中的卷快照所必需的。
使用以下命令验证自定义资源定义:
kubectl get crd volumesnapshots.snapshot.storage.k8s.io
kubectl get crd volumesnapshotcontents.snapshot.storage.k8s.io
kubectl get crd volumesnapshotclasses.snapshot.storage.k8s.io
配置卷组快照
kubectl patch volumesnapshotclasses.snapshot.storage.k8s.io trident-snapshotclass \
-p '{"metadata": {"annotations":{"snapshot.storage.kubernetes.io/is-default-class":"true"}}}' \
--type=merge
您可以选择将卷快照类指定为默认类。如果您需要孤立的 Kubernetes 快照对象在 ONTAP 上保留快照,请使用 deletionPolicy: Retain。
验证摘要
| 检查 | 命令 | 预期输出 |
|---|---|---|
Trident 正在运行 |
|
Trident 已成功运行 |
后端运行良好 |
|
绑定/成功 |
存储已暴露 |
|
输出包括您的 Trident 类 |
Snapshot API |
|
存在 CRD;列出 Trident 驱动程序 |
验证所有资源的状态后,使用您的 Trident StorageClass 部署或"迁移"您的工作负载。当您"将 Kubernetes 集群添加到站点"时,Disaster Recovery 会提供在集群上安装 Trident Protect 并将其注册到您的 Disaster Recovery 环境的说明。
查看安装 Trident Protect 的说明。
-
创建 Trident 保护命名空间:
kubectl create namespace trident-protect -
使用 client ID 和 client secret 创建 Kubernetes secret 以创建 OCCM 身份验证凭据。
kubectl create secret generic occmauthcreds --namespace=trident-protect --from-literal=client_id=<clientID> --from-literal=<clientSecret> -
添加或更新 helm repo:
helm repo add --force-update netapp-trident-protect https://netapp.github.io/trident-protect-helm-chart -
安装或升级 Trident Protect 和 Trident Protect Connector:
helm upgrade --install trident-protect netapp-trident-protect/trident-protect-console \
--version 100.2605.0-console --namespace trident-protect --set clusterName=<clusterName> --set trident-protect.cbs.accountID=<accountID> --set trident-protect.cbs.agentID=<agentID> --set trident-protect.cbs.proxySecretName=occmauthcreds --set trident-protect.cbs.proxyHostIP=<IPaddress>