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

从 Astra Control Service 开始管理 Kubernetes 集群

提供者

设置环境后,您可以创建 Kubernetes 集群,然后将其添加到 Astra Control Service 。

创建 Kubernetes 集群

注 Astra控制服务支持使用Azure Active Directory (Azure AD)进行身份验证和身份管理的AKS集群。创建集群时、请按照中的说明进行操作 "正式文档" 将集群配置为使用Azure AD。您需要确保集群满足AKS管理的Azure AD集成的要求。

您可以通过上传将自管理集群添加到Astra Control Service kubeconfig.yaml 文件您需要确保集群满足中所述的要求 开始管理 Kubernetes 集群

开始管理 Kubernetes 集群

登录到 Astra Control Service 后,第一步是开始管理集群。您可以添加由云提供商管理的集群或自管理集群。在将集群添加到Astra Control Service之前、您需要执行某些任务并确保集群满足特定要求。

由云提供商管理的集群需要什么?#8217
Amazon Web Services
Microsoft Azure
Google Cloud
自我管理集群需要什么?#8217

您的自管理集群可以使用Astra Trident与NetApp存储服务连接、也可以使用容器存储接口(Container Storage Interface、CSI)驱动程序与其他存储服务连接。

Astra Control Service支持使用以下Kubernetes分发版的自管理集群:

  • Red Hat OpenShift 容器平台

  • Rancher Kubernetes引擎

  • 上游Kubernetes

您的自管理集群需要满足以下要求:

  • 集群必须可通过Internet访问。

  • 如果您正在使用或计划使用已启用CSI驱动程序的存储、则必须在集群上安装相应的CSI驱动程序。有关使用CSI驱动程序集成存储的详细信息、请参阅存储服务的文档。

  • 如果您正在使用或计划使用NetApp存储、请确保已安装Astra Trident的版本 "受Astra控制服务支持"

    注 您可以 "部署Astra Trident" 使用Trident运算符(手动或使用Helm图表)或 tridentctl。在安装或升级Astra Trident之前、请查看 "支持的前端、后端和主机配置"
    • 已配置Trident存储后端:至少必须有一个Astra Trident存储后端 "已配置" 在集群上。

    • 已配置Trident存储类:至少必须有一个Astra Trident存储类 "已配置" 在集群上。如果配置了默认存储类、请确保只有一个存储类具有此标注。

    • 已安装并配置* Astra Trident卷快照控制器和卷快照类*:卷快照控制器必须为 "已安装" 以便可以在Astra Control中创建快照。至少一个Astra Trident VolumeSnapshotClass 已经 "设置" 由管理员执行。

  • * Kubeconfig accessible*:您可以访问 cluster kubeconfig 这仅包括一个上下文元素。

  • *仅Rancher *:在Rancher环境中管理应用程序集群时、请修改Rancher提供的kubeconfig文件中的应用程序集群默认上下文、以使用控制平面上下文、而不是Rancher API服务器上下文。这样可以减少 Rancher API 服务器上的负载并提高性能。

(可选)检查Astra Trident版本

如果集群使用Astra Trident提供存储服务、请确保已安装的Astra Trident版本是最新的。

步骤
  1. 检查Astra Trident版本。

    kubectl get tridentversions -n trident

    如果安装了Astra Trident、则会显示类似于以下内容的输出:

    NAME      VERSION
    trident   22.10.0

    如果未安装Astra Trident、您将看到类似于以下内容的输出:

    error: the server doesn't have a resource type "tridentversions"
    注 如果Astra Trident未安装或不是最新版本、并且您希望集群使用Astra Trident提供存储服务、则需要先安装最新版本的Astra Trident、然后再继续操作。请参见 "Astra Trident 文档" 有关说明,请参见。
  2. 确保Pod正在运行:

    kubectl get pods -n trident
  3. 检查存储类是否正在使用受支持的Astra Trident驱动程序。配置程序名称应为 csi.trident.netapp.io。请参见以下示例:

    kubectl get sc

    响应示例:

    NAME                   PROVISIONER                    RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    ontap-gold (default)   csi.trident.netapp.io          Delete          Immediate           true                   5d23h
创建管理员角色kubeconfig (运行Rancher、OpenShift和上游Kubernetes的适用场景 集群)

执行这些步骤之前,请确保您的计算机上具有以下内容:

  • 已安装kubectl v1.19或更高版本

  • 具有活动上下文集群管理员权限的活动 kubeconfig

