亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Kubernetes之Pod的調(diào)度實(shí)現(xiàn)方式

 更新時(shí)間:2025年09月19日 10:10:40   作者:Hud.  
Kubernetes通過定向調(diào)度(NodeName/NodeSelector)、親和性調(diào)度(NodeAffinity/PodAffinity/PodAntiAffinity)及污點(diǎn)容忍(Taints/Toleration)實(shí)現(xiàn)Pod節(jié)點(diǎn)控制,分別用于強(qiáng)制指定節(jié)點(diǎn)、優(yōu)化部署位置和靈活管理節(jié)點(diǎn)準(zhǔn)入,滿足不同場景下的調(diào)度需求

在默認(rèn)情況下,一個(gè)pod在哪個(gè)Node節(jié)點(diǎn)上運(yùn)行,是由Scheduler組件采用相應(yīng)的算法計(jì)算出來的,這個(gè)過程是不受人工控制的。

但是在實(shí)際的使用過程當(dāng)中,這并不能滿足需求,因?yàn)樵诤芏嗲闆r下,我們想控制某些Pod到某些節(jié)點(diǎn)上,那么應(yīng)該怎么做呢?

這就要求了解Kubernetes對于Pod的調(diào)度規(guī)則,Kubernetes提供了四大類的調(diào)度方式 

  • 自動(dòng)調(diào)度:運(yùn)行在哪個(gè)節(jié)點(diǎn)上完全由Scheduler經(jīng)過一系列的計(jì)算得出
  • 定向調(diào)度:NodeName,NodeSelector
  •  親和性調(diào)度:NodeAffinity、PodAffinity、PodAntiAffinity
  • 污點(diǎn)(容忍)調(diào)度:Taints、Toleration

1、定向調(diào)度

定向調(diào)度,指的是利用在pod上聲明NodeName或者nodeSelector,以此將Pod調(diào)度到期望的node節(jié)點(diǎn)上,注意,這里的調(diào)度是強(qiáng)制的,這就意味著即使要調(diào)度的目標(biāo)Node不存在,也會(huì)向上面進(jìn)行調(diào)度,只不過pod運(yùn)行失敗而已。

1.1 NodeName

NodeName用于強(qiáng)制約束將Pod調(diào)度到指定的Name的Node節(jié)點(diǎn)上。這種方式,其實(shí)就是直接跳過Scheduler的調(diào)度邏輯,直接寫入PodList列表。

接下來,就這個(gè)定向調(diào)度創(chuàng)建一個(gè)pod-nodename,yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-nodename
  namespace: dev
spec:
  containers:
  - name: nginx
    image: nginx:1.17.1
  nodeName: k8s-node1   # 指定調(diào)度到node1節(jié)點(diǎn)上去

# 創(chuàng)建Pod
[root@master ~]# vi pod-nodename.yaml
[root@master ~]# kubectl create -f pod-nodename.yaml
pod/pod-nodename created
#修改上面的文件再創(chuàng)建一個(gè)pod改到node2節(jié)點(diǎn)上去,看看效果
[root@master ~]# kubectl get pod -n dev -o wide
NAME            READY   STATUS    RESTARTS   AGE     IP               NODE        NOMINATED NODE   READINESS GATES
pod-nodename    1/1     Running   0          2m25s   10.244.36.91     k8s-node1   <none>           <none>
pod-nodename2   1/1     Running   0          5s      10.244.169.163   k8s-node2   <none> 

對了,這里插一句,關(guān)于Node節(jié)點(diǎn)的名稱,你要查看可以使用命令:

[root@master ~]# kubectl get node
NAME        STATUS   ROLES                  AGE   VERSION
k8s-node1   Ready    <none>                 12d   v1.23.5
k8s-node2   Ready    <none>                 12d   v1.23.5
master      Ready    control-plane,master   12d   v1.23.5

如果我在yaml文件中將nodeName改成了k8s-node3,會(huì)不會(huì)創(chuàng)建成功呢?來試試看:

