连接并检查工作负载集群

部署工作负载集群后,您可以使用 tanzu cluster listtanzu cluster kubeconfig get 命令获取正在运行的集群及其凭据的列表。然后,您可以使用 kubectl 连接到集群并开始使用集群。

列出已部署的工作负载集群

要列出工作负载集群和管理这些集群的管理集群,请使用 tanzu cluster list 命令。

  • 要列出在管理集群的 default 命名空间中运行的所有工作负载集群,请运行 tanzu cluster list 命令:

    tanzu cluster list
    

    输出将列出默认命名空间中的所有工作负载集群,包括集群名称、当前状态、实际和请求的控制平面和工作节点数以及集群运行的 Kubernetes 版本。

    集群可能处于以下状态:

    • creating:正在创建控制平面。
    • createStalled:创建控制平面的过程已停止。
    • deleting:正在删除集群。
    • failed:控制平面创建失败。
    • running:控制平面已完全初始化。
    • updating:集群正在推出更新或正在扩展节点。
    • updateFailed:集群更新过程失败。
    • updateStalled:集群更新过程已停止。
    • 无状态: 尚未开始创建集群。

    如果集群处于停止状态,请检查是否与外部注册表建立网络连接,确保目标平台上有足够的资源来完成操作,并确保 DHCP 正确发出 IPv4 地址。

  • 要列出您有权访问的所有命名空间中的集群,请指定 -A--all-namespaces 选项。

    tanzu cluster list --all-namespaces
    
  • 要仅列出在给定命名空间中运行的集群,请指定 --namespace 选项。

    tanzu cluster list --namespace=NAMESPACE
    

    其中,NAMESPACE 是运行集群的命名空间。

    在 vSphere with Tanzu 上,DevOps 工程师在运行 tanzu cluster list 时必须包含 --namespace 值,以指定他们可以访问的命名空间。请参见 VMware vSphere 文档中的 vSphere with Tanzu 用户角色和工作流

  • 如果已登录到独立管理集群,要在 tanzu cluster list 的输出中包含当前的独立管理集群,请指定 --include-management-cluster -A 选项。

    tanzu cluster list --include-management-cluster -A
    

    您可以看到管理集群正在 tkg-system 命名空间中运行,并且具有 management 角色。

    NAME                   NAMESPACE   STATUS         CONTROLPLANE  WORKERS  KUBERNETES        ROLES       PLAN  TKR
    workload-cluster-1     default     running        1/1           1/1      v1.27.5+vmware.1 <none>      dev   v1.27.5---vmware.2-tkg.1
    workload-cluster-2     default     running        1/1           1/1      v1.27.5+vmware.1 <none>      dev   v1.27.5---vmware.2-tkg.1
    mgmt-cluster           tkg-system  running        1/1           1/1      v1.27.5+vmware.1 management  dev   v1.27.5---vmware.2-tkg.1
    
  • 要查看所有管理集群并将 Tanzu CLI 的上下文更改为其他管理集群,请运行 tanzu context use 命令。有关详细信息,请参见列出管理集群和更改上下文

将工作负载集群详细信息导出到文件

您可以采用 JSON 或 YAML 格式导出有权访问的集群的详细信息。您可以将 JSON 或 YAML 保存到文件,以便在脚本中使用它在集群上运行批量操作。

导出为 JSON 文件

要将集群详细信息导出为 JSON,请使用 --output 选项运行 tanzu cluster list,并指定 json

tanzu cluster list --output json > clusters.json

输出以  JSON 形式显示集群信息:

[
  {
    "name": "workload-cluster-1",
    "namespace": "default",
    "status": "running",
    "plan": "dev",
    "controlplane": "1/1",
    "workers": "1/1",
    "kubernetes": "v1.27.5+vmware.1",
    "roles": [],
    "tkr": "v1.27.5---vmware.2-tkg.1",
    "labels": {
      "cluster.x-k8s.io/cluster-name": "workload-cluster-1",
      "run.tanzu.vmware.com/tkr": "v1.27.5---vmware.2-tkg.1",
      "tkg.tanzu.vmware.com/cluster-name": "workload-cluster-1",
      "topology.cluster.x-k8s.io/owned": ""
    }
  },
  {
    "name": "workload-cluster-2",
    "namespace": "default",
    "status": "running",
    "plan": "dev",
    "controlplane": "1/1",
    "workers": "1/1",
    "kubernetes": "v1.27.5+vmware.1",
    "roles": [],
    "tkr": "v1.27.5---vmware.2-tkg.1",
    "labels": {
      "tanzuKubernetesRelease": "v1.27.5---vmware.2-tkg.1",
      "tkg.tanzu.vmware.com/cluster-name": "workload-cluster-2"
    }
  }
]

导出为 YAML 文件

要将集群详细信息导出为 YAML,请使用 --output 选项运行 tanzu cluster list,并指定 yaml

tanzu cluster list --output yaml > clusters.yaml

