全部產品
Search
文件中心

Container Service for Kubernetes:建立ACK託管叢集

更新時間:Jul 01, 2025

建立ACK託管叢集時,您只需配置Worker節點,Master節點由阿里雲Container Service建立並託管,降低營運成本,讓您更聚焦於業務應用。本文介紹如何通過控制台、API、Terraform、SDK以及CLI等方式建立ACK託管叢集

在開始建立ACK叢集之前,建議您已瞭解Kubernetes基礎知識Container ServiceACKACK託管叢集等基礎資訊。

如果您是首次使用ACK託管叢集,可參見通過ACK快速搭建魔方遊戲應用開始新手入門體驗。體驗結束後請及時釋放資源,避免產生預期外費用。

規劃與設計

建立叢集前,請根據業務需求規劃並設計叢集,以確保叢集能夠穩定、高效且安全地運行。大多數配置項在叢集建立後仍可調整,但部分配置項建立後不支援更改,尤其是叢集可用性、叢集網路相關的配置。規劃時,請確保已考慮以下因素。

分類

說明

部署位置

  • 地區:所選地區與使用者和資源部署地區的距離越近,網路時延越低,訪問速度越快。

  • 可用性區域:推薦配置多可用性區域,以保證叢集高可用。

版本和規格

  • Kubernetes版本:規劃使用的Kubernetes版本。建議使用當前的最新版本。

  • 叢集規格:提供Pro版和基礎版。Pro版更適用於生產環境,提供SLA保障;基礎版更適用於測試環境,且資源配額有限。

網路規劃

  • 網路外掛程式:選擇Terway或Flannel模式。簡單來說,如果對網路安全、IPAM管理(例如固定Pod IP、NetworkPolicy等)等方面有強訴求,建議使用Terway;如果叢集規模較小(例如小於500個節點),且對網路無特殊需求,可使用Flannel。具體差異,請參見容器網路外掛程式Terway與Flannel對比

  • 網路地址規劃根據業務情境和叢集規模規劃VPC網段(VPC自身網段和vSwitch網段)和Kubernetes網段(Pod位址區段和Service位址區段),定義整個叢集的IP位址範圍以及Pod和節點可用的IP地址數量。

  • 公網訪問:叢集節點是否需要訪問公網(拉取公用鏡像時需開通公網)。

    具體配置,請參見網路設定中的為專用網路配置 SNAT配置項。

  • IPv6雙棧:叢集是否需要同時支援IPv4與IPv6協議。如需啟用,叢集所處VPC必須支援雙棧,且需規劃IPv6網段。

  • 安全性群組:叢集資源所在的安全性群組,以及使用的安全性群組類型。

  • 叢集本地區名:叢集中所有Service使用的頂級網域名稱(標準尾碼),使得Pod和其他資源可以通過名稱(而不是IP地址)相互訪問。預設為cluster.local,如需自訂,請參見配置叢集本地區名(ClusterDomain)有哪些注意事項?

準備工作

建立叢集前,請確保您已經開通Container ServiceACK、為您的阿里雲帳號或RAM帳號授予了ACK系統服務角色(ACK需要這些許可權來調用相關服務或執行叢集操作),並且開通了相關雲產品(例如VPC、負載平衡、NAT Gateway等)。具體操作,請參見快速建立ACK託管叢集

說明

建立叢集過程中涉及負載平衡CLB等按量資源的購買,請確保您的賬戶餘額充足,避免因為欠費導致停機。

建立叢集

ACK支援通過控制台、API、SDK、Terraform以及CLI方式建立叢集。

控制台

建立流程

說明

如需使用RAM使用者在控制台建立叢集,需配置對應的許可權後才能正常使用,請參見Container Service控制台許可權依賴完成精細化授權。

您可以參見控制台指引,基於ACK預設的叢集配置建立一個叢集。如果您想更細粒度地控制叢集配置,請參見ACK託管叢集配置項說明瞭解並啟用對應配置項。下文介紹流程概覽。

步驟一:進入建立頁面

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 在頁面左側頂部,選擇目標資源所在的資源群組和地區。image

  3. 叢集列表頁面,單擊建立叢集。在ACK 託管叢集頁面,按照頁面指引完成叢集配置、節點池配置、組件配置。

    下文步驟未開啟智能託管模式。如需使用,請參見建立ACK託管叢集(智能託管模式)

步驟二:配置叢集

配置類型

說明

樣本樣式

基礎配置

叢集的基礎資訊,包括名稱、規格、地區、版本等。支援啟用叢集版本自動升級,並配置計劃執行的維護視窗。

image

網路設定

IPv6雙棧開關、VPC和vSwitch配置、是否允許通過公網訪問API Server、安全性群組、網路外掛程式、網段配置等。

image

進階配置

叢集資源管理、叢集安全相關的配置。