[root@master ~]# kubectl create -f pod-nodename.yaml
pod/pod-nodename2 created
[root@master ~]# kubectl get pod -n dev
NAME            READY   STATUS    RESTARTS   AGE
pod-nodename2   0/1     Pending   0          14s

1.2 NodeSelector

NodeSelector用于將pod調(diào)度到添加了指定標(biāo)簽的node節(jié)點(diǎn)上,他是通過Kubernetes的label-selector機(jī)制實(shí)現(xiàn)的,也就是說在pod創(chuàng)建之前會(huì)由scheduler使用MatchNodeSelector調(diào)整策略進(jìn)行l(wèi)abel匹配,找出目標(biāo)node,然后將pod調(diào)度到目標(biāo)節(jié)點(diǎn),該匹配規(guī)則是強(qiáng)制約束。

通過一個(gè)小案例,熟悉一下操作:

① 首先分別為node節(jié)點(diǎn)添加標(biāo)簽

[root@master ~]# kubectl label nodes k8s-node1 nodeenv=first
node/k8s-node1 labeled
[root@master ~]# kubectl label nodes k8s-node2 nodeenv=second
node/k8s-node2 labeled

② 創(chuàng)建一個(gè)pod-nodeselector.yaml文件,使用它來創(chuàng)建pod

apiVersion: v1
kind: Pod
metadata:
  name: pod-nodeselector
  namespace: dev
spec:
  containers:
  - name: nginx
    image: nginx:1.17.1
  nodeSelector:
    nodeenv: first   # 將pod調(diào)度到nodeenv=first的node上去

# 創(chuàng)建容器并查看是否被放在了指定的node節(jié)點(diǎn)上
[root@master ~]# vi pod-nodeselector.yaml
[root@master ~]# kubectl create -f pod-nodeselector.yaml
pod/pod-nodeselector created
[root@master ~]# kubectl get pod -n dev -o wide
NAME               READY   STATUS    RESTARTS   AGE   IP             NODE        NOMINATED NODE   READINESS GATES
pod-nodeselector   1/1     Running   0          19s   10.244.36.92   k8s-node1   <none>           <none>

2、親和性調(diào)度

定向調(diào)度雖然使用起來非常方便但是也有一定的問題,那就是如果沒有滿足條件的node,那么pod就不會(huì)運(yùn)行,即使在集群中還有可用的node列表也不行,這也就限制了這種調(diào)度方式的可用場景。

基于這個(gè)問題,Kubernetes還提供了一種親和性調(diào)度(Affinity),他在nodeSelector的基礎(chǔ)上進(jìn)行了擴(kuò)展,可以通過配置的形式,實(shí)現(xiàn)優(yōu)先選擇滿足條件的node進(jìn)行調(diào)度,如果沒有,也可以調(diào)度到不滿足條件的節(jié)點(diǎn)上去,使得調(diào)度更加靈活:

Affinity主要分為三類:

  • NodeAffinity(Node親和性):以node為目標(biāo),解決pod可以調(diào)度到哪些node的問題
  • podAffinity(pod親和性):以pod為目標(biāo),解決pod可以和哪些已存在的pod部署在同一個(gè)拓?fù)溆蛑?/li>
  • podAntiAffinity(pod反親和性):以pod為目標(biāo),解決pod不能和哪些已存在的pod部署在同一個(gè)拓?fù)溆蛑械膯栴}

關(guān)于親和性(反親和性)使用場景的說明:

  • 親和性:如果兩個(gè)應(yīng)用頻繁交互,那就有必要利用親和性讓兩個(gè)應(yīng)用盡可能的靠近,這樣可以減少因網(wǎng)絡(luò)通信帶來的性能損耗
  • 反親和性:當(dāng)應(yīng)用采用多副本部署時(shí),有必要采用反親和性讓各個(gè)應(yīng)用實(shí)例打散分布在各個(gè)node節(jié)點(diǎn)上,這樣可以提高服務(wù)的高可用性                                  

2.1 NodeAffinity的可選配置項(xiàng)