输出以 YAML 形式显示集群信息:

- name: workload-cluster-1
  namespace: default
  status: running
  plan: dev
  controlplane: 1/1
  workers: 1/1
  kubernetes: v1.27.5+vmware.1
  roles: []
  tkr: v1.27.5---vmware.2-tkg.1
  labels:
    cluster.x-k8s.io/cluster-name: workload-cluster-1
    run.tanzu.vmware.com/tkr: v1.27.5---vmware.2-tkg.1
    tkg.tanzu.vmware.com/cluster-name: workload-cluster-1
    topology.cluster.x-k8s.io/owned: ""
- name: workload-cluster-1
  namespace: default
  status: running
  plan: dev
  controlplane: 1/1
  workers: 1/1
  kubernetes: v1.27.5+vmware.1
  roles: []
  tkr: v1.27.5---vmware.2-tkg.1
  labels:
    tanzuKubernetesRelease: v1.27.5---vmware.2-tkg.1
    tkg.tanzu.vmware.com/cluster-name: workload-cluster-1

导出多个集群的详细信息

有关如何保存多个管理集群的详细信息,包括其上下文和 kubeconfig 文件,请参见管理您的管理集群

检索工作负载集群 kubeconfig

创建工作负载集群后,可以通过运行 tanzu cluster kubeconfig get 命令、指定集群名称,获取集群的 kubeconfig 设置。默认情况下,该命令会将集群的 kubeconfig 设置添加到当前的 kubeconfig 文件中。

tanzu cluster kubeconfig get my-cluster
重要

如果未在集群上配置身份管理,则必须指定 --admin 选项。

要将 kubeconfig 导出到文件,请指定 --export-file 选项。

tanzu cluster kubeconfig get my-cluster --export-file my-cluster-kubeconfig
重要

删除 kubeconfig 文件将阻止您访问通过 Tanzu CLI 部署的所有集群。

如果在集群上配置了身份管理和基于角色的访问控制 (RBAC),则具有标准、非管理员 kubeconfig 凭据的用户将需要使用外部身份提供程序进行身份验证才能登录到集群。

管理员 kubeconfig

要生成具有嵌入式凭据的独立管理员 kubeconfig 文件,请添加 --admin 选项。此 kubeconfig 文件授予其用户对集群资源的完全访问权限,并允许他们在不登录身份提供程序的情况下访问集群。

tanzu cluster kubeconfig get my-cluster --admin

您会看到以下输出:

You can now access the cluster by running 'kubectl config use-context my-cluster-admin@my-cluster'

标准 kubeconfig

如果在目标集群上配置了身份管理,则可以生成一个标准的非管理员 kubeconfig,要求用户使用外部身份提供程序进行身份验证,并根据分配的角色授予他们对集群资源的访问权限。在这种情况下,请运行不带 --admin 选项的 tanzu cluster kubeconfig get

tanzu cluster kubeconfig get CLUSTER-NAME --namespace=NAMESPACE

其中,CLUSTER-NAMENAMESPACE 是您的目标集群和命名空间。

您会看到以下输出:

You can now access the cluster by running 'kubectl config use-context ...'

要将配置信息保存在独立的 kubeconfig 文件中,例如,要将其分发给开发人员,请指定 --export-file 选项。此 kubeconfig 文件要求用户使用外部身份提供程序进行身份验证,并根据分配的角色授予对集群资源的访问权限。

tanzu cluster kubeconfig get CLUSTER-NAME --namespace=NAMESPACE --export-file PATH-TO-FILE
重要

默认情况下,除非您指定 --export-file 选项以将集群的 kubeconfig 保存到特定文件,否则从 Tanzu CLI 部署的所有集群的凭据均被添加到共享的 kubeconfig 文件中。如果删除共享的 kubeconfig 文件,则所有集群都将不可用。

检查已部署的集群