image

詳細配置項說明,請參見叢集配置

(可選)步驟三:配置節點池

節點池用於對節點進行分組管理,是具有相同屬性的一組節點的邏輯集合,本身不計費。簡單來說,節點池類似於一個配置模板,後續節點池中擴容出的節點都將使用該模板配置。您在本步驟配置的節點池會作為叢集的預設節點池。

您可以按照頁面提示跳過節點池的建立和配置。叢集建立後,您可以參見建立和管理節點池建立更多節點池,實現不同類型(例如作業系統、CPU架構、計費類型、執行個體類型等)節點的混部和隔離,也可以參見添加已有節點將已購買的ECS執行個體添加到叢集中。

配置類型

說明

樣本樣式

基礎配置

節點的基礎資訊,包括名稱、運行時。支援啟用自動化營運能力。

image

執行個體和鏡像配置

節點的付費類型、使用的執行個體規格(推薦選擇多個)、作業系統等。

image

儲存配置

節點使用的系統硬碟(安裝和運行作業系統)和資料盤(持久化儲存業務資料)。

image

執行個體數量配置

節點池期望維持的執行個體數量、搶佔式執行個體的容量及補償配置(僅付費類型為搶佔式執行個體時支援)。

image

進階配置

ECS標籤、節點標籤、汙點等進階配置。

image

詳細配置項說明,請參見節點池配置

步驟四:配置組件

為進一步拓展叢集功能,除系統組件外,ACK還提供多種類型的功能組件,提供叢集網路、可觀測性、成本最佳化等功能。

說明

ACK基於最佳實務為您預設安裝了一些組件。您可以在此步驟中查看並確認,也可以在叢集建立後進行安裝、卸載、升級等操作,請參見管理組件

配置類型

說明

樣本樣式

基礎組件

網路、儲存、可觀測組件。

image

更多組件

應用管理、日誌監控、儲存等情境下的組件。

image

詳細配置項說明,請參見組件配置

步驟五:確認配置和計費資訊

確認配置頁面,確認叢集的配置資訊,包括功能配置、資源計費、雲產品依賴檢查等,並閱讀服務合約。

ACK託管叢集涉及叢集管理費用(僅Pro版收取)和雲產品費用。您可以在建立頁面下方查看叢集涉及的費用總覽,也可以查看ACK和各產品的計費文檔,請參見計費概述雲產品資源費用

您還可以在確認配置頁面的右上方單擊同等代碼,產生當前叢集配置對應的Terraform或SDK樣本參數。

API

調試入口

CreateCluster調試入口

請求樣本

建立一個ACK託管叢集Pro版的請求樣本如下,完整的參數說明請參見CreateCluster - 建立叢集