[root@master ~]# kubectl explain pod.spec.affinity.nodeAffinity
KIND:     Pod
VERSION:  v1
   # 優(yōu)先調(diào)度到滿足指定規(guī)則的node,相當(dāng)于軟限制(傾向)
   preferredDuringSchedulingIgnoredDuringExecution	<[]Object> 
    preference    #一個(gè)節(jié)點(diǎn)選擇器項(xiàng),與相應(yīng)的權(quán)重相關(guān)聯(lián)
    matchFields    #按節(jié)點(diǎn)字段列出的節(jié)點(diǎn)選擇器要求列表
    matchExpression    #按節(jié)點(diǎn)標(biāo)簽列出的節(jié)點(diǎn)選擇器要求列表(推薦)
    key     #鍵
    value    #值
    operator    #關(guān)系符
    weight        #傾向權(quán)重,0~100之間
   #Node節(jié)點(diǎn)必須滿足指定的所有規(guī)則才可以,相當(dāng)于硬限制
   requiredDuringSchedulingIgnoredDuringExecution	<Object>
    nodeSelectorTerms    #節(jié)點(diǎn)選擇列表
    matchFields    #按節(jié)點(diǎn)字段列出的節(jié)點(diǎn)選擇器要求列表
    matchExpression    #按節(jié)點(diǎn)標(biāo)簽列出的節(jié)點(diǎn)選擇器要求列表(推薦)
    key     #鍵
    value    #值
    operator    #關(guān)系符

關(guān)系符的使用說明:

-matchExpression:
    -key: nodeenv        #匹配存在標(biāo)簽的key為nodeenv的節(jié)點(diǎn)
     operator: Exists
    -key: nodeenv        #匹配標(biāo)簽的key為nodeenv,且value是"xxx"或"yyy"的節(jié)點(diǎn)
     operator: In     
     values:["xxx","yyy"]
    -key:nodeenv         #匹配標(biāo)簽的key為nodeenv且value大于"xxx"的節(jié)點(diǎn)
     operator: Gt
     values: "xxx"

先來演示一下 requiredDuringSchedulingIgnoredDuringExecution,創(chuàng)建pod-nodeaffinity-required.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-nodeaffinity-required
  namespace: dev
spec:
  containers:
  - name: nginx
    image: nginx:1.17.1
  affinity:        # 親和性設(shè)置    
    nodeAffinity:     # 設(shè)置node親和性
      requiredDuringSchedulingIgnoredDuringExecution:   # 硬限制
        nodeSelectorTerms:
        - matchExpressions:   # 匹配env的值在["xxx","yyy"]中的標(biāo)簽
          - key: nodeenv
            operator: In
            values: ["xxx","yyy"]

# 創(chuàng)建容器
[root@master ~]# kubectl create -f pod-nodeaffinity-required.yaml 
pod/pod-affinity-required created
# 先看看node的標(biāo)簽
[root@master ~]# kubectl get node --show-labels
NAME        STATUS   ROLES                  AGE   VERSION   LABELS
k8s-node1   Ready    <none>                 12d   v1.23.5   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node1,kubernetes.io/os=linux,nodeenv=first
k8s-node2   Ready    <none>                 12d   v1.23.5   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node2,kubernetes.io/os=linux,nodeenv=second
master      Ready    control-plane,master   12d   v1.23.5   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=master,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node-role.kubernetes.io/master=,node.kubernetes.io/exclude-from-external-load-balancers=

現(xiàn)在的節(jié)點(diǎn)中,node1和node2的nodeenv標(biāo)簽不存在xxx或者yyy,那么也就意味著這個(gè)pod應(yīng)該是無法運(yùn)行成功的

[root@master ~]# kubectl get pod -n dev
NAME                    READY   STATUS    RESTARTS   AGE
pod-affinity-required   0/1     Pending   0          5m4s

# 使用describe看看調(diào)度失敗的原因
[root@master ~]# kubectl describe pod pod-nodeaffinity-required -n dev
Events:
  Type     Reason            Age                 From               Message
  ----     ------            ----                ----               -------
  Warning  FailedScheduling  22s (x10 over 10m)  default-scheduler  0/3 nodes are available: 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn't tolerate, 2 node(s) didn't match Pod's node affinity/selector.

