您可以使用 Tanzu CLI,利用 YAML 組態檔中指定的組態,將管理叢集部署到 vSphere、Amazon Web Services (AWS) 和 Microsoft Azure。
在部署管理叢集之前,必須確定您的環境符合目標平台的需求。
TKG_CUSTOM_IMAGE_REPOSITORY
設定為環境變數。重要強烈建議使用 Tanzu Kubernetes Grid 安裝程式介面 (而不是 CLI),將第一個管理叢集部署到指定的目標平台。使用安裝程式介面部署管理叢集時,它會在管理叢集的叢集組態檔中填入必要參數。您可以使用所建立的組態檔作為模型,以便日後從 CLI 部署到此目標平台。
重要在vSphere with Tanzu,您可能不需要部署管理叢集。請參閱 vSphere with Tanzu 主管是管理叢集。
t3.large
或 t3.xlarge
) 組態的相關資訊,請參閱 Amazon EC2 執行個體類型。在您第一次將管理叢集部署到 AWS 之前,必須先在 AWS 帳戶中為 Tanzu Kubernetes Grid (tkg-cloud-vmware-com
) 建立 CloudFormation 堆疊。此 CloudFormation 堆疊包含 Tanzu Kubernetes Grid 在 AWS 上建立及執行叢集時所需的身分識別和存取管理 (IAM) 資源。如需詳細資訊,請參閱準備將管理叢集部署到 AWS 中的Tanzu Kubernetes Grid 所設定的權限。
如果您已在 AWS 帳戶中為 Tanzu Kubernetes Grid 建立 CloudFormation 堆疊,請跳過此程序的其餘部分。
如果您尚未為 AWS 帳戶中的 Tanzu Kubernetes Grid 建立 CloudFormation 堆疊,請確定已在本機環境或 AWS 預設認證提供者鏈結中設定 AWS 驗證變數。如需相關指示,請參閱設定 AWS 帳戶認證和 SSH 金鑰。
如果您已在多處設定 AWS 認證,則會依下列的優先順序,來套用用來建立 CloudFormation 堆疊的認證設定:
AWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
、AWS_SESSION_TOKEN
和 AWS_REGION
中設定的認證。儲存在共用認證檔中,而成為預設認證提供者鏈結一部分的認證。您可以在本機環境變數 AWS_SHARED_CREDENTIAL_FILE
中指定要使用的認證檔的位置。如果未定義此環境變數,則會使用 $HOME/.aws/credentials
的預設位置。如果使用認證設定檔,此命令會使用在 AWS_PROFILE
本機環境組態變數中指定的設定檔名稱。如果沒有為此變數指定一值,則會使用名為 default
的設定檔。
如需取得範例以瞭解如何解譯 Java 應用程式的預設 AWS 認證提供者鏈結,請參閱 AWS 說明文件中的使用 AWS 認證。
執行下列命令:
tanzu mc permissions aws set
如需有關此命令的詳細資訊,請執行 tanzu mc permissions aws set --help
。
重要
tanzu mc permissions aws set
命令會取代存在於 Tanzu Kubernetes Grid v1.1.x 及更早版本中的clusterawsadm
命令列公用程式。對於最初使用 v1.1.x 或更早版本來部署的現有管理叢集和工作負載叢集,請繼續使用藉由執行clusterawsadm alpha bootstrap create-stack
命令所建立的 CloudFormation 堆疊。對於 Tanzu Kubernetes Grid v1.2 及更新版本的叢集,請使用tkg-cloud-vmware-com
堆疊。
如需 Azure 各種大小的節點執行個體 (例如,Standard_D2s_v3
或 Standard_D4s_v3
) 組態的相關資訊,請參閱Azure 中虛擬機器的大小。
從組態檔建立管理叢集之前,您必須先建立檔案。從 CLI 部署管理叢集時,可以使用 tanzu mc create
命令的 --file
選項來指定此檔案。
第一次執行 tanzu config init
命令時,會建立包含 Tanzu Kubernetes Grid 組態檔的 ~/.config/tanzu/tkg
子目錄。
如果您先前藉由執行 tanzu mc create --ui
來部署管理叢集,則 ~/.config/tanzu/tkg/clusterconfigs
目錄會包含管理叢集組態檔,其中包含每次叫用安裝程式介面時所儲存的設定。視管理叢集部署所在的基礎結構而定,您可以使用這些檔案作為叢集組態檔的範本,以便在相同的基礎結構上進行新部署。或者,您也可以利用本說明文件中提供的範本,來建立管理叢集組態檔。
VMware 建議讓每個管理叢集使用專用組態檔,且其中包含特定於單一基礎結構的組態設定。
使用以下指示和範本,來建立獨立的管理叢集組態檔。
如需每個變數的詳細資料,請參閱〈組態檔變數參考〉。
重要
- 如設定管理叢集中所述,環境變數會覆寫叢集組態檔中的值。若要使用叢集組態檔中的所有設定,請先取消設定任何衝突的環境變數,然後再從 CLI 來部署管理叢集。
- Tanzu Kubernetes Grid 中對 IPv6 位址的支援有限;請參閱在 IPv6 上部署叢集 (僅限 vSphere)。如果未部署到純 IPv6 網路環境,則組態檔中的所有 IP 位址設定都必須是 IPv4。
- 某些參數會設定相同的內容。例如,
SIZE
內容會為不同的目標平台 (但是在更為一般的層級下),設定與所有控制平面和工作節點大小和類型內容相同的基礎結構設定。在這類情況下,請避免設定衝突或冗餘的內容。
若要建立用於獨立管理叢集的組態檔,請執行以下動作:
在文字編輯器中,打開副檔名為 .yaml
的新檔案,並使用相應的名稱,例如 aws-mgmt-cluster-config.yaml
。這將是您的組態檔。
如果您已從安裝程式介面部署管理叢集,則可以在叢集組態的預設位置 ~/.config/tanzu/tkg/clusterconfigs
建立檔案。
請參見以下與您的基礎架構相符的主題,將頁面頂部的範本代碼複製並貼到組態檔中:
在以下檔案中進行設定:
儲存檔案。
基本管理叢集的建立設定會定義部署管理叢集的基礎結構和其他基本設定。它們對所有目標平台都是通用的。
CLUSTER_PLAN
,指定要部署開發叢集 (提供單一控制平面節點) 還是生產叢集 (提供具有三個控制平面節點的高可用性管理叢集)。指定 dev
或 prod
。對於 INFRASTRUCTURE_PROVIDER
,請指定 aws
、azure
或 vsphere
。
INFRASTRUCTURE_PROVIDER: aws
INFRASTRUCTURE_PROVIDER: azure
INFRASTRUCTURE_PROVIDER: vsphere
選擇性地將 ENABLE_CEIP_PARTICIPATION
設定為 false
,以停用 VMware 客戶經驗改進計劃 (CEIP) 參與。如需 CEIP 的相關資訊,請參閱管理 CEIP 參與和 https://www.vmware.com/solutions/trustvmware/ceip.html。
ENABLE_AUDIT_LOGGING
設定為 false
,來停用稽核記錄。如需稽核記錄的相關資訊,請參閱稽核記錄。CLUSTER_CIDR
,以及針對叢集服務網路更新 SERVICE_CIDR
。例如:
#! ---------------------------------------------------------------------
#! Basic cluster creation configuration
#! ---------------------------------------------------------------------
CLUSTER_NAME: aws-mgmt-cluster
CLUSTER_PLAN: dev
INFRASTRUCTURE_PROVIDER: aws
ENABLE_CEIP_PARTICIPATION: true
ENABLE_AUDIT_LOGGING: true
CLUSTER_CIDR: 100.96.0.0/11
SERVICE_CIDR: 100.64.0.0/13
將 IDENTITY_MANAGEMENT_TYPE
設定為 ldap
或 oidc
。設定為 none
或略過,以停用身分識別管理。強烈建議為生產部署啟用身分識別管理。
IDENTITY_MANAGEMENT_TYPE: oidc
IDENTITY_MANAGEMENT_TYPE: ldap
若要設定 OIDC,請更新下方的變數。如需如何設定變數的相關資訊,請參閱〈組態檔變數參考〉中的身分識別提供者 - OIDC。
例如:
OIDC_IDENTITY_PROVIDER_CLIENT_ID: 0oa2i[...]NKst4x7
OIDC_IDENTITY_PROVIDER_CLIENT_SECRET: 331!b70[...]60c_a10-72b4
OIDC_IDENTITY_PROVIDER_GROUPS_CLAIM: groups
OIDC_IDENTITY_PROVIDER_ISSUER_URL: https://dev-[...].okta.com
OIDC_IDENTITY_PROVIDER_SCOPES: openid,groups,email,offline_access
OIDC_IDENTITY_PROVIDER_USERNAME_CLAIM: email
若要設定 LDAP,請取消註解 LDAP_*
變數,並使用 LDAPS 伺服器的相關資訊來更新。如需如何設定變數的相關資訊,請參閱〈組態檔變數參照〉中的身分識別提供者 - LDAP。
例如:
LDAP_BIND_DN: "cn=bind-user,ou=people,dc=example,dc=com"
LDAP_BIND_PASSWORD: "example-password"
LDAP_GROUP_SEARCH_BASE_DN: dc=example,dc=com
LDAP_GROUP_SEARCH_FILTER: &(objectClass=posixGroup)(memberUid={})
LDAP_GROUP_SEARCH_NAME_ATTRIBUTE: cn
LDAP_GROUP_SEARCH_USER_ATTRIBUTE: uid
LDAP_HOST: ldaps.example.com:636
LDAP_ROOT_CA_DATA_B64: ""
LDAP_USER_SEARCH_BASE_DN: ou=people,dc=example,dc=com
LDAP_USER_SEARCH_FILTER: &(objectClass=posixAccount)(uid={})
LDAP_USER_SEARCH_NAME_ATTRIBUTE: uid
若要選擇性地將傳出 HTTP(S) 流量從管理叢集傳送到 Proxy (例如,在網際網路受限的環境中),請取消註解並設定 *_PROXY
設定。Proxy 設定對所有目標平台是通用的。您可以選擇將一個 Proxy 用於 HTTP 要求,將另一個 Proxy 用於 HTTPS 要求,或者將相同的 Proxy 同時用於 HTTP 和 HTTPS 要求。一旦部署叢集後,就無法變更 Proxy。
附註在 vSphere 上,無法代理從叢集虛擬機器到 vCenter 的流量。在代理的 vSphere 環境中,您需要將
VSPHERE_INSECURE
設定為true
,或者將 vCenter IP 位址或主機名稱新增到TKG_NO_PROXY
清單。
TKG_HTTP_PROXY_ENABLED
:將此選項設定為 true
,以設定 Proxy。
TKG_PROXY_CA_CERT
:如果 Proxy 伺服器的憑證是自我簽署的,請將此項設定為 Proxy 伺服器的 CA。
TKG_HTTP_PROXY
:這是處理 HTTP 要求的 Proxy 的 URL。若要設定 URL,請使用以下格式:
PROTOCOL://USERNAME:PASSWORD@FQDN-OR-IP:PORT
其中:
PROTOCOL
:這必須是 http
。USERNAME
和 PASSWORD
:這是您的 HTTP Proxy 使用者名稱和密碼。如果 Proxy 需要驗證,則必須設定 USERNAME
和 PASSWORD
。附註:使用 CLI 部署管理叢集時,不能在密碼中使用以下非英數字元:# ` ^ | / \ ? % ^ { [ ] }" < >
。
FQDN-OR-IP
:這是 HTTP Proxy 的 FQDN 或 IP 位址。PORT
:這是您的 HTTP Proxy 使用的連接埠號碼。例如,http://user:[email protected]:1234
。
TKG_HTTPS_PROXY
:這是處理 HTTPS 要求的 Proxy 的 URL。您可以將 TKG_HTTPS_PROXY
設定為與 TKG_HTTP_PROXY
相同的值,也可以提供不同的值。若要設定一值,請使用上一個步驟中的 URL 格式,其中:
PROTOCOL
:這必須是 http
。USERNAME
和 PASSWORD
:這是您的 HTTPS Proxy 使用者名稱和密碼。如果 Proxy 需要驗證,則必須設定 USERNAME
和 PASSWORD
。附註:使用 CLI 部署管理叢集時,不能在密碼中使用以下非英數字元:# ` ^ | / \ ? % ^ { [ ] }" < >
。
FQDN-OR-IP
:這是您的 HTTPS Proxy 的 FQDN 或 IP 位址。PORT
:這是您的 HTTPS Proxy 使用的連接埠號碼。例如,http://user:[email protected]:1234
。
TKG_NO_PROXY
:這是設定一或多個必須繞過 HTTP(S) Proxy 的網路 CIDR 或主機名稱 (並以逗號分隔),例如,使管理叢集能夠直接與執行於同一網路上且位於同一 Proxy 後面的基礎結構通訊。請勿在逗號分隔的清單設定中使用空格。例如,noproxy.yourdomain.com,192.168.0.0/24
。
在 vSphere 上,此清單必須包括:
VSPHERE_NETWORK
的 CIDR,其中包含控制平面端點的 IP 位址。如果將 VSPHERE_CONTROL_PLANE_ENDPOINT
設定為 FQDN,還要將該 FQDN 新增至 TKG_NO_PROXY
清單。在內部,Tanzu Kubernetes Grid 會將 localhost
、127.0.0.1
、CLUSTER_CIDR
和 SERVICE_CIDR
的值、.svc
和 .svc.cluster.local
附加到您在 TKG_NO_PROXY
中設定的值。此外,若是部署至 AWS,還會附加 AWS VPC CIDR 和 169.254.0.0/16
;若是部署至 Azure,還會附加 Azure VNET CIDR、169.254.0.0/16
和 168.63.129.16
。對於 vSphere,您必須將 VSPHERE_NETWORK
的 CIDR (包括控制平面端點的 IP 位址) 手動新增到 TKG_NO_PROXY
。如果您將 VSPHERE_CONTROL_PLANE_ENDPOINT
設定為 FQDN,請同時將 FQDN 和 VSPHERE_NETWORK
新增到 TKG_NO_PROXY
。
重要如果叢集虛擬機器需要與 Tanzu Kubernetes Grid 環境中的外部服務和基礎結構端點通訊,請確定您在上方所設定的 Proxy 可以連線到這些端點,否則,請將它們新增到
TKG_NO_PROXY
。根據您的環境組態,這可能包括但不限於:
例如:
#! ---------------------------------------------------------------------
#! Proxy configuration
#! ---------------------------------------------------------------------
TKG_HTTP_PROXY_ENABLED: true
TKG_PROXY_CA_CERT: "LS0t[...]tLS0tLQ==""
TKG_HTTP_PROXY: "http://myproxy.com:1234"
TKG_HTTPS_PROXY: "http://myproxy.com:1234"
TKG_NO_PROXY: "noproxy.yourdomain.com,192.168.0.0/24"
依預設,所有叢集節點會針對所有目標平臺執行 Ubuntu v20.04。在 vSphere 上,您可以選擇性地部署叢集,並在其節點上執行 Photon OS。在 AWS 上,節點可以選擇性地執行 Amazon Linux 2。對於架構,預設和目前的選項為 amd64
。如需瞭解作業系統和版本設定,請參閱〈組態檔變數參考〉中的節點組態。
例如:
#! ---------------------------------------------------------------------
#! Node configuration
#! ---------------------------------------------------------------------
OS_NAME: "photon"
OS_VERSION: "3"
OS_ARCH: "amd64"
如何設定節點計算組態和大小,取決於目標平台。如需相關資訊,請參閱 vSphere 的管理叢集組態、AWS 的管理叢集組態或 Microsoft Azure 的管理叢集組態。
選擇性地根據您的部署喜好設定,並依照〈組態檔變數參考〉的機器健全狀況檢查一節所述的準則,來更新變數。
例如:
ENABLE_MHC:
ENABLE_MHC_CONTROL_PLANE: true
ENABLE_MHC_WORKER_NODE: true
MHC_MAX_UNHEALTHY_CONTROL_PLANE: 60%
MHC_MAX_UNHEALTHY_WORKER_NODE: 60%
MHC_UNKNOWN_STATUS_TIMEOUT: 10m
MHC_FALSE_STATUS_TIMEOUT: 20m
如果要在網際網路受限的環境中部署管理叢集,請取消註解並更新 TKG_CUSTOM_IMAGE_REPOSITORY_*
設定。這些設定對所有目標平台都是通用的。在以下情況下,您無需設定私人映像登錄設定:
tanzu config set
命令來設定 TKG_CUSTOM_IMAGE_REPOSITORY_*
變數。透過執行 tanzu config set
設定的環境變數來覆寫叢集組態檔中的值。例如:
#! ---------------------------------------------------------------------
#! Image repository configuration
#! ---------------------------------------------------------------------
TKG_CUSTOM_IMAGE_REPOSITORY: "custom-image-repository.io/yourproject"
TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE: "LS0t[...]tLS0tLQ=="
依預設,您使用 Tanzu CLI 所部署的叢集會透過 Antrea 容器網路介面 (CNI),來提供叢集內容器網路。
您可以選擇性地針對 Pod 流量停用來源網路位址轉譯 (SNAT),實作 hybrid
、noEncap
、NetworkPolicyOnly
流量封裝模式、使用 Proxy 和網路原則,以及實作 Traceflow。
如需 Antrea 的詳細資訊,請參閱下列資源:
若要選擇性地在 Antrea 上設定這些功能,請取消註解並更新 ANTREA_*
變數。例如:
#! ---------------------------------------------------------------------
#! Antrea CNI configuration
#! ---------------------------------------------------------------------
ANTREA_NO_SNAT: true
ANTREA_NODEPORTLOCAL: true
ANTREA_NODEPORTLOCAL_ENABLED: true
ANTREA_NODEPORTLOCAL_PORTRANGE: 61000-62000
ANTREA_TRAFFIC_ENCAP_MODE: "encap"
ANTREA_PROXY: true
ANTREA_PROXY_ALL: true
ANTREA_PROXY_LOAD_BALANCER_IPS: false
ANTREA_PROXY_NODEPORT_ADDRS:
ANTREA_PROXY_SKIP_SERVICES: ""
ANTREA_POLICY: true
ANTREA_TRACEFLOW: true
ANTREA_DISABLE_UDP_TUNNEL_OFFLOAD: false
ANTREA_ENABLE_USAGE_REPORTING: false
ANTREA_EGRESS: true
ANTREA_EGRESS_EXCEPT_CIDRS: ""
ANTREA_FLOWEXPORTER: false
ANTREA_FLOWEXPORTER_COLLECTOR_ADDRESS: "flow-aggregator.flow-aggregator.svc:4739:tls"
ANTREA_FLOWEXPORTER_POLL_INTERVAL: "5s"
ANTREA_FLOWEXPORTER_ACTIVE_TIMEOUT: "5s"
ANTREA_FLOWEXPORTER_IDLE_TIMEOUT: "15s"
ANTREA_IPAM: false
ANTREA_KUBE_APISERVER_OVERRIDE: ""
ANTREA_MULTICAST: false
ANTREA_MULTICAST_INTERFACES: ""
ANTREA_NETWORKPOLICY_STATS: true
ANTREA_SERVICE_EXTERNALIP: true
ANTREA_TRAFFIC_ENCRYPTION_MODE: none
ANTREA_TRANSPORT_INTERFACE: ""
ANTREA_TRANSPORT_INTERFACE_CIDRS: ""
tanzu mc create
命令在您建立或更新叢集組態檔,並下載最新的 BOM 後,您可以執行 tanzu mc create --file CONFIG-FILE
命令來部署管理叢集,其中 CONFIG-FILE
是組態檔的名稱。如果您的組態檔是預設的 ~/.config/tanzu/tkg/cluster-config.yaml
,可以略過 --file
選項。如果您想要檢閱 tanzu mc create
命令所要套用的 Kubernetes 資訊清單,可以選擇性地使用 --dry-run
旗標來列印資訊清單,而無需進行變更。在產生 Kubernetes 資訊清單之前,此叫用仍會執行下述的驗證檢查。
注意
tanzu mc create
命令需要一段時間來完成。當tanzu mc create
正在執行時,請勿在同一啟動機器上額外叫用tanzu mc create
來部署多個管理叢集、變更內容或編輯~/.kube-tkg/config
。
若要部署管理叢集,請執行 tanzu mc create
命令。例如:
tanzu mc create --file path/to/cluster-config-file.yaml
vSphere 上的多個 AZ:如要立即或稍後跨多個可用區執行管理叢集或其工作負載叢集,請依照在 Kubernetes 中建立 FailureDomain
和 DeploymentZone
物件所述加入 --az-file
選項和 vsphere-zones.yaml
檔案:
tanzu mc create --file path/to/cluster-config-file.yaml --az-file path/to/vsphere-zones.yaml
執行 tanzu mc create
時,該命令會在部署管理叢集之前,執行數次驗證檢查。這些檢查因要部署管理叢集的基礎結構而異。
多 AZ 驗證:如果要部署管理叢集,如在 Kubernetes 中建立 FailureDomain 和 DeploymentZone 物件中所述定義 FailureDomains 和 DeploymentZone 資源,然後使用 tanzu mc create
命令中的 --az-file
選項引用它們,則叢集建立過程預設會執行以下額外檢查:
* All vSphere zones and regions referenced in `VSphereFailureDomain`, `VSphereDeploymentZone`, and related Kubernetes objects exist in vSphere, are accessible, and have host groups, VM groups, and tags that also exist.
* Tag categories for the tags exist in vSphere and are logically consistent.
* vSphere AZ/zone and region configurations are logically consistent.
* `MATCHING_LABELS` configuration settings correspond to labels in the `VSphereDeploymentZone` objects.
* Zones referenced in Kubernetes are at the same level in vSphere.
* ResourcePools and Folders referenced in the `VSphereDeploymentZone` resources exist in vSphere.
如要防止叢集建立程序驗證組態中指定的 vSphere 區和區域是否全部存在、是否一致,以及是否在同一層級定義,請在本機環境中將 SKIP_MULTI_AZ_VERIFY
設為 "true"
:
```
export SKIP_MULTI_AZ_VERIFY="true"
```
您無法在叢集設定檔中設定此變數。
使用 SKIP_MULTI_AZ_VERIFY
的典型情境是,您正在部署獨立管理叢集,將會使用該叢集建立跨多個 AZ 執行的工作負載叢集,但尚未設定工作負載叢集 AZ 的 vSphere 資源。
只要不符合其中任何條件,tanzu mc create
命令就會失敗。
執行 tanzu mc create
時,您可以在終端機中追蹤管理叢集的部署進度。第一次執行 tanzu mc create
所需的時間久於後續的執行,因為它必須將所需的 Docker 映像提取到啟動機器上的映像存放區。後續的執行不需要此步驟,因此速度更快。
如果在部署管理叢集之前 tanzu mc create
失敗,您應在重新執行 tanzu mc create
之前,先清理啟動機器上的構件。如需詳細資料,請參閱疑難排解管理叢集問題主題。如果在本機作業完成之前,執行 tanzu mc create
的機器關機或重新啟動,則部署將失敗。
如果部署成功,您會在終端機看到一則確認訊息:
Management cluster created! You can now create your first workload cluster by running tanzu cluster create [name] -f [file]
如需有關在部署管理叢集期間發生的情況、如何將 kubectl
連線到管理叢集、如何建立命名空間,以及如何向 Tanzu Mission Control 登錄管理叢集等的相關資訊,請參閱檢查並登錄新部署的獨立管理叢集。