摘要:節點親和與反親和性節點親和與反親和性節點親和與反親和性使用節點親和性與反親和性,需要在下增加字段,節點親和分為硬匹配和軟匹配兩種。
Kubernetes 提供了多種節點分配使用的方法,常用的有以下4種:
節點篩選器(nodeSelector)節點親和與反親和性(nodeAffinity)Pod親和與反親和性(podAffinity)節點隔離/限制在做節點選擇的時候很多時候用到了 Kubernetes 的 Label 功能,這里我們分別展示給節點及 Pod Label 的方法。
給 10.10.10.10 節點增加disktype=ssd
標簽# kubectl label nodes 10.10.10.10 disktype=ssd
給 Pod 增加 disktype=ssd
標簽,同理可以針對 Deployment、Service 等對象進行增加標簽操作# kubectl label po unginx-7db67b8c69-zcxmm disktype=ssd
節點篩選器,用于創建 Pod(及 Deployment、StatefulSet 等控制器時),將 Pod 分配給相應的節點。
實例 yaml 創建了一個 Pod 對象,在 spec.nodeSelector
下以 Map 形式增加改容器部署的節點的限制條件,nodeSelector 會篩選擁有
disktype: ssd
的 Node 節點進行 Pod 部署。
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
env: test
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
nodeSelector:
disktype: ssd
使用節點親和性與反親和性,需要在 Deployment spec.template.spec
下增加 affinity
字段,節點親和分為硬匹配和軟匹配 兩種。
在以下 yaml 示例中,requiredDuringSchedulingIgnoredDuringExecution
可以理解為排除不具備指定 Label 的節點,如果節點不含有
ucloud=yes
則 Pod 不會被分配到該節點。
nodeSelectorTerms
下提供了 matchExpressions
(匹配表達式)和 matchFields
(匹配字段),選擇使用其一,我們這里使用了
matchExpressions
,下面的表達式中 Key 和 Values對應,operator
的可選參數有In、NotIn、Exists、DoesNotExist、Gt、Lt,這里可以設置
NotIn、DoesNotExist 進行反親和的設置,也就是如果這里寫入了 operator: NotIn
的時候,Pod 將分配在沒有 ucloud=yes
Label 的節點上。
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
run: ucloud
name: ucloud
spec:
replicas: 3
selector:
matchLabels:
run: ucloud
template:
metadata:
creationTimestamp: null
labels:
run: ucloud
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: ucloud
operator: In
values:
- "yes"
containers:
- image: nginx
name: ucloud
ports:
- containerPort: 80
resources: {}
3.2 軟匹配和 requiredDuringSchedulingIgnoredDuringExecution
對應還有
preferredDuringSchedulingIgnoredDuringExecution
,這里稱為軟匹配,這個參數為對應節點進行打分,降低不具備 Label 的節點的選中幾率。
這里的 weight
字段在1-100范圍內。對于滿足所有調度要求的每個節點,調度程序將通過迭代此字段的元素計算總和,并在節點與對應的節點匹配時將「權重」添加到總和
MatchExpressions
,然后將該分數與節點的其他優先級函數的分數組合。總得分最高的節點是最優選的。
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
preference:
matchExpressions:
- key: another-node-label-key
operator: In
values:
- another-node-label-value
3.3 說明如果同時指定 nodeSelector 和 nodeAffinity,節點必須滿足全部條件,Pod 才會被調度到該節點。
如果指定了多個 nodeSelectorTerms 關聯 nodeAffinity 類型,如果能滿足其中一個 nodeSelectorTerms,則 Pod 就可以調度到這個節點。
如果指定了多個 matchExpressions 關聯的 nodeSelectorTerms,則只有在節點滿足所有 matchExpressions 要求情況下才能將該容器調度到節點上。
如果刪除或更改已有容器節點的 Label,Kubernetes 不會主動刪除該容器,親和的調度選擇僅在調度 Pod 時起作用。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/127026.html
摘要:詳細請見產品價格產品概念使用須知名詞解釋漏洞修復記錄集群節點配置推薦模式選擇產品價格操作指南集群創建需要注意的幾點分別是使用必讀講解使用需要賦予的權限模式切換的切換等。UK8S概覽UK8S是一項基于Kubernetes的容器管理服務,你可以在UK8S上部署、管理、擴展你的容器化應用,而無需關心Kubernetes集群自身的搭建及維護等運維類工作。了解使用UK8S為了讓您更快上手使用,享受UK...
摘要:對于存儲資源,的節點默認系統盤。節點創建時可選擇數據盤掛載亦可在節點創建完成后在主機側掛載,如節點掛載有數據盤,將用于存放本地鏡像的,否則本地鏡像等將保存在系統盤。 集群節點配置推薦本篇目錄1. Master 配置推薦2. 如何選擇 Node 配置大小1. Master 配置推薦Master 規格跟集群規模有關,集群規模越大,所需要的 Master 規格也越高,不同集群規模的,Master ...
摘要:最佳實踐使用方法及支持日志解決方案基于的實踐基于的監控解決方案通過軟件一致性認證已正式通過云原生計算基金會軟件一致性認證。1、集群自動伸縮 UK8S新上線集群自動伸縮功能(Cluster Autoscaler),配置好伸縮策略后,可實現自動擴縮Node節點,配合HPA(Horizontal Pod Autoscaler)一起使用,可輕松應對突發的業務流量,降低IT運營成本,減輕運維負擔...
摘要:擴展性好當集群的資源嚴重不足而導致排隊等待時,可以很容易的添加一個到集群中,從而實現擴展。用法,選擇盡可能使用這個節點鏡像,填寫,這個容器鏡像是我們的運行環境。更新文件,這里我們只是將中的鏡像更換成最新構建出的鏡像。基于Jenkins的CI/CD實踐[TOC]一、概要提到K8S環境下的CI/CD,可以使用的工具有很多,比如Jenkins、Gitlab CI、新興的drone等,考慮到大多公司...
閱讀 351·2024-11-07 18:25
閱讀 130597·2024-02-01 10:43
閱讀 914·2024-01-31 14:58
閱讀 879·2024-01-31 14:54
閱讀 82884·2024-01-29 17:11
閱讀 3176·2024-01-25 14:55
閱讀 2028·2023-06-02 13:36
閱讀 3108·2023-05-23 10:26