将凭据添加到 kubeconfig 后,可以使用 kubectl 连接到集群。

  1. 获取可用上下文:

    kubectl config get-contexts
    
  2. kubectl 指向您的集群。例如:

    kubectl config use-context my-cluster-admin@my-cluster
    
  3. 使用 kubectl 查看集群中节点的状态:

    kubectl get nodes
    

    例如,如果使用 dev 计划部署了 my-dev-cluster,则会看到以下输出。

    NAME                                       STATUS   ROLES           AGE    VERSION
    my-dev-cluster-control-plane-9qx88-p88cp   Ready    control-plane   2d2h   v1.27.5+vmware.1
    my-dev-cluster-md-0-infra-n62lq-hq4k9      Ready    <none>          2d2h   v1.27.5+vmware.1
    

    由于默认情况下在工作负载集群中启用了使用 Antrea 的网络连接,因此所有集群都处于 Ready 状态,而无需进行任何其他配置。

  4. 使用 kubectl 查看集群中运行的 Pod 的状态:

    kubectl get pods -A
    

    以下示例显示在 Azure 上的 kube-system 集群中的 my-dev-cluster 命名空间中运行的 Pod。

    NAMESPACE              NAME                                                             READY   STATUS    RESTARTS        AGE
    kube-system            antrea-agent-ck7lv                                               2/2     Running   4 (3h7m ago)    2d2h
    kube-system            antrea-agent-fpq79                                               2/2     Running   4 (3h7m ago)    2d2h
    kube-system            antrea-controller-66d7978fd7-nkzgb                               1/1     Running   4 (3h7m ago)    2d2h
    kube-system            coredns-77d74f6759-b68ht                                         1/1     Running   2 (3h7m ago)    2d2h
    kube-system            coredns-77d74f6759-qfp8b                                         1/1     Running   2 (3h7m ago)    2d2h
    kube-system            csi-azuredisk-controller-5957dc576c-42tsd                        6/6     Running   12 (3h7m ago)   2d2h
    kube-system            csi-azuredisk-node-5hmkw                                         3/3     Running   6 (3h7m ago)    2d2h
    kube-system            csi-azuredisk-node-k7fr7                                         3/3     Running   6 (3h7m ago)    2d2h
    kube-system            csi-azurefile-controller-5d48b98756-rmrxp                        5/5     Running   10 (3h7m ago)   2d2h
    kube-system            csi-azurefile-node-brnf2                                         3/3     Running   6 (3h7m ago)    2d2h
    kube-system            csi-azurefile-node-vqghv                                         3/3     Running   6 (3h7m ago)    2d2h
    kube-system            csi-snapshot-controller-7ffbf75bd9-5m64r                         1/1     Running   2 (3h7m ago)    2d2h
    kube-system            etcd-my-dev-cluster-control-plane-9qx88-p88cp                    1/1     Running   2 (3h7m ago)    2d2h
    kube-system            kube-apiserver-my-dev-cluster-control-plane-9qx88-p88cp          1/1     Running   2 (3h7m ago)    2d2h
    kube-system            kube-controller-manager-my-dev-cluster-control-plane-9qx88-p88cp 1/1     Running   2 (3h7m ago)    2d2h
    kube-system            kube-proxy-hqhfx                                                 1/1     Running   2 (3h7m ago)    2d2h
    kube-system            kube-proxy-s6wwf                                                 1/1     Running   2 (3h7m ago)    2d2h
    kube-system            kube-scheduler-my-dev-cluster-control-plane-9qx88-p88cp          1/1     Running   2 (3h7m ago)    2d2h
    kube-system            metrics-server-545546cdfd-qhbxc                                  1/1     Running   2 (3h7m ago)    2d2h
    secretgen-controller   secretgen-controller-7b7cbc6d9d-p6qww                            1/1     Running   2 (3h7m ago)    2d2h
    tkg-system             kapp-controller-868f9469c5-j58pn                                 2/2     Running   5 (3h7m ago)    2d2h
    tkg-system             tanzu-capabilities-controller-manager-b46dcfc7f-7dzd9            1/1     Running   4 (3h7m ago)    2d2h
    

以标准用户身份访问工作负载集群(独立管理集群)

本节介绍了标准非管理员用户如何登录到由独立管理集群部署的工作负载集群。此工作流与创建集群的管理集群的集群管理员访问工作负载集群的方式不同。

必备条件

在执行此任务之前,请确保:

  • 系统上正在运行 Docker 应用程序。如果系统运行 Microsoft Windows,请将 Docker 模式设置为 Linux,并为 Linux 配置 Windows 子系统。
    • 在 Linux 计算机上,使用 apt 而不是 snap 从 CLI 安装 Docker。
  • 已从集群管理员获取:

访问工作负载集群

  1. 在 Tanzu CLI 上,运行以下命令:

    tanzu context create --endpoint https://MANAGEMENT-CLUSTER-CONTROL-PLANE-ENDPOINT:PORT --name SERVER-NAME
    

    其中:

    • 默认情况下,PORT6443。如果集群管理员在部署集群时设置了 CLUSTER_API_SERVER_PORTVSPHERE_CONTROL_PLANE_ENDPOINT_PORT,请使用在变量中定义的端口号。
    • SERVER-NAME 是管理集群服务器的名称。

    如果在管理集群上配置了身份管理,则会在默认浏览器中打开身份管理提供程序(LDAP 或 OIDC)的登录屏幕。

    LDAPS:

    LDAPS 登录页面

    OIDC:

    OIDC 登录页面

  2. 登录到身份管理提供程序。

  3. 运行以下命令以切换到工作负载集群:

    kubectl config use-context CONTEXT --kubeconfig="MY-KUBECONFIG"
    

    其中,CONTEXTMY-KUBECONFIG 是从集群管理员获取的集群上下文和 kubeconfig 文件。

在后续登录到 Tanzu CLI 时,您将看到一个选项,用于从输入 tanzu context use 后弹出的列表中选择 Tanzu Kubernetes Grid 环境。

check-circle-line exclamation-circle-line close-line
Scroll to top icon