本主题介绍了如何从同一引导计算机管理多个管理集群,包括由 Tanzu Kubernetes Grid 部署到 vSphere、Azure 或 Amazon Web 服务 (AWS) 的管理集群,以及指定为 Tanzu Kubernetes Grid 管理集群的 vSphere with Tanzu 主管。
要列出可用的管理集群并查看您当前登录的管理集群,请在引导计算机上运行 tanzu login
:
tanzu login
例如,如果您有两个管理集群:my-vsphere-mgmt-cluster
和 my-aws-mgmt-cluster
,则当前已登录到 my-vsphere-mgmt-cluster
:
$ tanzu login
? Select a server [Use arrows to move, type to filter]
> my-vsphere-mgmt-cluster ()
my-aws-mgmt-cluster ()
+ new server
kubectl
和 kubeconfig
运行 tanzu login
以更改 Tanzu CLI 上下文时,Tanzu Kubernetes Grid 不会自动更改 kubectl
上下文。另外,创建工作负载集群时,Tanzu Kubernetes Grid 不会自动将 kubectl
上下文设置为工作负载集群。要更改 kubectl
上下文,请使用 kubectl config use-context
命令。
默认情况下,Tanzu Kubernetes Grid 在引导计算机上的以下文件中保存集群上下文信息:
~/.kube-tkg/config
~/.kube/config
要查看管理集群的详细信息,请执行以下操作:
运行 tanzu login
以登录到管理集群,如列出管理集群并更改上下文中所述。
tanzu login
运行 tanzu mc get
。
tanzu mc get
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN TKR
mc-test-cli tkg-system running 3/3 3/3 v1.24.10+vmware.1 management prod v1.24.10---vmware.1-tkg.1
Details:
NAME READY SEVERITY REASON SINCE MESSAGE
/mc-test-cli True 2d1h
├─ClusterInfrastructure - VSphereCluster/mc-test-cli-jjtpf True 2d1h
├─ControlPlane - KubeadmControlPlane/mc-test-cli-mffw9 True 2d1h
│ ├─Machine/mc-test-cli-mffw9-5zcbj True 2d1h
│ ├─Machine/mc-test-cli-mffw9-fs6zh True 2d1h
│ └─Machine/mc-test-cli-mffw9-jlwnm True 2d1h
└─Workers
├─MachineDeployment/mc-test-cli-md-0-tnz59 True 15h
│ └─Machine/mc-test-cli-md-0-tnz59-64bdc75d94-gtg54 True 2d1h
├─MachineDeployment/mc-test-cli-md-1-2d26b True 15h
│ └─Machine/mc-test-cli-md-1-2d26b-776885b84-6hzkj True 2d1h
└─MachineDeployment/mc-test-cli-md-2-fs824 True 15h
└─Machine/mc-test-cli-md-2-fs824-7bfd7b9c7b-c7n95 True 2d1h
Providers:
NAMESPACE NAME TYPE PROVIDERNAME VERSION WATCHNAMESPACE
caip-in-cluster-system infrastructure-ipam-in-cluster InfrastructureProvider ipam-in-cluster v0.1.0
capi-kubeadm-bootstrap-system bootstrap-kubeadm BootstrapProvider kubeadm v1.2.8
capi-kubeadm-control-plane-system control-plane-kubeadm ControlPlaneProvider kubeadm v1.2.8
capi-system cluster-api CoreProvider cluster-api v1.2.8
capv-system infrastructure-vsphere InfrastructureProvider vsphere v1.5.1
要查看更多选项,请运行 tanzu mc get --help
。Tanzu CLI 别名 mc
是 management-cluster
的缩写。
Tanzu CLI 允许您登录到其他人创建的管理集群。要登录,可以使用本地 kubeconfig 详细信息或服务器端点选项。
要使用本地 kubeconfig 登录到现有管理集群,请执行以下操作:
运行 tanzu login
,使用向下箭头键突出显示 + 新服务器 (+ new server),然后按 Enter。
tanzu login
? Select a server + new server
出现提示时,选择本地 kubeconfig(Local kubeconfig)作为登录类型,然后输入本地 kubeconfig 文件的路径、上下文和服务器名称。例如:
✔tanzu login
? Select a server + new server
? Select login type Local kubeconfig
? Enter path to kubeconfig (if any) /Users/exampleuser/examples/kubeconfig
? Enter kube context to use new-mgmt-cluster-admin@new-mgmt-cluster
? Give the server a name new-mgmt-cluster
successfully logged in to management cluster using the kubeconfig new-mgmt-cluster
要使用服务器端点 (Server endpoint) 选项登录到现有管理集群,请执行以下操作:
运行 tanzu login
,使用向下箭头键突出显示 + 新服务器 (+ new server),然后按 Enter。
tanzu login
? Select a server + new server
出现提示时,选择服务器端点 (Server endpoint) 作为登录类型。
successfully logged in to management cluster by using the kubeconfig <server name>
或者,也可以运行 tanzu login
--server
、--kubeconfig
和 --context
选项并绕过交互式提示。
您可以将其他人创建的管理集群添加到 Tanzu CLI 实例,而在某些时候,您不再需要该集群。同样,如果您部署了一个管理集群,并且已通过运行 tanzu mc delete
以外的方式从目标平台中删除该管理集群,该管理集群将继续显示在运行tanzu login
时 CLI 跟踪的管理集群列表中。在这些情况下,您可以从 Tanzu CLI 跟踪的管理集群列表中移除管理集群。
运行 tanzu config server list
,查看 Tanzu CLI 跟踪的管理集群的列表。
tanzu config server list
您应该会看到自己部署或添加到 Tanzu CLI 的所有管理集群、其 kubeconfig 文件的位置及其上下文。
运行 tanzu config server delete
命令以移除管理集群。
tanzu config server delete my-vsphere-mc
运行 tanzu config server delete
命令会从 ~/.config/tanzu/config.yaml
和 ~/.kube-tkg/config.yaml
文件中移除集群详细信息。如果管理集群本身仍然存在,则不会将其删除。要删除管理集群而不是仅将其从 Tanzu CLI 配置中移除,请参见删除管理集群。
在引导计算机上,Tanzu CLI 使用本地存储的证书对管理集群进行身份验证。如果证书过期,在运行 tanzu
CLI 命令时,您将看到失败的错误消息。
因此,当证书即将过期时,请按照以下步骤更新证书:
使用 tanzu mc get
获取管理集群的名称。
tanzu mc get
获取集群配置数据:
kubectl -n tkg-system get secrets CLUSTER-NAME-kubeconfig -o 'go-template={{ index .data "value"}}' | base64 -d > mc_kubeconfig.yaml
其中,CLUSTER-NAME
是管理集群的名称。例如:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBD<redacted>
server: https://192.168.100.90:6443
name: tkg-mgmt
contexts:
- context:
cluster: tkg-mgmt
user: tkg-mgmt-admin
name: tkg-mgmt-admin@tkg-mgmt
current-context: tkg-mgmt-admin@tkg-mgmt
kind: Config
preferences: {}
users:
- name: tkg-mgmt-admin
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZ<redacted>
client-key-data: LS0tLS1CRUdJTiBSU<redacted>`
从 Tanzu CLI 当前跟踪的管理集群列表中删除现有管理集群条目:
tanzu config server delete CLUSTER-NAME
使用 tanzu login
命令添加包含更新的 kubeconfig
的新管理集群:
tanzu login --kubeconfig mc_kubeconfig.yaml --name CLUSTER-NAME --context CLUSTER-NAME-admin@CLUSTER-NAME
部署管理集群后,可以通过增加或减少其包含的节点虚拟机数量来纵向扩展或横向缩减管理集群。要扩展管理集群,请使用带以下一个或两个以下选项的 tanzu cluster scale
命令:
--controlplane-machine-count
可更改管理集群控制平面节点数。--worker-machine-count
可更改管理集群工作节点数。由于管理集群在 tkg-system
命名空间中运行,而不是在 default
命名空间中运行,因此在扩展管理集群时,还必须指定 --namespace
选项。
tanzu login
,然后运行 tanzu cluster scale
以确保要扩展的管理集群是 Tanzu CLI 的当前上下文。要将最初使用 3 个控制平面节点和 5 个工作节点部署的生产管理集群分别扩展到 5 个和 10 个节点,请运行以下命令:
tanzu cluster scale MANAGEMENT-CLUSTER-NAME --controlplane-machine-count 5 --worker-machine-count 10 --namespace tkg-system
如果最初使用一个控制平面节点部署了开发管理集群,然后将其扩展到 3 个控制平面节点,Tanzu Kubernetes Grid 将在控制平面上自动启用堆叠的 HA。
重要在 Tanzu Kubernetes Grid 操作运行时,请勿更改上下文或编辑
.kube-tkg/config
文件。
要更新管理集群使用的 vSphere 凭据和选择性地更新其管理的所有工作负载集群,请参见《使用 Tanzu CLI 创建和管理 TKG 2.1 工作负载集群》中的更新管理和工作负载集群凭据。
使用安装程序界面或 CLI 部署管理集群时,除非您指定了选择退出的选项,否则默认情况下将启用参与 VMware 客户体验提升计划 (CEIP)。如果您仍然选择加入该计划,管理集群会定期发送有关如何使用 Tanzu Kubernetes Grid 返回 VMware 的信息,以便我们可以在未来版本中进行改进。
有关 CEIP 的详细信息,请参见管理 CEIP 的参与。
如果您在部署管理集群时选择退出 CEIP 后希望选择加入,或者如果您选择加入后希望选择退出,请参见《管理 CEIP 的参与》中的选择加入或选择退出 VMware CEIP以在部署后更改 CEIP 参与设置
为了帮助您组织和管理开发项目,您可以选择将管理集群划分为 Kubernetes 命名空间。然后,可以使用 Tanzu CLI 将工作负载集群部署到管理集群中的特定命名空间。例如,您可能希望在专用命名空间中创建不同类型的集群。如果不创建其他命名空间,Tanzu Kubernetes Grid 将在 default
命名空间中创建所有工作负载集群。有关 Kubernetes 命名空间的信息,请参见 Kubernetes 文档。
通过显示当前上下文,确保 kubectl
已连接到正确的管理集群上下文。
kubectl config current-context
列出管理集群中当前存在的命名空间。
kubectl get namespaces
您将看到,管理集群已包含其提供的不同服务的多个命名空间:
capi-kubeadm-bootstrap-system Active 4m7s
capi-kubeadm-control-plane-system Active 4m5s
capi-system Active 4m11s
capi-webhook-system Active 4m13s
capv-system Active 3m59s
cert-manager Active 6m56s
default Active 7m11s
kube-node-lease Active 7m12s
kube-public Active 7m12s
kube-system Active 7m12s
tkg-system Active 3m57s
使用 kubectl create -f
创建新的命名空间,例如用于开发和生产。
这些示例使用 Kubernetes 文档中的 production
和 development
命名空间。
kubectl create -f https://k8s.io/examples/admin/namespace-dev.json
kubectl create -f https://k8s.io/examples/admin/namespace-prod.json
运行 kubectl get namespaces --show-labels
以查看新的命名空间。
development Active 22m name=development
production Active 22m name=production
您需要先删除管理集群中的工作负载集群本身,才能删除其命名空间。您无法通过删除工作负载集群的管理集群命名空间来删除工作负载集群。
要删除管理集群中工作负载集群的命名空间,请执行以下操作:
将 kubectl
的上下文设置为管理集群:
kubectl config use-context MY-MGMT-CLUSTER@MY-MGMT-CLUSTER
其中,MY-MGMT-CLUSTER
是管理集群的名称。
列出要删除的命名空间中运行的集群:
tanzu cluster list -n NAMESPACE
按照删除工作负载集群的过程删除卷和服务,根据需要迁移工作负载,以及删除命名空间中的集群。
使用 kubectl
删除命名空间:
kubectl delete namespace NAMESPACE
要删除管理集群,请运行 tanzu mc delete
命令。
运行 tanzu mc delete
时,Tanzu Kubernetes Grid 会在引导计算机上创建一个临时 kind
清理集群来管理删除过程。删除过程完成后,将移除 kind
集群。
AWS:确保 TKG 使用的 AWS 凭据仍然有效。它们可以是凭据配置文件或本地静态环境变量,如配置 AWS 帐户凭据中所述。
要查看所有管理集群,请运行 tanzu login
,如列出管理集群和更改上下文中所述。
如果存在不再需要的管理集群,请运行 tanzu mc delete
。
您必须登录到要删除的管理集群。
tanzu mc delete my-mgmt-cluster
要在运行 tanzu mc delete
时跳过 yes/no
验证步骤,请指定 --yes
选项。
tanzu mc delete my-mgmt-cluster --yes
如果管理集群中正在运行工作负载集群,则不会执行删除操作。
在这种情况下,可以通过两种方式删除管理集群:
tanzu cluster delete
删除所有正在运行的集群,然后再次运行 tanzu mc delete
。--force
选项运行 tanzu mc delete
。tanzu mc delete my-mgmt-cluster --force
重要在 Tanzu Kubernetes Grid 操作运行时,请勿更改上下文或编辑
.kube-tkg/config
文件。
您可以使用 Tanzu Kubernetes Grid 开始将工作负载集群部署到不同的 Tanzu Kubernetes Grid 实例。有关信息,请参见《使用 Tanzu CLI 创建和管理 TKG 2.1 工作负载集群》中的创建工作负载集群。
如果 vSphere 8 具有主管,则可以使用 Tanzu CLI 部署 TKG 2.x 集群。有关详细信息,请参见使用 Tanzu CLI 创建和管理 TKG 2.1 集群。