基本原則
在CCE中,容器部署要實現高可用,可參考如下幾點:
1.容器以集群形式部署。
2.創建節點選擇在不同的可用區,在多個可用區(AZ)多個節點的情況下,根據自身業務需求合理的配置自定義調度策略,可達到資源分配的最大化。
3.創建多個節點池,不同節點池部署在不同可用區,通過節點池擴展節點。
4.工作負載創建時設置實例數需大于2個。
5.工作負載實例采用默認部署,即無規則調度到集群中的不同節點上。
操作步驟
為了便于描述,假設集群中有demo-92634、demo-01208、demo-30509和demo-27003四個節點,其中demo-92634、demo-01208兩個節點在同一可用區1、demo-30509在可用區2、demo-27003在可用區3。
步驟 1 登錄CCE控制臺,在左側導航欄中選擇“工作負載 > 無狀態負載 Deployment”,單擊“創建無狀態工作負載”。
步驟 2 設置工作負載基本信息,未涉及參數均采用默認值。
- 工作負載名稱:新建工作負載的名稱,此處設置為nginx-demo。
- 實例數量:設置為1個。
步驟 3 單擊“下一步”,單擊“添加容器”,選擇“開源鏡像中心”中的nginx鏡像,單擊“確定”。
步驟 4 其他參數保持默認,依次單擊“下一步”,單擊“創建”,完成工作負載的創建。
步驟 5 在工作負載列表中,單擊已創建工作負載的名稱,本示例為nginx-demo。
步驟 6 在“實例列表”中,單擊實例所在節點的IP。在節點管理頁面,可看到實例被調度在可用區1。
步驟 7 在“調度策略”頁簽中,單擊“自定義調度策略”,單擊“工作負載反親和性 > 盡量滿足 > 添加規則”。
創建一條對可用區反親和盡量滿足的規則,參數設置如下。更多內容請參見Affinity and anti-affinity。
- 權重:權重值越高會被優先調度,本示例設置為50。
- 拓撲域:即topologyKey,包含默認和自定義標簽,用于指定調度時的作用域。本示例設置為failure-domain.beta.kubernetes.io/zone。
- 標簽名:對應工作負載的標簽,可以使用默認標簽app或自定義標簽。本示例中設置為app。
- 操作符:當前支持設置In、NotIn、Exists和DoesNotExist四種匹配關系。In和NotIn操作符可以添加單個值或多個value值;Exists和DoesNotExist判斷某個label是否存在,不需設置value值。本示例設置為in。
- 標簽值:本示例設置為nginx-demo。
步驟 8 參照步驟7再創建一條對本身工作負載反親和盡量滿足的規則,參數設置如下。
- 權重:設置為50。
- 拓撲域:設置為kubernetes.io/hostname。
- 標簽名:設置為app。
- 操作符:設置為in。
- 標簽值:設置為nginx-demo。
步驟 9 設置完成后,單擊“確定”。
在調度策略列表中,可查看到已添加的策略。
步驟 10 在“伸縮”頁簽,單擊手動伸縮中的
,增加1個實例,可以發現工作負載實例優先調度到可用區3。
步驟 11 在“伸縮”頁簽,單擊手動伸縮中的
,再添加1個實例數,可以發現工作負載實例優先調度到可用區2。
步驟 12 在“伸縮”頁簽,單擊手動伸縮中的
,再添加1個實例數,可以發現工作負載實例優先調度到可用區1中剩余的集群節點。