建立標準叢集
經典基礎設施
使用 IBM Cloud CLI 或 IBM Cloud 控制台,建立一個可完全自訂的標準叢集,您可依需求選擇硬體隔離方式,並使用多工作節點等功能,以建構高可用性環境。
必要條件
Kubernetes 叢集可透過僅公開服務端點或同時使用公開與私有服務端點來建立。 無法停用公用服務端點。 因此,您無法將公共 Kubernetes 叢集轉換為私人叢集。 If you want to create a Classic cluster with a private service endpoint enabled, you must 啟用 VRF & 服務端點. 如果您想要僅限專用叢集,請考慮建立 VPC 叢集。
如果您要啟用群集的信任設定檔,請確定您已在帳戶中建立一個。 如需詳細資訊,請參閱 設定受信任的設定檔。
在控制台中建立一個經典叢集
若要開始建立群集,請導航至 主控台,然後按一下建立群集。
- 位置詳細資料
- 建立叢集時,其資源會保留在將叢集部署到的位置中。
-
- 資源群組:一個叢集只能建立在單一資源群組中,且叢集建立後,便無法變更其資源群組。 若要在非 default 資源群組中建立叢集,您必須至少具有該資源群組的檢視者角色。
-
- 地理位置: 選取要在其中建立叢集的區域,例如 北美洲。 地理位置有助於過濾您可以在主控台中選取的 可用性 及 Metro 值。
-
- 可用性: 可以使用 單一區域 或 多區域 配置來建立叢集。 多區域叢集提供高可用性,其中 Kubernetes 主節點部署在具有多區域功能的區域中,而主節點的三個抄本分散在不同區域中。
- 若為多區域叢集,請選擇 Metro 位置。 為獲得最佳效能,請選擇地理位置上最接近您的地區。 您的工作人員區域是基於您選擇的區域。 您可以選取要套用哪些工作者節點區域,而您的工作者節點會分散在您的區域中,以取得高可用性。 每一個工作者節點區域都有公用及專用 VLAN。 如果您在該區域中沒有 VLAN,則會為您建立 VLAN。
- 對於單一區域叢集,請選擇要在其中管理叢集的單一 工作者節點區域。 為了獲得最佳效能,請選擇市內地理位置上離您最近的區域。 每一個工作者節點區域都有公用及專用 VLAN。 若該區域尚未存在虛擬區域網路(VLAN),系統將自動為您建立。
- 可用性: 可以使用 單一區域 或 多區域 配置來建立叢集。 多區域叢集提供高可用性,其中 Kubernetes 主節點部署在具有多區域功能的區域中,而主節點的三個抄本分散在不同區域中。
- Kubernetes 版本
- 依預設,叢集是以預設 Kubernetes 版本建立。 您可以指定不同的 支援版本。
- 工作者儲存區
- 叢集工作者節點儲存區定義執行工作負載的工作者節點數目及類型。 您隨時可以變更工作者節點儲存區詳細資料。
-
- Flavor:Flavor 定義了在每個工作節點中設定,並提供給容器的虛擬 CPU、記憶體及磁碟空間的數量。 可用的裸機及虛擬機器類型會因您部署叢集所在的區域而不同。
-
- 作業系統 和 架構: 如需依叢集版本列出的可用作業系統和架構清單,請參閱 可用的版本。
-
- 每個區域的工作者節點: 針對高可用性,建議每個區域至少有 3 個工作者節點。
-
- 加密本端磁碟: 依預設,工作者節點具有 AES 256 位元磁碟加密。 您可以選擇在建立叢集時關閉磁碟加密。
- 主控節點服務端點
- 服務端點提供與主節點的通訊。 您可以選擇使用專用、公用或公用及專用雲端服務端點來配置叢集。 如需執行面對網際網路之應用程式需要何設定的相關資訊,或是保持叢集專用需要何設定的相關資訊,請參閱規劃叢集網路設定。
- 進入密鑰管理
- IBM Cloud Secrets Manager 可集中管理叢集裡的 Ingress 子網域憑證及其他密碼。 您可以選擇在叢集建立程序期間將 Secrets Manager 實例登錄至叢集。 您也可以指定密鑰群組,以用來控制對叢集裡密鑰的存取權。 在您建立叢集之後,可以配置或變更這兩個選項。
- 加密
- 使用金鑰管理服務 (KMS) 來啟用資料加密,以加密叢集裡的密碼及其他機密性資訊。 您也可以稍後 啟用 KMS。
- 叢集詳細資料
- 您可以自訂唯一叢集名稱及任何 標籤,以用來組織及識別 IBM Cloud 資源,例如
team或billing department。 - 如果要新增現有的受信任設定檔到群集,請指定受信任設定檔的 ID。 如果您沒有指定受信任的設定檔,您可以使用 API 金鑰來完成群集建立程序。 如需詳細資訊,請參閱 設定受信任的設定檔。
- 觀察整合
- 您可以啟用要包含在叢集上的其他觀察整合。 如果您具有該整合的現有平台實例,則會自動啟用部分整合。 在這種情況下,您無法停用此整合功能。 如果您想要使用整合,且您只有該整合的現有應用程式實例,則依預設會停用整合,且您必須手動啟用它。
-
- 日誌:您可以使用 IBM Cloud Logs 管理作業系統日誌、應用程式日誌和平台日誌。 如果您想稍後啟用此整合,請參閱 IBM Cloud Logs.
在 CLI 中建立經典叢集
使用命令 IBM Cloud 列介面建立您的經典叢集。
- 請確定您已完成 準備帳戶 的必要條件,並決定叢集設定。
- 安裝 IBM Cloud CLI 工具。
-
登入 IBM Cloud CLI。 如果您使用聯合 ID 登入,請使用
ibmcloud login --sso。ibmcloud login [--sso] -
如果您擁有多個 IBM Cloud 帳戶,請選擇您要建立叢集的帳戶。
-
若要在非 default 資源群組中建立叢集,請將目標設為該資源群組。 一個叢集只能在一個資源群組中建立,而且在建立叢集之後,您無法變更其資源群組。 您必須至少具有資源群組的 檢視者 角色,才能將其設為目標。
ibmcloud target -g RESOURCE_GROUP_NAME -
檢閱可以在其中建立叢集的區域。 在下列指令的輸出中,區域的 Location Type 為
dc。 若要跨越區域間的叢集,您必須在具有多區域功能的區域中建立叢集。 具有多區域功能的區域在多區域都會直欄中具有都會值。 如果要建立多區域叢集,則可以使用 IBM Cloud 主控台進行建立,或者在建立叢集後,新增更多區域至叢集。ibmcloud ks locations若您選取的區域不在您的國家/地區境內,請謹記,您可能需要合法授權,才能實際將資料儲存在其他國家/地區。
-
檢閱該區域中可用的工作者節點規格。 規格決定在每個工作者節點中設定並可供應用程式使用的虛擬 CPU 數量、記憶體數量和磁碟空間數量。 標準叢集裡的工作者節點可以作為共用或專用基礎架構上的虛擬機器進行建立,也可以作為專用於您的 Bare Metal Server 機器進行建立。 建立叢集後,可以藉由新增工作者節點儲存區來新增不同的規格。
在建立裸機機器之前,請確保要佈建裸機機器。 裸機機器按月計費。 如果錯誤地訂購了裸機機器,即使您立即取消該機器,也需要支付整個月的費用。
ibmcloud ks flavors --zone ZONE -
檢查要包含在叢集裡的區域中是否有現有 VLAN,如果有,請記下 VLAN 的 ID。 如果您在欲於叢集中使用的區域中,沒有任何公共或私有 VLAN,當您建立叢集時,IBM Cloud Kubernetes Service 會自動為您建立這些 VLAN。
ibmcloud ks vlan ls --zone ZONE輸出範例
ID Name Number Type Router 1519999 vlan 1355 private bcr02a.dal10 1519898 vlan 1357 private bcr02a.dal10 1518787 vlan 1252 public fcr02a.dal10 1518888 vlan 1254 public fcr02a.dal10- 若要建立可以在其中執行面對網際網路之工作負載的叢集,請檢查以確定公用和專用 VLAN 是否存在。 如果公用及專用 VLAN 已存在,請記下相符的路由器。 專用 VLAN 路由器的開頭一律為
bcr(後端路由器),而公用 VLAN 路由器的開頭一律為fcr(前端路由器)。 當建立叢集並指定公用和專用 VLAN 時,那些字首之後的數字和字母組合必須相符。 在範例輸出中,任何專用 VLAN 都可以與任何公用 VLAN 搭配使用,因為路由器都會包括02a.dal10。 - 若要建立用於僅在專用網路上延伸內部部署資料中心或透過閘道應用裝置提供有限公用存取權的叢集,請查看是否存在專用 VLAN。 如果您有專用 VLAN,請記下該 ID。
- 若要建立可以在其中執行面對網際網路之工作負載的叢集,請檢查以確定公用和專用 VLAN 是否存在。 如果公用及專用 VLAN 已存在,請記下相符的路由器。 專用 VLAN 路由器的開頭一律為
-
建立標準叢集。
- 若要建立可在其中執行面對網際網路之工作負載的叢集,請執行下列動作:
ibmcloud ks cluster create classic --zone <zone> --flavor <flavor> --hardware <shared_or_dedicated> --public-vlan <public_VLAN_ID> --private-vlan <private_VLAN_ID> --workers <number> --name <cluster_name> --version <major.minor.patch> [--public-service-endpoint] [--private-service-endpoint] [--pod-subnet] [--service-subnet] [--disable-disk-encrypt] ``` * 若要建立僅具有專用網路連線功能的叢集(例如延伸內部部署資料中心),請執行下列動作: ```sh {: pre} ibmcloud ks cluster create classic --zone <zone> --flavor <flavor> --hardware <shared_or_dedicated> --private-vlan <private_VLAN_ID> --private-only --workers <number> --name <cluster_name> --version <major.minor.patch> --public-service-endpoint [--pod-subnet] [--service-subnet] [--disable-disk-encrypt] ```
--zone <zone>-
指定您稍早所選擇,且想要用來建立叢集的 IBM Cloud 區域 ID。
--flavor <flavor>-
為先前選擇的工作者節點指定規格。
--hardware <shared_or_dedicated>-
指定工作者節點的硬體隔離層次。 請使用
dedicated以獲得僅供您專用的實體資源,或使用shared讓實體資源可與其他 IBM 客戶共享。 預設值為 shared。 此值對於 VM 標準叢集是選用的。 若為裸機規格,請指定dedicated。 --public-vlan <public_vlan_id>-
如果已經在 IBM Cloud 基礎架構帳戶中為該區域設定了公用 VLAN,請輸入先前擷取到的該公用 VLAN 的 ID。 如果您的帳戶中沒有公用 VLAN,請不要指定此選項。IBM Cloud Kubernetes Service 會自動為您建立公用 VLAN。 專用 VLAN 路由器的開頭一律為
bcr(後端路由器),而公用 VLAN 路由器的開頭一律為fcr(前端路由器)。 當建立叢集並指定公用和專用 VLAN 時,那些字首之後的數字和字母組合必須相符。 --private-vlan <private_vlan_id>-
如果已經在 IBM Cloud 基礎架構帳戶中為該區域設定了專用 VLAN,請輸入先前擷取到的該專用 VLAN 的 ID。 如果您的帳戶中沒有專用 VLAN,請不要指定此選項。IBM Cloud Kubernetes Service 會自動為您建立專用 VLAN。 專用 VLAN 路由器的開頭一律為
bcr(後端路由器),而公用 VLAN 路由器的開頭一律為fcr(前端路由器)。 當建立叢集並指定公用和專用 VLAN 時,那些字首之後的數字和字母組合必須相符。 --private-only-
建立僅使用專用 VLAN 的叢集。 若您啟用此選項,請勿同時啟用「
--public-vlan」選項。 --name <name>-
指定叢集的名稱。 名稱必須以字母開頭,可包含字母、數字、句點 (.) 及連字號 (-),且長度不得超過 35 個字元。 請使用在各地區之間都唯一的名稱。 叢集名稱和叢集部署所在的地區會形成 Ingress 子網域的完整網域名稱。 為了確保 Ingress 子網域在地區內是唯一的,叢集名稱可能會被截斷,並在 Ingress 網域名稱內附加一個隨機值。
--workers <number>-
指定要包含在叢集裡的工作者節點數。 預設值是 1。
--version <major.minor.patch>-
叢集主節點的 Kubernetes 版本。 這是選用值。 未指定版本時,會使用支援的預設 Kubernetes 版本來建立叢集。 若要查看可用的版本,請執行
ibmcloud ks versions``。 --public-service-endpoint-
啟用公有雲服務端點,以便能透過公有網路存取您的 Kubernetes 主節點(例如,從您的 CLI 執行
kubectl指令),並讓您的 Kubernetes 主節點與工作節點能夠透過公有 VLAN 進行通訊。 如果您想要僅限專用 cluster.After 建立叢集之後,您可以執行ibmcloud ks cluster get --cluster <cluster_name_or_ID>來取得端點。 --private-service-endpoint-
在 已啟用 VRF 和 已啟用服務端點的帳戶 中: 啟用專用雲端服務端點,以便 Kubernetes 主節點和工作者節點可以透過專用 VLAN 進行通訊。 此外,您可以選擇啟用公有雲服務端點,並透過「
--public-service-endpoint」選項,透過網際網路存取您的叢集。 若您僅啟用私有雲服務端點,則必須連線至私有 VLAN,才能與您的 Kubernetes 主伺服器進行通訊。 啟用專用雲端服務端點之後,您稍後無法停用 it.After 建立叢集之後,您可以執行ibmcloud ks cluster get --cluster <cluster_name_or_ID>來取得端點。 --pod-subnet-
依預設,部署到工作者節點的所有 Pod 都會指派有 172.30.0.0/16 範圍內的專用 IP 位址。 如果您計劃透過 IBM Cloud® Direct Link 或 VPN 服務將叢集連接到本地網路,您可以透過指定自訂子網 CIDR(該 CIDR 會為您的 Pod 提供私有 IP 位址)來避免子網衝突。 當您選擇子網路大小時,請考量您計劃建立的叢集大小,以及未來可能新增的工作者節點數目。 子網的 CIDR 範圍必須至少為
/23,這能為叢集中的最多四個工作節點提供足夠的 Pod IP 位址。 若為較大的叢集,請使用/22,以具有八個工作者節點的足夠 Pod IP 位址,/21以具有 16 個工作者節點的足夠 Pod IP 位址,依此類推。 請注意,Pod 和服務子網路不能重疊。 依預設,服務子網路位於 172.21.0.0/16 範圍內。 您選擇的子網路必須在下列其中一個範圍內: -172.17.0.0 - 172.17.255.255-172.21.0.0 - 172.31.255.255-192.168.0.0 - 192.168.255.255-198.18.0.0 - 198.19.255.255 --service-subnet-
- 依預設,部署到叢集的所有服務都會指派有 172.21.0.0/16 範圍內的專用 IP 位址。 如果您計劃透過 IBM Cloud Direct Link 或 VPN 服務將叢集連接到本地網路,您可以透過指定自訂子網 CIDR(該 CIDR 會為您的服務提供私有 IP 位址)來避免子網衝突。
- 子網必須以 CIDR 格式指定,其大小至少為
/24(此大小允許叢集中最多可容納 255 項服務),或更大。 您選擇的子網路必須在下列其中一個範圍內:
- `172.17.0.0 - 172.17.255.255` - `172.21.0.0 - 172.31.255.255` - `192.168.0.0 - 192.168.255.255` - `198.18.0.0 - 198.19.255.255`: 請注意, Pod 和服務子網路不能重疊。 依預設,Pod 子網路位於 172.30.0.0/16 範圍內。
--disable-disk-encrypt- 依預設,工作者節點具有 AES 256 位元磁碟加密特性。 如果您要停用加密,請包括此選項。
--sm-group GROUP-
用於儲存您機密資料的 Secrets Manager 實例的機密群組 ID。 若要取得密鑰群組 ID,請參閱 Secrets Manager CLI 參考資料。
--sm-instance INSTANCE-
Secrets Manager 實例的 CRN。 若要取得實例的 CRN,請執行
ibmcloud ks ingress instance ls --cluster CLUSTER。 --trusted-profile-id ID-
指定要與群集關聯的現有信任設定檔的 ID。 有了可信賴的設定檔,您就可以授權存取帳戶中的資源,而無需管理獨立的 IAM 認證。 如需詳細資訊,請參閱 設定受信任的設定檔。
-
驗證已要求建立叢集。 若為虛擬機器,要訂購工作者節點機器並且在您的帳戶中設定及佈建叢集,可能需要一些時間。 裸機實體機器是藉由與 IBM Cloud 基礎架構之間的手動互動來進行佈建,可能需要多個營業日才能完成。
ibmcloud ks cluster ls當您的 Kubernetes 主節點的配置完成後,您的叢集狀態將變更為「
normal」。 Kubernetes 主節點就緒後,將起始工作者節點的佈建。NAME ID State Created Workers Zone Version Resource Group Name Provider mycluster blrs3b1d0p0p2f7haq0g normal 20170201162433 3 dal10 1.35.7_1526 Default classic您的叢集是否未處於「
normal」狀態? 請參閱叢集除錯手冊以取得說明。 例如,如果您的叢集佈建在受防火牆閘道應用裝置保護的帳戶中,您必須配置防火牆設定,以容許將送出的資料流量傳送至適當的埠和 IP 位址。 -
檢查工作者節點的狀態。
ibmcloud ks worker ls --cluster <cluster_name_or_ID>工作者節點就緒後,工作者節點狀況會變更為 normal,而狀態會變更為 Ready。 當節點狀態為 Ready 時,您就可以存取叢集。 請注意,即使叢集已就緒,其他服務所使用的一些叢集部分(例如 Ingress 密碼或登錄映像檔取回密碼)可能還是在處理中。 請注意,如果已建立僅使用專用 VLAN 的叢集,則不會將任何公用 IP 位址指派給工作者節點。
ID Public IP Private IP Flavor State Status Zone Version kube-blrs3b1d0p0p2f7haq0g-mycluster-default-000001f7 169.xx.xxx.xxx 10.xxx.xx.xxx u3c.2x4.encrypted normal Ready dal10 1.35.7_1526每個工作者節點都會獲指派唯一的工作者節點 ID 及網域名稱,而在建立叢集之後不得手動變更。 若您變更 ID 或網域名稱,Kubernetes 主控端將無法管理您的叢集。
-
可選:如果您在 多專區區域 中建立集群,則可以 跨區域分佈預設工作線程池 以提高集群的可用性。
-
在您的叢集建立之後,您可以配置 CLI 階段作業以開始使用叢集。
您的叢集已備妥可處理您的工作負載! 您也可能想要 新增標籤至叢集,例如使用叢集的團隊或計費部門,以協助管理 IBM Cloud 資源。
建立標準叢集的指令範例
在共用虛擬機器上建立「標準」叢集的範例指令。
ibmcloud ks cluster create classic --name my_cluster --zone dal10 --flavor b3c.4x16 --hardware shared --workers 3
在裸機伺服器上建立「標準」叢集的範例指令。
ibmcloud ks cluster create classic --name my_cluster --zone dal10 --flavor mb2c.4x32 --hardware dedicated --workers 3 --public-vlan <public_VLAN_ID> --private-vlan <private_VLAN_ID>
建立僅使用專用 VLAN 及專用雲端服務端點的「標準」叢集的範例指令。
ibmcloud ks cluster create classic --name my_cluster --zone dal10 --flavor b3c.4x16 --hardware shared --workers 3 --private-vlan <private_VLAN_ID> --private-only --private-service-endpoint
對於經典的多區域叢集,在 多區域都會區 中建立叢集後,請新增區域。 將區域新增至標準叢集的範例指令。
ibmcloud ks zone add classic --zone <zone> --cluster <cluster_name_or_ID> --worker-pool <pool_name> --private-vlan <private_VLAN_ID> --public-vlan <public_VLAN_ID>
使用 Terraform 建立單一區域標準叢集
IBM Cloud 上的 Terraform 可對 IBM Cloud 平台基礎架構和資源 (包括標準叢集) 啟用可預測且一致的佈建。 若要使用 Terraform 建立標準叢集,請先建立 Terraform 配置檔,以宣告您要建立的叢集資源類型。 然後,套用 Terraform 配置檔。 如需 Terraform 的相關資訊,請參閱 關於 Terraform on IBM Cloud。
開始之前:
- 安裝 Terraform CLI 和 IBM Cloud 提供者外掛程式。
- 請確定您有 IBM Cloud API 金鑰。
-
建立 Terraform 提供者檔案。 將檔案儲存在 Terraform 目錄中。 如需相關資訊,請參閱 Terraform IBM Cloud 提供者說明文件。
範例 Terraform 提供者檔案。
terraform { required_providers { ibm = { source = "IBM-Cloud/ibm" version = "1.53.0" } } } provider "ibm" { region = "us-south" ibmcloud_api_key = "<api-key>" } -
建立標準叢集的 Terraform 配置檔。 將檔案儲存在 Terraform 目錄中。 以下範例配置建立一個經典集群,在一個區域中包含三個工作節點。 如需相關資訊及叢集配置選項,請參閱 Terraform
ibm_container_cluster文件。範例 Terraform 配置檔。
resource "ibm_container_cluster" "testacc_cluster" { name = "test-classic" datacenter = "dal10" machine_type = "b3c.4x16" hardware = "shared" public_vlan_id = "<vlan_id>" private_vlan_id = "<vlan_id" subnet_id = ["<subnet_id>"] default_pool_size = 3 }name- 叢集的名稱。
datacenter- 要建立叢集的區域。 若要查看可用的區域,請執行
ibmcloud ks zones --provider classic。 machine_type- 工作者節點規格。 規格會決定工作者節點可用的記憶體、CPU 及磁碟空間量。 如需可用工作者節點規格的清單,請執行
ibmcloud ks flavors --zone <zone> --provider classic,或參閱 標準規格。 hardware- 您的工作節點的硬體隔離等級。 請使用
dedicated以獲得僅供您專用的實體資源,或使用shared讓實體資源可與其他 IBM 客戶共享。 此選項僅適用於虛擬機器工作者節點規格。 public_vlan_id及private_vlan_id- 選用。 您要用於工作者節點的公用或專用 VLAN ID。 若要尋找可用的 VLAN 及子網路,請執行
ibmcloud ks vlans --zone <zone>。 subnet_id- 選用。 您要用於工作者節點的現有子網路 ID。 若要尋找現有子網路,請執行
ibmcloud ks subnets --provider classic --zone <zone>。 default_pool_size- 您要新增至預設工作者節點儲存區的工作者節點數目。
-
在 CLI 中,導覽至 Terraform 目錄。
cd <terraform_directory> -
執行指令以起始設定及規劃 Terraform 動作。 請檢閱計劃輸出,以確定已執行正確的動作。
terraform initterraform plan -
套用 Terraform 檔案以建立叢集。 然後,導覽至 IBM Cloud 主控台,以檢查叢集是否正在佈建。
terraform apply
標準叢集的後續步驟
- 在沒有閘道的情況下,將網路工作負載隔離至標準叢集裡的邊緣工作者節點。
- 使用公用網路服務或專用網路服務,來公開應用程式。 如果您有多個公用叢集具有已公開的應用程式,請考量使用 廣域負載平衡器 來連接它們,以取得高可用性。
- 透過設定 IBM Cloud 帳戶,將您的群集與私人網路以外的服務連線。IBM Cloud Direct Link.
- 建立 Calico 主機網路原則以在公用網路和專用網路上隔離叢集。
- 如果您使用閘道應用裝置(例如 Virtual Router Appliance (VRA)),則請在公用防火牆中開啟必要埠和 IP 位址,以允許傳送至網路服務的入埠資料流量。 如果您在專用網路上也有一個防火牆,則容許工作者節點之間的通訊,並讓您的叢集透過專用網路來存取基礎架構資源。