成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

五分鐘搞懂K8S的污點(diǎn)和容忍度

云計(jì)算 云原生
本文主要快速講解Kubernetes的污點(diǎn)和容忍度,一句話總結(jié):如果Pod能容忍某個(gè)節(jié)點(diǎn)上的污點(diǎn),那么Pod就可以調(diào)度到該節(jié)點(diǎn)。

在K8S中,如果Pod能容忍某個(gè)節(jié)點(diǎn)上的污點(diǎn),那么Pod就可以調(diào)度到該節(jié)點(diǎn)。如果不能容忍,那就無法調(diào)度到該節(jié)點(diǎn)。污點(diǎn)和容忍度就像談戀愛的小情侶,你情我愿,女生知道男生的缺點(diǎn),卻依然選擇容忍,這樣他們可以生活在一起。如果女生容忍不了男生的缺點(diǎn),那就沒法生活在一起。

1、理論

1.1、污點(diǎn)和容忍度的概念

  • 污點(diǎn)(Taints):定義在節(jié)點(diǎn)上,用于拒絕Pod調(diào)度到此節(jié)點(diǎn),除非該P(yáng)od具有該節(jié)點(diǎn)上的污點(diǎn)容忍度。被標(biāo)記有Taints的節(jié)點(diǎn)并不是故障節(jié)點(diǎn)。
  • 容忍度(Tolerations):定義在Pod上,用于配置Pod可容忍的節(jié)點(diǎn)污點(diǎn),K8S調(diào)度器只能將Pod調(diào)度到該P(yáng)od能夠容忍的污點(diǎn)的節(jié)點(diǎn)上。
  • 調(diào)度示例圖:

圖片

1.2、排斥等級(jí)

Node對Pod對象的排斥等級(jí)有3種:

  • NoSchedule:沒有配置此污點(diǎn)容忍度的新Pod不能調(diào)度到此節(jié)點(diǎn),節(jié)點(diǎn)上現(xiàn)存的Pod不受影響。
  • PreferNoSchedule:沒有配置此污點(diǎn)容忍度的新Pod盡量不要調(diào)度到此節(jié)點(diǎn),如果找不到合適的節(jié)點(diǎn),依然會(huì)調(diào)度到此節(jié)點(diǎn)。
  • NoExecute:沒有配置此污點(diǎn)容忍度的新Pod對象不能調(diào)度到此節(jié)點(diǎn),節(jié)點(diǎn)上現(xiàn)存的Pod會(huì)被驅(qū)逐。

1.3、容忍度操作符

在Pod上定義容忍度時(shí),它支持兩種操作符:Equal和Exists。

  • Equal:容忍度與污點(diǎn)必須在key、value和effect三者完全匹配。
  • Exists:容忍度與污點(diǎn)必須在key和effect二者完全匹配,容忍度中的value字段要使用空值。

1.4、用法

污點(diǎn)定義在節(jié)點(diǎn)的nodeSpec中,容忍度定義在Pod的podSpec中。

污點(diǎn)和容忍度都是鍵值對的數(shù)據(jù)格式,但是要增加一個(gè)排斥等級(jí)(effect)標(biāo)記。

語法格式為:"key=value:effect"。

1.5、使用場景

1、獨(dú)占節(jié)點(diǎn)

  • 如果想拿出部分節(jié)點(diǎn)給特定的Pod使用,可以通過給節(jié)點(diǎn)添加污點(diǎn),然后特定的Pod加入對應(yīng)的容忍度。
  • 在集群中有些機(jī)器設(shè)備可能比較特殊,比如CPU性能很好、內(nèi)存很大等等,不希望普通Pod占用這部分特殊節(jié)點(diǎn),可以通過污點(diǎn)和容忍度來解決。

2、驅(qū)逐Pod

上文中定義了Node對Pod的排斥等級(jí)有3種。Node如果定義的排斥等級(jí)是NoExecute,那么沒有配置該污點(diǎn)容忍度的Pod會(huì)被驅(qū)逐。

