部署工作负载集群后,您可以使用 tanzu cluster list
和 tanzu 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,请使用 --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,请使用 --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-NAME
和 NAMESPACE
是您的目标集群和命名空间。
您会看到以下输出:
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
连接到集群。
获取可用上下文:
kubectl config get-contexts
将 kubectl
指向您的集群。例如:
kubectl config use-context my-cluster-admin@my-cluster
使用 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
状态,而无需进行任何其他配置。
使用 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
本节介绍了标准非管理员用户如何登录到由独立管理集群部署的工作负载集群。此工作流与创建集群的管理集群的集群管理员访问工作负载集群的方式不同。
在执行此任务之前,请确保:
apt
而不是 snap
从 CLI 安装 Docker。kubeconfig
文件,如检索工作负载集群 kubeconfig
所述在 Tanzu CLI 上,运行以下命令:
tanzu context create --endpoint https://MANAGEMENT-CLUSTER-CONTROL-PLANE-ENDPOINT:PORT --name SERVER-NAME
其中:
PORT
为 6443
。如果集群管理员在部署集群时设置了 CLUSTER_API_SERVER_PORT
或 VSPHERE_CONTROL_PLANE_ENDPOINT_PORT
,请使用在变量中定义的端口号。SERVER-NAME
是管理集群服务器的名称。如果在管理集群上配置了身份管理,则会在默认浏览器中打开身份管理提供程序(LDAP 或 OIDC)的登录屏幕。
LDAPS:
OIDC:
登录到身份管理提供程序。
运行以下命令以切换到工作负载集群:
kubectl config use-context CONTEXT --kubeconfig="MY-KUBECONFIG"
其中,CONTEXT
和 MY-KUBECONFIG
是从集群管理员获取的集群上下文和 kubeconfig
文件。
在后续登录到 Tanzu CLI 时,您将看到一个选项,用于从输入 tanzu context use
后弹出的列表中选择 Tanzu Kubernetes Grid 环境。