現(xiàn)在顯示是失敗,試試xxx改成first重新創(chuàng)建看看

[root@master ~]# vi pod-nodeaffinity-required.yaml 
[root@master ~]# kubectl create -f pod-nodeaffinity-required.yaml 
pod/pod-nodeaffinity-required created
[root@master ~]# kubectl get pod -n dev -o wide
NAME                        READY   STATUS    RESTARTS   AGE     IP             NODE        NOMINATED NODE   READINESS GATES
pod-nodeaffinity-required   1/1     Running   0          12s     10.244.36.93   k8s-node1   <none>           <none>

下面再來看看軟限制(requiredDuringSchedulingIgnoredDuringExecution)

創(chuàng)建pod-nodeaffinity-preferred.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-nodeaffinity-preferred
  namespace: dev
spec:
  containers:
  - name: nginx
    image: nginx:1.17.1
  affinity:        # 親和性設(shè)置
    nodeAffinity:     # 設(shè)置node親和性
      preferredDuringSchedulingIgnoredDuringExecution:   # 軟限制
        - weight: 1
          preference:      # 匹配env的值在["xxx","yyy"]中的標(biāo)簽(當(dāng)前環(huán)境中沒有)
            matchExpressions:
            - key: nodeenv
              operator: In
              values: ["xxx","yyy"]
~ 

# 創(chuàng)建pod并查看
[root@master ~]# kubectl create -f pod-nodeaffinity-preferred.yaml 
pod/pod-nodeaffinity-preferred created
[root@master ~]# kubectl get pod -n dev -o wide
NAME                         READY   STATUS    RESTARTS   AGE    IP               NODE        NOMINATED NODE   READINESS GATES
pod-nodeaffinity-preferred   1/1     Running   0          119s   10.244.169.164   k8s-node2   <none>           <none>                                           

調(diào)度親和性只在調(diào)度過程中生效,調(diào)度完成后即使node的標(biāo)簽發(fā)生了改變,也不理你了。

2.2 PodAffinity的可選配置項(xiàng)

[root@master ~]# kubectl explain pod.spec.affinity.podAffinity
FIELDS:
  # 軟限制 
   requiredDuringSchedulingIgnoredDuringExecution	<[]Object>
    namespace        # 指定參照pod的namespace
    topologyKey      # 指定調(diào)度作用域
    labelSelector    # 標(biāo)簽選擇器
      matchExpressions:
        key    # 鍵
        values    # 值
        operator  # 關(guān)系符
        matchlabels      # 指多個(gè)matchExpressions映射的內(nèi)容
  # 軟限制
     preferredDuringSchedulingIgnoredDuringExecution	<[]Object>
        namespace        # 指定參照pod的namespace
        topologyKey      # 指定調(diào)度作用域
        labelSelector    # 標(biāo)簽選擇器
          matchExpressions:
            key    # 鍵
            values    # 值
            operator  # 關(guān)系符
            matchlabels      # 指多個(gè)matchExpressions映射的內(nèi)容
          weight     # 權(quán)重

topologyKey用于指定調(diào)度時(shí)作用域,例如:

  • 如果指定為Kubernetes.io/hostname,那就是以node節(jié)點(diǎn)為區(qū)分范圍
  • 如果指定為beta.kubernetes.io/os,則以node節(jié)點(diǎn)的操作系統(tǒng)類型來區(qū)分

1)先創(chuàng)建一個(gè)參照的pod,pod-podaffinity-target.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-podaffinity-target
  namespace: dev
  labels:        # 設(shè)置標(biāo)簽
    podenv:  target
spec:
  containers:
  - name: nginx
    image: nginx:1.17.1
  nodeName: k8s-node1   # 部署到node1上面

#創(chuàng)建并查看pod
[root@master ~]# vi pod-podaffinity-target.yaml
[root@master ~]# kubectl create -f pod-podaffinity-target.yaml 
pod/pod-podaffinity-target created
[root@master ~]# kubectl get pod -n dev
NAME                     READY   STATUS    RESTARTS   AGE
pod-podaffinity-target   1/1     Running   0          9s

 2)創(chuàng)建pod-podaffinity-required.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-nodeaffinity-preferred
  namespace: dev
