Skip to main content
NetApp Disaster Recovery
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

NetApp Disaster Recovery 的 Kubernetes 集群要求

贡献者 netapp-ahibbard

在为 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>'

创建 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 正在运行

kubectl get pods -n trident

Trident 已成功运行

后端运行良好

kubectl get TridentBackendConfig -n trident

绑定/成功

存储已暴露

kubectl get storageclass

输出包括您的 Trident 类

Snapshot API

kubectl get volumesnapshotclass

存在 CRD;列出 Trident 驱动程序

验证所有资源的状态后,使用您的 Trident StorageClass 部署或"迁移"您的工作负载。当您"将 Kubernetes 集群添加到站点"时,Disaster Recovery 会提供在集群上安装 Trident Protect 并将其注册到您的 Disaster Recovery 环境的说明。

查看安装 Trident Protect 的说明。
  1. 创建 Trident 保护命名空间:

    kubectl create namespace trident-protect

  2. 使用 client ID 和 client secret 创建 Kubernetes secret 以创建 OCCM 身份验证凭据。

    kubectl create secret generic occmauthcreds --namespace=trident-protect --from-literal=client_id=<clientID> --from-literal=<clientSecret>

  3. 添加或更新 helm repo:

    helm repo add --force-update netapp-trident-protect https://netapp.github.io/trident-protect-helm-chart

  4. 安装或升级 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>