最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

k8s中pod親和性和反親和性的使用

2023-01-10 23:56 作者:運(yùn)維實(shí)戰(zhàn)課程  | 我要投稿

1.親和性調(diào)度作用和分類- pod親和性和節(jié)點(diǎn)nodeAffinity親和性通用

親和度可以分成軟策略和硬策略兩種方式

軟策略:盡量滿足條件,滿足條件最好,不滿足也無所謂,若沒有滿足調(diào)度要求的節(jié)點(diǎn)的話,pod會忽略這條規(guī)則,繼續(xù)完成調(diào)度過程

硬策略: 必須滿足條件,比較強(qiáng)硬,如果沒有滿足條件的節(jié)點(diǎn)的話,就不斷重試直到滿足條件為止。

2.親和性和反親和性的兩種策略的配置寫法-pod親和性和節(jié)點(diǎn)nodeAffinity親和性通用

對于親和性和反親和性都有這兩種規(guī)則可以設(shè)置:

軟策略:preferredDuringSchedulingIgnoredDuringExecution

硬策略:requiredDuringSchedulingIgnoredDuringExecution

3.pod親和性和反親和性的概念

pod親和性和反親和性都是處理pod與pod之間的關(guān)系。

pod親和性: ?主要是想把pod和某個依賴的pod放在一起。

pod親和性主要解決pod可以和哪些pod部署在同一個拓?fù)溆蛑械膯栴}(其中拓?fù)溆蛴弥鳈C(jī)標(biāo)簽實(shí)現(xiàn),可以是單個主機(jī),也可以是多個主機(jī)組成的 cluster等等)

例如:一個pod在一個節(jié)點(diǎn)上了,那么我這個pod也得在這個節(jié)點(diǎn)上。

注意:是以pod的標(biāo)簽進(jìn)行標(biāo)記的,將pod標(biāo)簽一樣的幾個pod部署到同一個節(jié)點(diǎn)上,pod1的標(biāo)簽是app=love,部署在node1節(jié)點(diǎn),pod2的標(biāo)簽也是app=love,可以通過配置pod親和性,讓pod2也部署在node1,和pod1放到一起。

pod反親和性:主要想把?pod和某個pod分開。

pod反親和性主要是解決pod不能和哪些pod部署在同一個拓?fù)溆蛑械膯栴},它們都是處理的pod與pod 之間的關(guān)系。

例如:你這個pod在節(jié)點(diǎn)上了,那么我就不想和你待在同一個節(jié)點(diǎn)上

注意:是以pod的標(biāo)簽進(jìn)行標(biāo)記的,將pod標(biāo)簽一樣的幾個pod不要部署到同一個節(jié)點(diǎn)上,pod1的標(biāo)簽是app=love,部署在node1節(jié)點(diǎn),pod2的標(biāo)簽也是app=love,可以通過配置pod反親和性,不讓pod2部署在node1,不要和pod1放到一起。

4.pod親和性的案例實(shí)戰(zhàn)

1).準(zhǔn)備k8s集群

[root@k8s-m1 ~]# kubectl get node

NAME???? STATUS?? ROLES????????????????? AGE?? VERSION

k8s-m1?? Ready??? control-plane,master?? 23h?? v1.22.10

k8s-m2?? Ready??? control-plane,master?? 23h?? v1.22.10

k8s-m3?? Ready??? control-plane,master?? 23h?? v1.22.10

k8s-n1?? Ready??? worker???????????????? 23h?? v1.22.10

k8s-n2?? Ready??? worker???????????????? 23h?? v1.22.10

[root@k8s-m1 ~]# kubectl get cs

Warning: v1 ComponentStatus is deprecated in v1.19+

NAME???????????????? STATUS?? ?MESSAGE???????????? ERROR

scheduler??????????? Healthy?? ok?????????????????

controller-manager?? Healthy?? ok?????????????????

etcd-0?????????????? Healthy?? {"health":"true"}??

etcd-1?????????????? Healthy?? {"health":"true"}??