POST /clusters 
<公用要求標頭>
{
    "name": "ACK託管叢集",            
    "cluster_type": "ManagedKubernetes",  //和profile、cluster_spec配合使用,指定叢集的類型為ACK託管叢集Pro版。#required
    "profile": "Default",                    
    "cluster_spec": "ack.pro.small",         
    "kubernetes_version": "1.32.1-aliyun.1",  //建立的叢集版本,建議選擇最新版本。   
    "region_id": "cn-hongkong",   //叢集所屬地區為香港地區。#required
    "snat_entry": true,           // 為專用網路配置SNAT規則,以開啟叢集公網訪問。
    "endpoint_public_access": false,  //叢集不開啟API server公網訪問。
    "deletion_protection": true,  //開啟叢集刪除保護。
    "proxy_mode": "ipvs",         //選擇高效能的kube-proxy代理模式IPVS。
    "tags": [],
    "timezone": "Asia/Shanghai",
    "addons": [                  //安裝的叢集組件。
        {
            "name": "terway-controlplane",
            "config": "{\"ENITrunking\":\"true\"}"
        },
        {
            "name": "terway-eniip",  //叢集的網路類型為Terway方式。叢集建立後不可修改。
            "config": "{\"IPVlan\":\"false\",\"NetworkPolicy\":\"false\",\"ENITrunking\":\"true\"}"
        },
        {
            "name": "csi-plugin"
        },
        {
            "name": "managed-csiprovisioner"
        },
        {
            "name": "storage-operator",
            "config": "{\"CnfsOssEnable\":\"false\",\"CnfsNasEnable\":\"false\"}"
        },
        {
            "name": "nginx-ingress-controller",
            "disabled": true
        },
        {
            "name": "ack-node-local-dns"
        }
    ],
    "enable_rrsa": false,
    "os_type": "Linux",
    "platform": "AliyunLinux",
    "image_type": "AliyunLinux3",
    "pod_vswitch_ids": [         //Terway網路類型的叢集,需要指定Pod所在的虛擬交換,因為Pod獨佔一個機器IP。
        "vsw-j6cht66iul7h61x******",
        "vsw-j6c5ne6mxgnx3g5******"
    ],
    "charge_type": "PostPaid",
    "vpcid": "vpc-j6cc1ddlp4rzs7v******",   //叢集的專用網路ID須在網路規劃時確定,建立後不可修改。#required
    "service_cidr": "192.168.xx.xx/16",     //叢集的Service網段。#required
    "vswitch_ids": [                        //選擇多個交換器用於保證叢集的高可用。#required
        "vsw-j6cht66iul7h61x******",
        "vsw-j6c5ne6mxgnx3g5******"
    ],
    "ip_stack": "ipv4",                     //選擇IP棧類型為IPv4。
    "logging_type": "SLS",
    "cpu_policy": "none",
    "service_account_issuer": "https://kubernetes.default.svc",
    "api_audiences": "https://kubernetes.default.svc",
    "is_enterprise_security_group": true,
    "maintenance_window": {    //設定每周三01:00 ~ 04:00為叢集的維護視窗。
        "enable": true,
        "duration": "3h",
        "weekly_period": "Thursday",
        "maintenance_time": "2025-03-03T01:00:00.000+08:00",
    },
    "operation_policy": {
        "cluster_auto_upgrade": {
            "enabled": true,
            "channel": "stable"
        }
    },
    "controlplane_log_ttl": "30",
    "controlplane_log_components": [
        "apiserver",
        "kcm",
        "scheduler",
        "ccm",
        "controlplane-events",
        "alb"
    ],
    "nodepools": [
        {
            "nodepool_info": {         //節點池配置。
                "name": "default-nodepool"        
            },
            "scaling_group": {
                "system_disk_category": "cloud_essd",   //節點池的系統硬碟選擇ESSD雲端硬碟。
                "system_disk_size": 120,                //設定系統硬碟大小為120 GiB。
                "system_disk_performance_level": "PL0", //系統硬碟單盤IOPS效能上限為1萬。
                "system_disk_encrypted": false,
                "data_disks": [],
                "tags": [],
                "soc_enabled": false,
                "security_hardening_os": false,
                "vswitch_ids": [
                    "vsw-j6cht66iul7h61x******",
                    "vsw-j6c5ne6mxgnx3g5******"
                ],
                "instance_types": [
                    "ecs.c6.xlarge",
                    "ecs.c7.xlarge"
                ],
                "instance_patterns": [],
                "login_password": "",
                "instance_charge_type": "PostPaid",
                "security_group_ids": [],
                "platform": "AliyunLinux",
                "image_id": "aliyun_3_x64_20G_alibase_20241218.vhd",
                "image_type": "AliyunLinux3",
                "desired_size": 3,        //建立一個期望節點數為3的節點池。
                "rds_instances": [],
                "multi_az_policy": "BALANCE"
            },
            "kubernetes_config": {
                "cpu_policy": "none",
                "cms_enabled": true,
                "unschedulable": false,
                "runtime": "containerd",    //設定容器運行時為containerd 1.6.36。叢集建立後不可修改。
                "runtime_version": "1.6.36"
            },
            "node_config": {
                "image_acceleration_config": {
                    "enable_image_acceleration": false
                }
            },
            "management": {
                "enable": true,
                "auto_repair": true,
                "auto_repair_policy": {
                    "restart_node": true
                },
                "auto_upgrade": true,
                "auto_upgrade_policy": {
                    "auto_upgrade_kubelet": true,
                    "auto_upgrade_os": false
                },
                "auto_vul_fix": true,
                "auto_vul_fix_policy": {
                    "vul_level": "asap",
                    "restart_node": true
                },
                "rolling_policy": {
                    "max_parallelism": 10
                }
            }
        }
    ]
}

重點參數說明

在調用CreateCluster介面建立ACK託管叢集時,您需要重點關注如下參數的差異化配置:

參數

描述

參數組合

cluster_type

叢集類型。建立ACK託管叢集時,該參數必須配置為ManagedKubernetes

建立ACK託管叢集Pro版

  • "cluster_type": "ManagedKubernetes"

  • "profile": "Default"

  • "cluster_spec": "ack.pro.small"

建立ACK託管叢集基礎版

  • "cluster_type": "ManagedKubernetes"

  • "profile": "Default"

  • "cluster_spec": "ack.standard"

profile

叢集子類型。建立ACK託管叢集時,該參數必須配置為Default

cluster_spec

叢集規格。

  • ack.pro.small:表示建立ACK託管叢集Pro版

  • ack.standard:表示建立ACK託管叢集基礎版

Terraform

具體操作,請參見通過Terraform建立ACK託管叢集

SDK

具體操作,請參見Java SDK調用樣本

CLI

具體操作,請參見通過CLI建立ACK叢集