步骤
  1. 按如下所示创建服务帐户:

    1. 创建名为的服务帐户文件 astracontrol-service-account.yaml

      根据需要调整名称和命名空间。如果在此处进行了更改,则应在以下步骤中应用相同的更改。

    astracontrol-service-account.yaml

    +

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: astracontrol-service-account
      namespace: default
    1. 应用服务帐户:

      kubectl apply -f astracontrol-service-account.yaml
  2. 按如下所示授予集群管理员权限:

    1. 创建 ClusterRoleBinding 文件已调用 astracontrol-clusterrolebinding.yaml

      根据需要调整创建服务帐户时修改的任何名称和命名空间。

    astracontrol-clusterrolebinding.yaml

    +

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: astracontrol-admin
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-admin
    subjects:
    - kind: ServiceAccount
      name: astracontrol-service-account
      namespace: default
    1. 应用集群角色绑定:

      kubectl apply -f astracontrol-clusterrolebinding.yaml
  3. 列出服务帐户密码、替换 <context> 使用适用于您的安装的正确环境:

    kubectl get serviceaccount astracontrol-service-account --context <context> --namespace default -o json

    输出的结尾应类似于以下内容:

    "secrets": [
    { "name": "astracontrol-service-account-dockercfg-vhz87"},
    { "name": "astracontrol-service-account-token-r59kr"}
    ]

    中每个元素的索引 secrets 阵列以0开头。在上面的示例中、是的索引 astracontrol-service-account-dockercfg-vhz87 将为0、并为创建索引 astracontrol-service-account-token-r59kr 将为1。在输出中,记下包含 "token" 一词的服务帐户名称的索引。

  4. 按如下所示生成 kubeconfig :

    1. 创建 create-kubeconfig.sh 文件替换 TOKEN_INDEX 在以下脚本的开头、使用正确的值。

      create-kubeconfig.sh
      # Update these to match your environment.
      # Replace TOKEN_INDEX with the correct value
      # from the output in the previous step. If you
      # didn't change anything else above, don't change
      # anything else here.
      
      SERVICE_ACCOUNT_NAME=astracontrol-service-account
      NAMESPACE=default
      NEW_CONTEXT=astracontrol
      KUBECONFIG_FILE='kubeconfig-sa'
      
      CONTEXT=$(kubectl config current-context)
      
      SECRET_NAME=$(kubectl get serviceaccount ${SERVICE_ACCOUNT_NAME} \
        --context ${CONTEXT} \
        --namespace ${NAMESPACE} \
        -o jsonpath='{.secrets[TOKEN_INDEX].name}')
      TOKEN_DATA=$(kubectl get secret ${SECRET_NAME} \
        --context ${CONTEXT} \
        --namespace ${NAMESPACE} \
        -o jsonpath='{.data.token}')
      
      TOKEN=$(echo ${TOKEN_DATA} | base64 -d)
      
      # Create dedicated kubeconfig
      # Create a full copy
      kubectl config view --raw > ${KUBECONFIG_FILE}.full.tmp
      
      # Switch working context to correct context
      kubectl --kubeconfig ${KUBECONFIG_FILE}.full.tmp config use-context ${CONTEXT}
      
      # Minify
      kubectl --kubeconfig ${KUBECONFIG_FILE}.full.tmp \
        config view --flatten --minify > ${KUBECONFIG_FILE}.tmp
      
      # Rename context
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        rename-context ${CONTEXT} ${NEW_CONTEXT}
      
      # Create token user
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        set-credentials ${CONTEXT}-${NAMESPACE}-token-user \
        --token ${TOKEN}
      
      # Set context to use token user
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        set-context ${NEW_CONTEXT} --user ${CONTEXT}-${NAMESPACE}-token-user
      
      # Set context to correct namespace
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        set-context ${NEW_CONTEXT} --namespace ${NAMESPACE}
      
      # Flatten/minify kubeconfig
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        view --flatten --minify > ${KUBECONFIG_FILE}
      
      # Remove tmp
      rm ${KUBECONFIG_FILE}.full.tmp
      rm ${KUBECONFIG_FILE}.tmp
    2. 获取用于将其应用于 Kubernetes 集群的命令。

      source create-kubeconfig.sh
  5. (可选)将kubeconfig重命名为集群的有意义名称。保护集群凭据。

    chmod 700 create-kubeconfig.sh
    mv kubeconfig-sa.txt YOUR_CLUSTER_NAME_kubeconfig