etcd-2?????????????? Healthy?? {"health":"true"}??

2).先部署一個標(biāo)簽為app=love的pod1的nginx(應(yīng)用nginx版本nginx:1.19.5)

[root@k8s-m1 ~]# vim nginx.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

? name: dev-nginx-deployment

spec:

? replicas: 1

? selector:

??? matchLabels:

????? app: love

? template:

??? metadata:

????? labels:

??????? app: love

??? spec:

????? containers:

????? - name: nginx

??????? image: nginx:1.19.5

[root@k8s-m1 ~]# kubectl apply -f nginx.yaml

?[root@k8s-m1 ~]# kubectl get pod -o wide --show-labels?? #查看部署的pod1部署在k8s-n1上

NAME??????????????????????????????????? READY?? STATUS??? RESTARTS?? AGE?? IP???????????? NODE???? NOMINATED NODE?? READINESS GATES?? LABELS

dev-nginx-deployment-7cdc5f7758-wgnbb?? 1/1???? Running?? 0????????? 8s??? 10.233.71.25?? k8s-n1?? <none>?????????? <none>??????????? app=love,pod-template-hash=7cdc5f7758

3).再使用pod親和性部署另一個pod2(標(biāo)簽也是app=love,nginx版本為nginx:1.20),和pod1部署到一起

[root@k8s-m1 ~]# vim nginx2.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

? name: nginx2-affinity-deployment

spec:

? replicas: 3

? selector:

??? matchLabels:

????? app: love2???????????? #pod2的標(biāo)簽,和pod1的標(biāo)簽沒關(guān)系

? template:

??? metadata:

????? labels:

??????? app: love2??????????? #pod2的標(biāo)簽,和pod1的標(biāo)簽沒關(guān)系

??? spec:

????? containers:

????? - name: nginx

??????? image: nginx:1.20

??????? ports:

??????? - containerPort: 80

????????? name: nginxweb

????? affinity:

??????? podAffinity:

????????? requiredDuringSchedulingIgnoredDuringExecution:? # 硬策略,以硬策略為例,軟策略類似

????????? - labelSelector:

????????????? matchExpressions:

????????????? - key: app??????????? #規(guī)則: 匹配和pod1的標(biāo)簽的規(guī)則時

??????????????? operator: In

??????????????? values:

??????????????? - love

??????????? topologyKey: kubernetes.io/hostname

[root@k8s-m1 ~]# kubectl apply -f nginx2.yaml?? #用pod親和性部署pod2,和pod1部署到一起

[root@k8s-m1 ~]# kubectl get pod -o wide --show-labels?? #查看部署后的結(jié)果,會和pod1部署到一起,部署到同一個節(jié)點(diǎn)上

NAME???????????????????????????????????? ?????READY?? STATUS??? RESTARTS?? AGE?? IP???????????? NODE???? NOMINATED NODE?? READINESS GATES?? LABELS

dev-nginx-deployment-7cdc5f7758-wgnbb???????? 1/1???? Running?? 0????????? 27m?? 10.233.71.25?? k8s-n1?? <none>?????????? <none>??????????? app=love,pod-template-hash=7cdc5f7758

nginx2-affinity-deployment-57b4b64d74-gbw8n?? 1/1???? Running?? 0????????? 18s?? 10.233.71.30?? k8s-n1?? <none>?????????? <none>??????????? app=love2,pod-template-hash=57b4b64d74

nginx2-affinity-deployment-57b4b64d74-rdjb7?? 1/1???? Running?? 0????????? 18s?? 10.233.71.31?? k8s-n1?? <none>?????????? <none>??????????? app=love2,pod-template-hash=57b4b64d74

nginx2-affinity-deployment-57b4b64d74-rmprr?? 1/1???? Running?? 0????????? 18s?? 10.233.71.32?? k8s-n1?? <none>?????????? <none>??????????? app=love2,pod-template-hash=57b4b64d74

加了pod親和性配置后,會發(fā)現(xiàn)后面部署的pod2的3個副本都會部署到和pod1標(biāo)簽一致的node節(jié)點(diǎn),即: k8s-n1上

