基本概念
有狀態工作負載:即kubernetes中的“StatefulSet”,有狀態工作負載支持實例有序部署和刪除,支持持久化存儲,適用于實例間存在互訪的場景,如ETCD、mysql-HA等。
操作場景
在運行過程中會保存數據或狀態的工作負載稱為“有狀態工作負載(statefulset)”。例如Mysql,它需要存儲產生的新數據。因為容器可以在不同主機間遷移,所以在宿主機上并不會保存數據,這依賴于云容器引擎提供的高可用存儲卷,將存儲卷掛載在容器上,從而實現有狀態工作負載的數據持久化。
約束與限制
當您刪除或擴縮有狀態負載時,為保證數據安全,系統并不會刪除它所關聯的存儲卷。
當您刪除一個有狀態負載時,為實現有狀態負載中的Pod可以有序停止,請在刪除之前將副本數縮容到0。
您需要在創建有狀態負載的同時,創建一個Headless Service,用于解決有狀態負載Pod互相訪問的問題,詳情請參見Headless Service。
節點不可用時,Pod狀態變為“未就緒”,此時需要手工刪除有狀態工作負載的Pod,Pod實例才會遷移到正常節點上。
前提條件
在創建容器工作負載前,您需要存在一個可用集群。若沒有請參照集群開通中內容創建。
若工作負載需要被外網訪問,請確保集群中至少有一個節點已綁定彈性IP,或已購買負載均衡實例。
創建多個工作負載時,請確保容器使用的端口不沖突 ,否則部署會失敗。
操作步驟及說明
步驟 1 登錄云容器引擎控制臺。
步驟 2 單擊集群名稱進入集群,在左側選擇“工作負載”,選擇“有狀態”,在右上角單擊“創建StatefulSet”。
步驟 3 配置工作負載的信息。
基本信息
負載類型:選擇有狀態工作負載StatefulSet。工作負載類型的介紹請參見工作負載概述。
負載名稱:填寫工作負載的名稱。
命名空間:選擇工作負載的命名空間,默認為當前進入的命名空間。您可以單擊后面的“創建命名空間”,命名空間的詳細介紹請參見創建命名空間。
實例數量:填寫實例的數量,也就是Pod的數量。
時區同步:選擇是否開啟時區同步。開啟后容器與節點使用相同時區(時區同步功能依賴容器中掛載的本地磁盤,請勿修改刪除),時區同步詳細介紹請參見時區同步。
容器配置
容器信息Pod中可以配置多個容器,您可以單擊右側“添加容器”為Pod配置多個容器。
容器名稱:為容器命名。
鏡像更新策略:選擇是否總是拉取鏡像。
鏡像名稱:選擇容器使用的鏡像,支持多種鏡像來源。
鏡像版本:選擇需要部署的鏡像版本。
資源配額:配置 CPU 和內存的申請值和限制值。
初始化容器:選擇是否作為初始化容器。
生命周期:配置容器生命周期的特定操作。
健康檢查:設置存活探針、就緒探針及啟動探針。
環境變量:設置容器運行環境的變量。
數據存儲:掛載本地存儲或云存儲。
安全設置:對容器權限進行設置,保護系統和其他容器不受其影響。請輸入用戶ID,容器將以當前用戶權限運行。
特權容器:選擇是否啟用特權容器。
鏡像訪問憑證:選擇訪問鏡像倉庫的憑證。
說明
有狀態負載支持“動態掛載”云硬盤。動態掛載通過字段實現,并依賴于StorageClass動態創建能力。有狀態工作負載通過volumeClaimTemplates字段為每一個Pod關聯了一個獨有的PVC,而這個PVC又會和對應的PV綁定。因此當Pod被重新調度后,仍然能夠根據該PVC名稱掛載原有的數據。負載創建完成后,動態存儲不支持更新。
實例間發現服務配置
Headless Service用于解決StatefulSet內Pod互相訪問的問題,Headless Service給每個Pod提供固定的訪問域名。具體請參見Headless Service。
服務配置
服務(Service)是用來解決Pod訪問問題的。每個Service有一個固定IP地址,Service將訪問流量轉發給Pod,而且Service可以給這些Pod做負載均衡。您也可以在創建完工作負載之后再創建Service,Service的概念和使用方法請參見Service概述。
高級配置

設置升級策略、調度策略、標簽與注解、DNS 配置、性能管理配置、網絡配置等。單擊右下角“創建工作負載”完成創建。