後續操作

  • 應用部署:建立並管理工作負載,包括Deployment、StatefulSet、Job等,請參見建立工作負載

  • 服務發現與網路管理

    • Service為一組Pod提供固定的訪問入口,實現叢集內訪問、公網訪問等。

    • Ingress配置不同的轉寄規則,例如通過網域名稱或者訪問路徑來路由到不同的Service上,從而實現負載平衡。

    • 服務發現DNS:為叢集內的工作負載提供網域名稱解析服務,使得叢集內部的服務可以通過服務名來互相訪問,無需知道具體的IP地址。

  • 可觀測配置:實現叢集日誌收集和監控警示,便於叢集診斷和狀態觀測。請參見可觀測性瞭解ACK在基礎設施、容器、工作負載等維度提供的可觀測方案。

  • 儲存:基於CSI外掛程式實現應用資料持久化儲存、敏感和配置資料存放區、儲存資源動態供應等儲存需求。

  • Auto Scaling配置:如業務資源需求不易預測或有周期性變化(例如Web應用、遊戲服務、線上教育等),推薦啟用Auto Scaling,包括工作負載伸縮(HPA、CronHPA、VPA等)和計算資源伸縮(節點自動調整節點即時彈性)。

  • 精細化授權

    如需對基礎資源層(ACK依賴的雲產品)和叢集內部資源(Kubernetes資來源物件)進行更細粒度的許可權控制,ACK提供基於阿里雲RAM和Kubernetes原生RBAC機制的多種許可權管理方案,請參見授權

配額與限制

如叢集規模較大或帳號資源較多,請遵循使用ACK叢集時涉及的配額與限制。詳細資料,請參見配額與限制

  • 使用限制:包括ACK配置限制(例如帳號餘額等)單叢集容量限制(單叢集內不同Kubernetes資源的最大容量)。

  • 配額限制與提升方式:ACK叢集配額限制和ACK依賴雲產品(例如ECS、VPC等)的配額限制。如需提升配額,請參見文檔擷取提升方式。

常見問題

如在使用ACK叢集的過程中遇到問題,可參見故障排除常見問題進行自排查。

可以建立一個0節點的叢集嗎?

可以。如需跳過節點建立,或在叢集建立後再將已購買的ECS執行個體添加到叢集中,可在配置過程中將期望節點數配置為0,即配置叢集中的執行個體數量為0,並完成其他必選項的配置,後續再參見建立和管理節點池完成節點池的配置更新或建立更多節點池。如需將已購買的ECS執行個體添加到叢集,請參見添加已有節點

已購買的ECS執行個體如何添加到叢集中?

ACK支援將已有ECS執行個體手動或自動添加到節點池中。自動添加的方式會根據節點池當前的作業系統替換該ECS執行個體原有的作業系統,原系統硬碟會被釋放。如需保留ECS執行個體作業系統,請選擇手動添加的方式。相關注意事項及操作步驟,請參見添加已有節點

建議待添加ECS執行個體與待加入的節點池具有相同或類似配置(例如付費類型、磁碟配置、執行個體規格等),便於後續節點的統一管理。

已購買的隨用隨付的ECS執行個體可以添加到訂用帳戶的節點池中嗎?

可以,您可以參見添加已有節點完成操作。但當節點池付費類型為訂用帳戶時,後續節點池擴容出的節點均為訂用帳戶類型。建議您建立不同的節點池,納管不同類型(例如付費類型、磁碟配置、執行個體規格等)的節點。具體操作,請參見建立和管理節點池

為什麼剛建立好的叢集就提示Pod數量不足?

可能是以下原因。

  • 組件佔用:叢集組件會以Pod的形式存在,佔用節點資源。部分組件可能會採用多副本形式。如果您建立叢集配置組件時啟用的功能較多,可能會佔用節點較多的Pod數量。

  • 執行個體規格較小:Terway模式下,單節點支援的最大Pod數依賴於ECS執行個體規格類型系列所提供的彈性網卡(ENI)數量。雖然節點支援的最大Pod數跟CPU和記憶體並不是直接的線性關係,但通常較小規格的ECS執行個體支援的ENI數量較少,單節點的Pod限額也較小。

當節點Pod數量達到上限時,新Pod將調度失敗,影響服務效能。您可以通過擴容節點池以增加更多可用的節點、升配節點以提升單節點最大Pod數等方式增加可使用的Pod數,請參見調整可使用的節點Pod數量

購買後查看節點可用的CPU和記憶體資源,為什麼比購買時的執行個體規格定義的少?

ACK需要佔用一定的節點資源來為kube組件和system進程預留資源,從而保證OS核心和系統服務、Kubernetes守護進程的正常運行。這會導致節點的資源總數(Capacity)與可分配的資源數(Allocatable)之間存在差異。詳細資料,請參見節點資源預留策略

相關文檔