如果不加pod親和性配置,就會按原來的調(diào)度策略,k8s-n1和k8s-n2節(jié)點(diǎn)上都會部署。

4). 再使用pod反親和性部署另一個pod2(標(biāo)簽也是app=love,nginx版本為nginx:1.20) ,不和pod1部署到一起

[root@k8s-m1 ~]# vim nginx2.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

? name: nginx2-affinity-deployment

spec:

? replicas: 3

? selector:

??? matchLabels:

????? app: love2????? #pod2的標(biāo)簽,和pod1的標(biāo)簽沒關(guān)系

? template:

??? metadata:

????? labels:

??????? app: love2??? #pod2的標(biāo)簽,和pod1的標(biāo)簽沒關(guān)系

??? spec:

????? containers:

????? - name: nginx

??????? image: nginx:1.20

??????? ports:

??????? - containerPort: 80

????????? name: nginxweb

????? affinity:

??????? podAntiAffinity:

????????? requiredDuringSchedulingIgnoredDuringExecution:? # 硬策略,以硬策略為例,軟策略類似

????????? - labelSelector:

????????????? matchExpressions:

????????????? - key: app?????????? #規(guī)則: 匹配和pod1的標(biāo)簽的規(guī)則時

??????????????? operator: In

??????????????? values:

??????????????? - love

??????????? topologyKey: kubernetes.io/hostname

?[root@k8s-m1 ~]# kubectl apply -f nginx2.yaml?????????? #用pod反親和性部署pod2,不和pod1部署到一起

[root@k8s-m1 ~]# kubectl get pod -o wide --show-labels? #查看部署后的結(jié)果,不會和pod1部署到一起,不會在同一節(jié)點(diǎn)上

NAME???????????????????????????????????????? READY?? STATUS??? RESTARTS?? AGE?? IP???????????? NODE???? NOMINATED NODE?? READINESS GATES?? LABELS

dev-nginx-deployment-7cdc5f7758-wgnbb??????? 1/1???? Running?? 0????????? 23m?? 10.233.71.25?? k8s-n1?? <none>?????????? <none>??????????? app=love,pod-template-hash=7cdc5f7758

nginx2-affinity-deployment-684568686-hf4tm?? 1/1???? Running?? 0????????? 14s?? 10.233.81.22?? k8s-n2?? <none>?????????? <none>??????????? app=love2,pod-template-hash=684568686

nginx2-affinity-deployment-684568686-tqvp7?? 1/1???? Running?? 0????????? 14s?? 10.233.81.24?? k8s-n2?? <none>?????????? <none>??????????? app=love2,pod-template-hash=684568686

nginx2-affinity-deployment-684568686-zhhq2?? 1/1???? Running?? 0????????? 14s?? 10.233.81.23?? k8s-n2?? <none>?????????? <none>??????????? app=love2,pod-template-hash=684568686

加了pod反親和性配置后,會發(fā)現(xiàn)后面部署的pod2的3個副本都不會部署到和pod1標(biāo)簽一致的node節(jié)點(diǎn),即不會部署在 k8s-n1上,而是會部署在k8s-n2上


參考連接: https://www.cnblogs.com/lnlvinso/p/13599102.html

?

k8s中pod親和性和反親和性的使用的評論 (共 條)

分享到微博請遵守國家法律
英山县| 西充县| 石阡县| 界首市| 台州市| 乌兰察布市| 临沂市| 烟台市| 利川市| 黎城县| 白城市| 德安县| 临江市| 泗洪县| 沧州市| 额济纳旗| 郓城县| 珲春市| 娱乐| 成安县| 西青区| 卢龙县| 大埔区| 太保市| 中西区| 合阳县| 福清市| 格尔木市| 盈江县| 穆棱市| 绥阳县| 阜阳市| 台前县| 罗甸县| 陈巴尔虎旗| 洛川县| 铁岭县| 云林县| 和硕县| 淮阳县| 阿坝县|