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