請參閱此範例,佈建使用一或多個完整網域名稱 (FQDN) 的 TKGS 叢集。
FQDN 支援
可以使用 v1beta1 API 佈建具有完整網域名稱 (FQDN) 的 TKG 叢集。叢集 v1beta1 API 包含名為 kubeAPIServerFQDNs
的變數,該變數至少包含一個將在 Kubernetes API 伺服器的 TLS 憑證中產生的 FQDN 字串。
當針對設定了 FQDN 的叢集發出 kubectl vsphere login
命令時,驗證服務將選取清單中的第一個 FQDN 項目,並將其新增到 kubeconfig 中,作為與叢集互動的慣用選擇。假定清單中的第一個 FQDN 可解析。不需要對叢集登入資訊進行變更。
產生的 Kubernetes API 憑證將包含您在 kubeAPIServerFQDNs
變數中指定的所有 FQDN。系統不會嘗試使用清單中除第一個 FQDN 以外的任何其他 FQDN。系統不會嘗試解析 FQDN。如果要使用清單中的其他 FQDN,可以手動編輯產生的 kubeconfig 檔案並新增所需的 FQDN。
FQDN 需求
使用 FQDN 是可選的。如果不使用 FQDN,功能不會發生變更。此處說明的功能特定於 TKG 工作負載叢集。若要對 主管 使用 FQDN,請參閱 主管 說明文件中的相應主題。
- vSphere 8.0 U2 P03 及更新版本的環境
- 主管 已更新到最新的修補程式發行版本
- 僅支援 v1beta1 API 叢集;不支援 v1alpha3 API 叢集
- 設定 DNS,以將所選 FQDN 解析為有效的 IP 位址
FQDN 範例
使用叢集 v1beta1 API 建立具有 FQDN 的叢集。
spec.topology.variables.kupeAPIServerFQDNs
值是 FQDN 陣列。
demo.fqdn.com
。
#cluster-example-fqdn.yaml apiVersion: cluster.x-k8s.io/v1beta1 kind: Cluster metadata: name: tkg-cluster-fqdn namespace: tkg-ns spec: clusterNetwork: services: cidrBlocks: ["198.52.100.0/12"] pods: cidrBlocks: ["192.101.2.0/16"] serviceDomain: "cluster.local" topology: class: tanzukubernetescluster version: v1.26.5+vmware.2-fips.1-tkg.1 controlPlane: replicas: 3 workers: machineDeployments: - class: node-pool name: node-pool-01 replicas: 3 variables: - name: vmClass value: guaranteed-medium - name: storageClass value: tkgs-storage-class - name: defaultStorageClass value: tkg-storage-class - name: kubeAPIServerFQDNs value: - demo.fqdn.com - explore.fqdn.com
FQDN 驗證
kubeconfig
檔案中,以及變數清單中的所有 FQDN 是否包含在 Kubernetes API 伺服器的 TLS 憑證中。
- 使用 Kubectl 登入 TKG 叢集。
kubectl vsphere login --server=SVCP IP or FQDN --vsphere-username USERNAME --tanzu-kubernetes-cluster-name CLUSTER-NAME --tanzu-kubernetes-cluster-namespace VSPHERE-NS
- 檢視
kubeconfig
檔案中的 FQDN。cat ~/.kube/config
- 驗證清單中的第一個 FQDN 變數是否包含在
kubeconfig
中。例如:apiVersion: v1 clusters: - cluster: insecure-skip-tls-verify: false server: https://10.199.155.77:6443 name: 10.199.155.77 - cluster: certificate-authority-data: LS0tLS1CRUdJTiBDRVJ...DQWRLZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXc ... CkdiL1pua09rOVVjT3BwSStCTE9ZZDR0RGd2eHo...QUp0SUUKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo= server: https://demo.fqdn.com:6443 name: demo.fqdn.com
- 使用 vSphere Client,從 取得 TKGS 叢集的 IP 位址。
- 在本機
/etc/hosts
檔案中手動建立包含 IP 位址和 FQDN 的 DNS 項目。例如:sudo vi /etc/hosts 127.0.0.1 localhost 127.0.1.1 ubuntu-client-vm 10.199.155.77 demo.fqdn.com ...
- 使用
openssl s_client
命令檢視 TLS 憑證。echo | openssl s_client -servername hostname -connect FQDN:PORT 2>/dev/null | openssl x509 -text
其中,
FQDN
是kubeAPIServerFQDNs
變數清單中的第一個變數。例如:echo | openssl s_client -servername hostname -connect demo.fqdn.com:6443 2>/dev/null | openssl x509 -text
- 在
Subject Alternative Name
欄位中,應包含所有 FQDN。X509v3 Subject Alternative Name: DNS:demo.fqdn.com, DNS:explore.fqdn.com, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.def
由於 Kubernetes API 伺服器的 TLS 憑證包含
kubeAPIServerFQDNs
清單中的所有 FQDN,因此您可以手動更新kubeconfig
檔案以使用清單中的第二個 (或第三個等)FQDN,且將起作用 (假定 FQDN 可解析)。