spec:
  containers:
  - name: nginx
    image: nginx:1.17.1
  affinity:        # 親和性設(shè)置
    podAffinity:     # 設(shè)置pod親和性
      requiredDuringSchedulingIgnoredDuringExecution:   # 硬限制
        - labelSelector:
            matchExpressions:      # 匹配env的值在["xxx","yyy"]中的標(biāo)簽
            - key: nodeenv
              operator: In
              values: ["xxx","yyy"]
           topologyKey: kubernetes.io/hostname  # 如果找不到,調(diào)度到目標(biāo)pod同一個(gè)節(jié)點(diǎn)上

# 創(chuàng)建并查看
[root@master ~]# kubectl create -f pod-podaffinity-required.yaml 
pod/pod-podaffinity-required created
[root@master ~]# kubectl get pod -n dev -o wide
NAME                       READY   STATUS    RESTARTS   AGE   IP             NODE        NOMINATED NODE   READINESS GATES
pod-podaffinity-required   0/1     Pending   0          8s    <none>         <none>      <none>           <none>
pod-podaffinity-target     1/1     Running   0          14m   10.244.36.94   k8s-node1   <none>           <none>
[root@master ~]# kubectl describe pod pod-podaffinity-required -n dev
Events:
  Type     Reason            Age                 From               Message
  ----     ------            ----                ----               -------
  Warning  FailedScheduling  13s (x2 over 101s)  default-scheduler  0/3 nodes are available: 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn't tolerate, 2 node(s) didn't match pod affinity rules.

有一個(gè)節(jié)點(diǎn)上有污點(diǎn)(taint)---主節(jié)點(diǎn)

2.3 podAntiAffinity 反親和性案例

還是將剛才設(shè)置的target作為參照,反親和這個(gè)pod那應(yīng)該被調(diào)度到node2上

apiVersion: v1
kind: Pod
metadata:
  name: pod-podantiaffinity-required
  namespace: dev
spec:
  containers:
  - name: nginx
    image: nginx:1.17.1
  affinity:        # 親和性設(shè)置
    podAntiAffinity:     # 設(shè)置pod反親和性
      requiredDuringSchedulingIgnoredDuringExecution:   # 硬限制
        - labelSelector:
            matchExpressions:      # 匹配podenv的值在["target"]中的標(biāo)簽
            - key: podenv
              operator: In
              values: ["target"]
          topologyKey: kubernetes.io/hostname  # 如果找不到,調(diào)度到目標(biāo)pod同一個(gè)節(jié)點(diǎn)上

# 創(chuàng)建并查看pod
[root@master ~]# kubectl create -f pod-podantiaffinity-required.yaml 
pod/pod-podantiaffinity-required created
[root@master ~]# kubectl get pod -n dev -o wide  
NAME                           READY   STATUS    RESTARTS   AGE   IP               NODE        NOMINATED NODE   READINESS GATES
pod-podaffinity-required       1/1     Running   0          10m   10.244.36.95     k8s-node1   <none>           <none>
pod-podaffinity-target         1/1     Running   0          28m   10.244.36.94     k8s-node1   <none>           <none>
pod-podantiaffinity-required   1/1     Running   0          43s   10.244.169.165   k8s-node2   <none>           <none>

3、 污點(diǎn)調(diào)度--站在Node的角度

3.1 污點(diǎn)(Taints)

前面的調(diào)度方式都是站在pod的角度上,通過在Pod上添加屬性,來確定Pod是否需要調(diào)度到指定的Node上,其實(shí)我們也可以站在Node的角度上面,通過在Node上添加污點(diǎn)屬性,來決定是否允許Pod調(diào)度過來。

Node被設(shè)置上污點(diǎn)之后就和Pod之間存在了一種相斥的關(guān)系,進(jìn)而拒絕Pod調(diào)度進(jìn)來,設(shè)置可以將已經(jīng)調(diào)度進(jìn)來的Pod驅(qū)逐出去。