K8S 也會(huì)使用污點(diǎn)自動(dòng)標(biāo)識(shí)有問題的節(jié)點(diǎn),比如節(jié)點(diǎn)在內(nèi)存不足的情況下,節(jié)點(diǎn)控制器會(huì)自動(dòng)為該節(jié)點(diǎn)打上污點(diǎn)信息,并且使用 NoExecute作為排斥等級(jí),此時(shí)沒有設(shè)置此類污點(diǎn)容忍度的Pod 會(huì)被驅(qū)逐。

DaemonSet控制器會(huì)無視此類污點(diǎn),以便能在節(jié)點(diǎn)上部署重要的Pod。

目前,內(nèi)置的污點(diǎn)也比較多,比如以下幾個(gè):

  • node.kubernetes.io/not-ready:節(jié)點(diǎn)未就緒
  • node.kubernetes.io/unreachable:節(jié)點(diǎn)不可觸達(dá)
  • node.kubernetes.io/memory-pressure:節(jié)點(diǎn)內(nèi)存空間已滿。
  • node.kubernetes.io/disk-pressure:節(jié)點(diǎn)磁盤空間已滿。
  • node.kubernetes.io/network-unavailable:節(jié)點(diǎn)網(wǎng)絡(luò)不可用。

2、實(shí)戰(zhàn)

2.1、管理節(jié)點(diǎn)污點(diǎn)

給節(jié)點(diǎn)添加污點(diǎn):

kubectl taint nodes node01 key=value:effect

給節(jié)點(diǎn)刪除污點(diǎn),此處的effect可以沒有

kubectl taint nodes node01 key[:effect]-

2.2、管理Pod的容忍度

上文中提到了,容忍度的操作符有2種:Equal和Exists,同時(shí)把排斥等級(jí)也要加上。

使用Equal的場景:

tolerations:
- key: "key"
  operator: "Equal"
  value: "value"
  effect: "NoExecute"

使用Exists的場景:

tolerations:
- key: "key"
  operator: "Exists"
  effect: "NoExecute"

如果Node上污點(diǎn)的排斥等級(jí)是NoExecute時(shí),該Node上正在運(yùn)行的Pod如果沒有該污點(diǎn)的容忍度,就會(huì)被立刻驅(qū)逐。不過系統(tǒng)增加了tolerationSeconds字段,用來延遲驅(qū)逐Pod。

tolerationSeconds字段的意思是:如果 Pod 的容忍度配置里存在排斥等級(jí)為 NoExecute ,并且指定了屬性 tolerationSeconds 的值,那么Pod 還能繼續(xù)在該節(jié)點(diǎn)上運(yùn)行的時(shí)間(單位為秒):

tolerations:
- key: "key"
  operator: "Equal"
  value: "value"
  effect: "NoExecute"
  tolerationSeconds: 3600

2.3、具體操作

2.3.1、前置小知識(shí)

  • 查看看節(jié)點(diǎn)label,label是key-value的數(shù)據(jù)格式
kubectl get nodes --show-labels
  • 增加節(jié)點(diǎn)label,比如設(shè)置一個(gè)key是special-app,value是specialwebapp的label
kubectl label node k8s-worker-2 special-app=specialwebapp

圖片

  • 查看節(jié)點(diǎn)污點(diǎn)情況

查看某節(jié)點(diǎn)的污點(diǎn)情況,可以看到Taints這一欄是none,也可以看到label情況。

kubectl describe node k8s-worker-2

圖片

2.3.2、實(shí)戰(zhàn)示例過程

步驟

  1. 給定某個(gè)K8S節(jié)點(diǎn),比如k8s-worker-2,節(jié)點(diǎn)的有一個(gè)label,Pod根據(jù)label選擇調(diào)度到k8s-worker-2,此時(shí)調(diào)度成功。
  2. 給k8s-worker-2增加污點(diǎn),此時(shí)Pod調(diào)度失敗。
  3. 給Pod配置此污點(diǎn)的容忍度,調(diào)度成功。
  4. 刪除節(jié)點(diǎn)的污點(diǎn),刪除容忍度,部署成功。

操作過程

  • 設(shè)置污點(diǎn)
