本主題說明如何從同一啟動機器來管理多個管理叢集,包括由 Tanzu Kubernetes Grid 部署到 vSphere、Azure 或 Amazon Web Services (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.25.7+vmware.1 management prod v1.25.7---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>
或者,您可以執行設有 --server
、--kubeconfig
和 --context
選項的 tanzu login
,並略過互動式提示。
有可能您將其他人建立的管理叢集新增到您的 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 cluster scale
之前,請先執行 tanzu login
,以確保要調整的管理叢集是 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.2 工作負載叢集〉中的更新管理叢集和工作負載叢集的認證。
當您使用安裝程式介面或 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.2 工作負載叢集〉中的建立工作負載叢集。
如果您的 vSphere 8 具有主管,則可以使用 Tanzu CLI 來部署 TKG 2.x 叢集。如需詳細資訊,請參閱使用 Tanzu CLI 來建立和管理 TKG 2.2 叢集。