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