kubectl taint nodes k8s-worker-2 question-node=broken-disk:NoSchedule

  • 部署Pod,可以看到?jīng)]有配置容忍度的Pod一直處于Pending狀態(tài),查看Pod的描述,也給出了原因:調(diào)度失敗,node有污點(diǎn),Pod沒有容忍度。

  • 給Pod配置容忍度,部署成功

  • 刪除污點(diǎn),刪除容忍度,部署成功
kubectl taint nodes k8s-worker-2 question-node-

完整的yaml文件:

apiVersion: v1
kind: Pod
metadata:
  name: webapp
  namespace: demo
  labels:
    app: webapp
spec:
  nodeSelector:
    # 選擇調(diào)度到具有這個(gè)label的節(jié)點(diǎn)
    "special-app": "specialwebapp"
#    kubernetes.io/hostname: k8s-worker-2
  tolerations:
    - key: "question-node"
      operator: "Equal"
      value: "broken-disk"
      effect: "NoSchedule"
  containers:
    - name: webapp
      image: nginx
      ports:
        - containerPort: 80

總結(jié)

在K8S中,如果Pod能容忍某個(gè)節(jié)點(diǎn)上的污點(diǎn),那么Pod就可以調(diào)度到該節(jié)點(diǎn)。如果不能容忍,那就無法調(diào)度到該節(jié)點(diǎn)。

責(zé)任編輯:華軒 來源: 不焦躁的程序員
相關(guān)推薦

2020-02-19 19:26:27

K8S開源平臺(tái)容器技術(shù)

2023-11-15 13:44:00

k8s-域名日志

2023-11-27 13:54:00

kubernetes高可用

2023-09-15 08:00:20

Ingress網(wǎng)關(guān)Istio

2023-09-27 08:09:22

2024-12-11 07:00:00

面向?qū)ο?/a>代碼

2025-03-13 06:22:59

2023-11-30 08:08:30

k8s優(yōu)雅停機(jī)

2023-09-27 22:33:40

KubernetesK8S

2023-09-24 22:47:42

Kubernetes親和性

2019-08-09 10:33:36

開發(fā)技能代碼

2025-01-20 08:50:00

2025-01-21 07:39:04

Linux堆內(nèi)存Golang

2023-09-18 15:49:40

Ingress云原生Kubernetes

2018-09-27 13:56:14

內(nèi)網(wǎng)外網(wǎng)通信

2023-12-06 08:48:36

Kubernetes組件

2024-01-26 14:35:03

鑒權(quán)K8sNode

2024-04-29 07:57:46

分布式流控算法

2022-05-23 09:10:00

分布式工具算法

2023-12-25 08:05:35

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 中文字幕av在线 | 色综合久 | 亚洲精品乱码8久久久久久日本 | 欧美xxxx做受欧美 | 欧美一区二区激情三区 | 一级免费a | 亚洲国产精品第一区二区 | 亚洲欧美中文日韩在线v日本 | 欧美一区在线视频 | 国产日韩欧美在线观看 | 夜夜爽99久久国产综合精品女不卡 | 成人欧美一区二区三区色青冈 | 午夜国产在线 | 免费视频一区二区三区在线观看 | 日本电影网站 | 欧美aⅴ| 日日碰狠狠躁久久躁96avv | 亚洲激情一级片 | 久久草视频 | 国产精品久久久久久久久久免费看 | 成人欧美一区二区三区黑人孕妇 | 亚洲福利视频一区二区 | 国产传媒毛片精品视频第一次 | 欧美黄在线观看 | 欧美a视频 | 久久99精品久久久久 | 欧美电影在线 | 中文字幕一区二区三区在线乱码 | 少妇午夜一级艳片欧美精品 | 精品一二区 | 久久久久久久久99 | 久视频在线 | 日韩毛片在线观看 | 黄色av一区| 亚洲激情自拍偷拍 | 色噜噜色综合 | 亚洲一区二区三区在线视频 | 成人精品免费视频 | 午夜一区二区三区在线观看 | 亚洲激情在线观看 | 久日精品 |