步骤
  1. 在信息板上,选择 * 管理 Kubernetes 集群 * 。

    按照提示添加集群。

  2. 提供商:选择您的云提供商、然后提供创建新云实例所需的凭据或选择要使用的现有云实例。

  3. * Amazon Web Services*:上传JSON文件或从剪贴板粘贴JSON文件的内容、以提供有关Amazon Web Services IAM用户帐户的详细信息。

    JSON文件应包含创建集群的IAM用户的凭据。

  4. * Microsoft Azure* :通过上传 JSON 文件或从剪贴板粘贴此 JSON 文件的内容来提供有关 Azure 服务主体的详细信息。

    JSON 文件应包含创建服务主体时 Azure 命令行界面的输出。它还可以包含您的订阅 ID ,以便自动添加到 Astra 。否则,您需要在提供 JSON 后手动输入 ID 。

  5. * Google Cloud Platform* :通过上传文件或粘贴剪贴板中的内容来提供服务帐户密钥文件。

    Astra 控制服务使用此服务帐户发现在 Google Kubernetes Engine 中运行的集群。

  6. 其他:通过上传提供有关自管理集群的详细信息 kubeconfig.yaml 文件或粘贴的内容 kubeconfig.yaml 文件。

    注 创建自己的 kubeconfig file中、您只能定义*一*上下文元素。请参见 "Kubernetes 文档" 有关创建的信息 kubeconfig 文件。
    1. 云实例名称(对于提供商管理的集群):为添加此集群时要创建的新云实例提供一个名称。了解更多信息 "云实例"

      注 从集群列表中进行选择时、请仔细查看"符合条件"选项卡。如果出现警告,请将鼠标悬停在警告上以确定集群是否存在问题描述。例如,它可能会标识集群没有工作节点。
注 如果您选择的集群标记有 "private" 图标,则它将使用专用 IP 地址,并且 Astra Control 需要使用 Astra Connector 来管理集群。如果您看到一条消息,指出您需要安装 Astra Connector , "请参见以下说明" 安装 Astra Connector 并启用集群管理。安装 Astra Connector 后,集群应符合条件,您可以继续添加集群。
  1. 凭据名称(对于自管理集群):为要上传到Astra Control的自管理集群凭据提供一个名称。默认情况下,凭据名称会自动填充为集群的名称。

  2. (可选)存储:选择希望部署到此集群的Kubernetes应用程序默认使用的存储类。

    注

    每个云提供商存储服务都会显示以下价格、性能和弹性信息:

    • Cloud Volumes Service for Google Cloud:价格、性能和弹性信息

    • Google Persistent Disk:没有价格、性能或弹性信息

    • Azure NetApp Files :性能和弹性信息

    • Azure受管磁盘:无可用的价格、性能或弹性信息

    • Amazon Elastic Block Store:没有价格、性能或弹性信息

    • 适用于NetApp ONTAP 的Amazon FSX:没有价格、性能或弹性信息

    • NetApp Cloud Volumes ONTAP :没有价格、性能或弹性信息

    每个存储类均可使用以下服务之一:

结果

对于提供商管理的集群:如果这是您为此云提供商添加的第一个集群、则Astra Control Service会为云提供商创建一个对象存储、用于备份在符合条件的集群上运行的应用程序。(在为此云提供程序添加后续集群时、不会再创建其他对象存储。)如果指定了默认存储类、则Astra控制服务将设置您指定的默认存储类。对于在Amazon Web Services或Google Cloud Platform中管理的集群、Astra Control Service还会在集群上创建管理员帐户。这些操作可能需要几分钟时间。

更改默认存储类

您可以更改集群的默认存储类。

使用Astra Control更改默认存储类

您可以在Astra Control中更改集群的默认存储类。如果集群使用先前安装的存储后端服务、则可能无法使用此方法更改默认存储类(不能选择*设置为默认值*操作)。在这种情况下、您可以 使用命令行更改默认存储类

步骤
  1. 在 Astra 控制服务 UI 中,选择 * 集群 * 。

  2. 在*集群*页面上、选择要更改的集群。

  3. 选择 * 存储 * 选项卡。

  4. 选择*存储类*类别。

  5. 选择要设置为默认值的存储类的*操作*菜单。

  6. 选择*设置为默认值*。

使用命令行更改默认存储类

您可以使用Kubernetes命令更改集群的默认存储类。无论集群的配置如何、此方法都有效。

步骤
  1. 登录到Kubernetes集群。

  2. 列出集群中的存储类:

    kubectl get storageclass
  3. 从默认存储类中删除默认指定。将<SC_NAME> 替换为存储类的名称:

    kubectl patch storageclass <SC_NAME> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
  4. 将其他存储类标记为默认值。将<SC_NAME> 替换为存储类的名称:

    kubectl patch storageclass <SC_NAME> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
  5. 确认新的默认存储类:

    kubectl get storageclass

有关详细信息 …​