污點(diǎn)的格式為:key=value:effect,key和value是污點(diǎn)的標(biāo)簽,effect描述污點(diǎn)的作用,支持如下的三個(gè)選項(xiàng):

  • PreferNoScheduler:Kubernetes盡量避免把Pod調(diào)度到具有該污點(diǎn)的Node上,除非沒有其他節(jié)點(diǎn)可調(diào)度
  • NoScheduler:Kubernetes將不會(huì)把Pod調(diào)度到具有該污點(diǎn)的Node上,但不影響當(dāng)前node上已經(jīng)存在的pod
  • NoExecute:Kubernetes將不會(huì)把Pod調(diào)度到具有該污點(diǎn)的Node上,同時(shí)也會(huì)講Node上已存在的pod驅(qū)離
# 設(shè)置污點(diǎn)
kubectl taint nodes k8s-node1 key=value:effect

# 去除污點(diǎn)
kubectl taint nodes k8s-node1 key:effect-

# 去除所有污點(diǎn)
kubectl taint nodes k8s-node1 key-

接下來,演示一下污點(diǎn)的效果:

  • 1、準(zhǔn)備節(jié)點(diǎn)node1(暫時(shí)停止node2節(jié)點(diǎn))
  • 2、為node1設(shè)置一個(gè)污點(diǎn):tag=qty:PreferNoSchedule;然后創(chuàng)建pod1(可以)
  • 3、修改為node1節(jié)點(diǎn)設(shè)置一個(gè)污點(diǎn):tag=qty:NoSchedule;然后創(chuàng)建pod2(pod1正常 pod2失?。?/li>
  • 4、修改為node1節(jié)點(diǎn)設(shè)置一個(gè)污點(diǎn):tag=qty:noExecute;創(chuàng)建pod3,全失敗
[root@master ~]# kubectl get node
NAME        STATUS     ROLES                  AGE   VERSION
k8s-node1   Ready      <none>                 13d   v1.23.5
k8s-node2   NotReady   <none>                 13d   v1.23.5
master      Ready      control-plane,master   13d   v1.23.5
# 為node1設(shè)置污點(diǎn)
[root@master ~]# kubectl taint nodes k8s-node1 tag=qty:PreferNoSchedule
node/k8s-node1 tainted
# 創(chuàng)建pod1
[root@master ~]# kubectl run taint1 --image=naginx:1.17.1 -n dev
pod/taint1 created
[root@master ~]# kubectl get pod -n dev
NAME                           READY   STATUS        RESTARTS   AGE
taint1                         1/1     Running       0          53s
# 為node1設(shè)置污點(diǎn),改為NoScheduler
[root@master ~]# kubectl taint nodes k8s-node1 tag:PreferNoSchedule-
node/k8s-node1 untainted
[root@master ~]# kubectl taint nodes k8s-node1 tag=qty:NoSchedule
node/k8s-node1 tainted

# 創(chuàng)建pod2
[root@master ~]# kubectl run taint2 --image=nginx -n dev
pod/taint2 created
[root@master ~]# kubectl get pod -n dev
NAME                           READY   STATUS        RESTARTS   AGE
taint1                         1/1     Running       0          7m14s
taint2                         0/1     Pending       0          11s

# 為node1設(shè)置污點(diǎn)
[root@master ~]# kubectl taint nodes k8s-node1 tag:NoSchedule-
node/k8s-node1 untainted
[root@master ~]# kubectl taint nodes k8s-node1 tag=qty:NoExecute
node/k8s-node1 tainted

# 創(chuàng)建pod3
[root@master ~]# kubectl run taint3 --image=nginx -n dev
pod/taint3 created
[root@master ~]# kubectl get pod -n dev
NAME                           READY   STATUS        RESTARTS   AGE
taint3                         0/1     Pending       0          4s

# 刪除所有污點(diǎn)
[root@master ~]# kubectl taint nodes k8s-node1 tag-
node/k8s-node1 untainted

3.2 容忍(Toleration)

污點(diǎn)就是拒絕,容忍就是忽略,Node通過污點(diǎn)拒絕pod調(diào)度上去,pod通過容忍忽略拒絕

創(chuàng)建pod-toleration.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-toleration
  namespace: dev
spec:
  containers:
  - name: nginx
    image: nginx:1.17.1
  tolerations:        # 添加容忍
  - key: "tag"         # 要容忍的污點(diǎn)的key
    operator: "Equal"   # 操作符
    value: "qty"        # 容忍的污點(diǎn)的value
    effect: "NoExecute"    # 添加容忍的規(guī)則,要和污點(diǎn)的規(guī)則相同

#創(chuàng)建pod查看
[root@master ~]# kubectl create -f pod-toleration.yaml 
pod/pod-toleration created
[root@master ~]# kubectl get pod -n dev
NAME                           READY   STATUS        RESTARTS   AGE
pod-toleration                 1/1     Running       0          39s

                                                                         

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 云原生技術(shù)kubernetes調(diào)度單位pod的使用詳解

    云原生技術(shù)kubernetes調(diào)度單位pod的使用詳解

    這篇文章主要介紹了云原生技術(shù)kubernetes調(diào)度單位pod的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用K8S,感興趣的朋友可以了解下
    2021-03-03
  • K8S部署lnmp項(xiàng)目全過程

    K8S部署lnmp項(xiàng)目全過程

    這篇文章主要介紹了K8S部署lnmp項(xiàng)目全過程,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 在K8S中實(shí)現(xiàn)會(huì)話保持的兩種方案

    在K8S中實(shí)現(xiàn)會(huì)話保持的兩種方案

    這篇文章主要介紹了在K8S中實(shí)現(xiàn)會(huì)話保持的兩種方案,每種方案結(jié)合示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • 詳解kubelet?創(chuàng)建pod流程代碼圖解及日志說明

    詳解kubelet?創(chuàng)建pod流程代碼圖解及日志說明

    這篇文章主要為大家介紹了詳解kubelet?創(chuàng)建pod流程代碼圖解及日志說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • k8s集群搭建的完整步驟流程

    k8s集群搭建的完整步驟流程

    Kubernetes是由Google開源的容器編排平臺(tái),用于自動(dòng)化容器化應(yīng)用的部署、擴(kuò)展和管理,這篇文章主要介紹了k8s集群搭建的完整步驟流程,文中通過圖文及代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-07-07
  • 阿里云kubernetes查找鏡像中jar包的方法(docker查看鏡像中的jar)

    阿里云kubernetes查找鏡像中jar包的方法(docker查看鏡像中的jar)

    這篇文章主要給大家介紹了關(guān)于阿里云kubernetes查找鏡像中jar包的方法,也就是在docker查看鏡像中的jar,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • 使用sealos快速搭建K8s集群環(huán)境的過程

    使用sealos快速搭建K8s集群環(huán)境的過程

    這篇文章主要介紹了使用sealos快速搭建K8s集群環(huán)境,主要包括sealos安裝方法,虛擬機(jī)設(shè)置方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • Kubernetes控制器中DaemonSet與Job的使用教程

    Kubernetes控制器中DaemonSet與Job的使用教程

    這篇文章主要介紹了Kubernetes控制器中DaemonSet與Job的使用,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • 基于openEuler的Ceph分布式存儲(chǔ)集群部署指南

    基于openEuler的Ceph分布式存儲(chǔ)集群部署指南

    本文詳細(xì)介紹了如何在openEuler22.03LTS操作系統(tǒng)上部署Ceph分布式存儲(chǔ)集群,包括環(huán)境準(zhǔn)備、軟件倉庫配置、集群初始化、存儲(chǔ)節(jié)點(diǎn)部署、存儲(chǔ)池創(chuàng)建、監(jiān)控集成和性能優(yōu)化等步驟,感興趣的朋友一起看看吧
    2025-03-03
  • K8s如何拉取habor鏡像

    K8s如何拉取habor鏡像

    這篇文章主要介紹了K8s如何拉取habor鏡像,在daemon.json中添加倉庫地址,需要在創(chuàng)建資源對象所在的節(jié)點(diǎn)進(jìn)行添加,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-04-04

最新評(píng)論