乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Kubernetes K8S之固定節(jié)點nodeName和nodeSelector調度詳解

       小仙女本仙人 2022-05-22 發(fā)布于北京

       

      Kubernetes K8S之固定節(jié)點nodeName和nodeSelector調度詳解與示例

       

      主機配置規(guī)劃

      服務器名稱(hostname)系統(tǒng)版本配置內網IP外網IP(模擬)
      k8s-master CentOS7.7 2C/4G/20G 172.16.1.110 10.0.0.110
      k8s-node01 CentOS7.7 2C/4G/20G 172.16.1.111 10.0.0.111
      k8s-node02 CentOS7.7 2C/4G/20G 172.16.1.112 10.0.0.112

       

      nodeName調度

      nodeName是節(jié)點選擇約束的最簡單形式,但是由于其限制,通常很少使用它。nodeName是PodSpec的領域。

      pod.spec.nodeName將Pod直接調度到指定的Node節(jié)點上,會【跳過Scheduler的調度策略】,該匹配規(guī)則是【強制】匹配??梢栽竭^Taints污點進行調度。

      nodeName用于選擇節(jié)點的一些限制是:

      • 如果指定的節(jié)點不存在,則容器將不會運行,并且在某些情況下可能會自動刪除。
      • 如果指定的節(jié)點沒有足夠的資源來容納該Pod,則該Pod將會失敗,并且其原因將被指出,例如OutOfmemory或OutOfcpu。
      • 云環(huán)境中的節(jié)點名稱并非總是可預測或穩(wěn)定的。

       

      nodeName示例

      獲取當前的節(jié)點信息

      1 [root@k8s-master scheduler]# kubectl get nodes - o wide
        2 NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER- RUNTIME
        3 k8s-master Ready master 42d v1. 172.16   。172.16 。 110     <無> CentOS Linux (Core)     3。el7.x 11062 .el7.x 1064 docker: // 19.3 - 4 k8s-node01 4.7.8 4 k8s-node01 4.8.7 <none> 22d v1. 17.4 172.161.111     <無> CentOS Linux 7(內核)    3.10 . 0 - 1062
          .el7.x86_64 docker: // 19.3.8 
      5 k8s-node02 就緒 <none> 42d v1. 17.4    172.16。1.112    <無> CentOS Linux 7 (Core)    3.100 - 1062 .el7.x86_64 泊塢窗:// 19.3.8

       

      當nodeName指定節(jié)點存在

      要運行的yaml文件

      1 [root@k8s-master scheduler]# pwd 
      2 /root/k8s_practice/ scheduler
       3 [root@k8s-master scheduler]# cat scheduler_nodeName.yaml 
       4 apiVersion: apps/ v1
       5  kind: Deployment
       6  metadata:
       7    name: scheduler-節(jié)點名-部署
      8個   標簽:
       9     應用程序:節(jié)點名-部署
      10 規(guī)范:
       11   副本:5 
      12   選擇器:
       13     匹配標簽:
       14       應用程序:myapp
       15   模板:
       16     metadata:
      17       labels:
      18         app: myapp
      19     spec:
      20       containers:
      21       - name: myapp-pod
      22         image: registry.cn-beijing.aliyuncs.com/google_registry/myapp:v1
      23         imagePullPolicy: IfNotPresent
      24         ports:
      25           - containerPort: 80
      26       # 指定節(jié)點運行
      27       nodeName: k8s-master

       

      運行yaml文件并查看信息

      1 [root@k8s-master scheduler]# kubectl apply -f scheduler_nodeName.yaml 
       2 deployment.apps/scheduler-nodename- deploy created
       3 [root@k8s- master scheduler]# 
       4 [root@k8s-master scheduler]# kubectl get deploy -o wide
       5 NAME READY UP-TO- DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
       6 scheduler-nodename-deploy    0 / 5      5             0            6s myapp-pod registry.cn-beijing.aliyuncs.com/google_registry/myapp:v1 app= myapp
       7 [root@k8s-master scheduler]# 
       8 [root@k8s-master scheduler]# kubectl get rs -o wide
       9  NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
       10 scheduler-nodename-deploy-d5c9574bd    5          5          5        15s myapp-pod registry.cn-beijing. aliyuncs.com/google_registry/myapp:v1 app=myapp,pod-template-hash= d5c9574bd
       11 [root@k8s- master scheduler]# 
       12 [root@k8s-master scheduler]# kubectl get pod - o wide
       13 NAME READY STATUS RESTARTS AGE IP 節(jié)點 NOMINATED READINESS GATES
       14 scheduler-nodename-deploy-d5c9574bd-6l9d8    1 / 1      Running    0           23s    10.244。0.123    k8s-master <none> <none>
       15 scheduler-nodename-deploy-d5c9574bd-c82cc    1 / 1      Running    0           23s    10.2440.119    k8s-master <none> <none>
       16 scheduler-nodename-deploy-d5c9574bd-dkkjg    1 / 1     運行   0           23s    10.2440.122    k8s-master <none> <none>
       17 scheduler-nodename-deploy-d5c9574bd-hcn77    1 / 1     運行   0           23s    10.244。0.121    k8s-master <none> <none>
       18 scheduler-nodename-deploy-d5c9574bd-zstjx    1 / 1     運行   0           23s    10.2440.120    k8s-master <無> <無>

      由上可見,yaml文件中nodeName: k8s-master生效,所有pod被調度到了k8s-master節(jié)點。如果這里是nodeName: k8s-node02,那么就會直接調度到k8s-node02節(jié)點。

       

      當nodeName指定節(jié)點不存在

      要運行的yaml文件

      1 [root@k8s-master scheduler]# pwd 
      2 /root/k8s_practice/ scheduler
       3 [root@k8s-master scheduler]# cat scheduler_nodeName_02.yaml 
       4 apiVersion: apps/ v1
       5  kind: Deployment
       6  metadata:
       7    name: scheduler-節(jié)點名-部署
      8個   標簽:
       9     應用程序:節(jié)點名-部署
      10 規(guī)范:
       11   副本:5 
      12   選擇器:
       13     匹配標簽:
       14       應用程序:myapp
       15   模板:
      16     metadata:
      17       labels:
      18         app: myapp
      19     spec:
      20       containers:
      21       - name: myapp-pod
      22         image: registry.cn-beijing.aliyuncs.com/google_registry/myapp:v1
      23         imagePullPolicy: IfNotPresent
      24         ports:
      25           - containerPort: 80
      26       # 指定節(jié)點運行,該節(jié)點不存在
      27       nodeName: k8s-node08

       

      運行yaml文件并查看信息

      1 [root@k8s-master scheduler]# kubectl apply -f scheduler_nodeName_02.yaml 
       2 deployment.apps/scheduler-nodename- deploy created
       3 [root@k8s- master scheduler]# 
       4 [root@k8s-master scheduler]# kubectl get deploy -o wide
       5 NAME READY UP-TO- DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
       6 scheduler-nodename-deploy    0 / 5      5             0            4s myapp-pod registry.cn-beijing.aliyuncs.com/google_registry/myapp:v1 app= myapp
       7[root@k8s- master scheduler]# 
       8 [root@k8s-master scheduler]# kubectl get rs - o wide
       9  NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
       10 scheduler-nodename-deploy-75944bdc5d    5          5          0        9s myapp-pod registry .cn-beijing.aliyuncs.com/google_registry/myapp:v1 app=myapp,pod-template-hash= 75944bdc5d
       11 [root@k8s- master scheduler]# 
       12 [root@k8s-master scheduler]# kubectl get pod -o寬
      13 NAME READY STATUS RESTARTS AGE IP Node NOMINATED READINESS GATES
       14 scheduler-nodename-deploy-75944bdc5d-c8f5d    0 / 1      Pending    0           13s <none> k8s-node08 <none> <none>
       15 scheduler-nodename-deploy-75944bdc5d-hfdlv    0 / 1      Pending    0           13s <none> k8s-node08 <none> <none>
       16 scheduler-nodename-deploy-75944bdc5d-q9qgt    0 / 1      Pending    0           13s <none> k8s-node08 <none> <
      無>17 scheduler-nodename-deploy-75944bdc5d-q9zl7    0 / 1      Pending    0           13s <none> k8s-node08 <none> <none>
       18 scheduler-nodename-deploy-75944bdc5d-wxsnv    0 / 1      Pending    0           13s <none> k8s-node08 <無> <無>

      由上可見,如果指定的節(jié)點不存在,則容器將不會運行,一直處于Pending 狀態(tài)。

       

      nodeSelector調度

      nodeSelector是節(jié)點選擇約束的最簡單推薦形式。nodeSelector是PodSpec的領域。它指定鍵值對的映射。

      Pod.spec.nodeSelector是通過Kubernetes的label-selector機制選擇節(jié)點,由調度器調度策略匹配label,而后調度Pod到目標節(jié)點,該匹配規(guī)則屬于【強制】約束。由于是調度器調度,因此不能越過Taints污點進行調度。

       

      nodeSelector示例

      獲取當前的節(jié)點信息

      1 [root@k8s-master ~]# kubectl get node -o wide --show- labels
       2 NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER- RUNTIME LABELS
       3 k8s-master Ready master 42d v1。17.4    172.161.110    <無> CentOS Linux 7 (Core)    3.10。0 - 1062 .el7.x86_64 docker: // 19.3.8 beta./arch=amd64,beta./os=linux,/arch=amd64,/hostname=k8s-大師,/os=linux,node-role./master= 
      4k8s-node01 就緒 <無> 42d v1. 17.4    172.16。1.111    <無> CentOS Linux 7 (Core)    3.10。0 - 1062 .el7.x86_64 docker: // 19.3.8 beta./arch=amd64,beta./os=linux,/arch=amd64,/hostname=k8s- node01,/os=linux 
      5 k8s-node02 Ready <none> 42d v1. 17.4    172.16。1.112    <無> CentOS Linux 7 (Core)    3.100 - 1062 .el7.x86_64 泊塢窗://19.3.8     beta./arch=amd64,beta./os=linux,/arch=amd64,/hostname=k8s-node02,/os=linux

       

      添加label標簽

      運行kubectl get nodes以獲取群集節(jié)點的名稱。然后可以對指定節(jié)點添加標簽。比如:k8s-node01的磁盤為SSD,那么添加disk-type=ssd;k8s-node02的CPU核數(shù)高,那么添加cpu-type=hight;如果為Web機器,那么添加service-type=web。怎么添加標簽可以根據(jù)實際規(guī)劃情況而定。

       1 ### 給k8s-node01 添加指定標簽
       2 [root@k8s-master ~]# kubectl label nodes k8s-node01 disk-type=ssd
       3 node/k8s-node01 labeled
       4 #### 刪除標簽命令 kubectl label nodes k8s-node01 disk-type-
       5 [root@k8s-master ~]# 
       6 [root@k8s-master ~]# kubectl get node --show-labels
       7 NAME         STATUS   ROLES    AGE   VERSION   LABELS
       8 k8s-master   Ready    master   42d   v1.17.4   beta./arch=amd64,beta./os=linux,/arch=amd64,/hostname=k8s-master,/os=linux,node-role./master=
       9 k8s-node01 Ready <none> 42d v1. 17.4    beta./arch=amd64,beta./os=linux,disk-type=ssd,/arch=amd64,/主機名=k8s-node01,/os = linux
       10 k8s-node02 就緒 <無> 42d v1。17.4    beta./arch=amd64,beta./os=linux,/arch=amd64,/主機名=k8s-node02,/os=linux

      由上可見,已經為k8s-node01節(jié)點添加了disk-type=ssd 標簽。

       

      當nodeSelector標簽存在

      要運行的yaml文件

      1 [root@k8s-master scheduler]# pwd 
      2 /root/k8s_practice/ scheduler
       3 [root@k8s- master scheduler]# 
       4 [root@k8s-master scheduler]# cat scheduler_nodeSelector.yaml 
       5 apiVersion:apps/ v1
       6種 :部署
      7 元數(shù)據(jù):
       8   名稱:scheduler-nodeselector-部署
      9   標簽:
       10     應用程序:nodeselector-部署
      11 規(guī)范:
       12   副本:5 
      13   選擇器:
       14      matchLabels:
       15       app: myapp
      16   template:
      17     metadata:
      18       labels:
      19         app: myapp
      20     spec:
      21       containers:
      22       - name: myapp-pod
      23         image: registry.cn-beijing.aliyuncs.com/google_registry/myapp:v1
      24         imagePullPolicy: IfNotPresent
      25         ports:
      26           - containerPort: 80
      27       # 指定節(jié)點標簽選擇,且標簽存在
      28       nodeSelector:
      29         disk-type: ssd

       

      運行yaml文件并查看信息

      1 [root@k8s-master scheduler]# kubectl apply -f scheduler_nodeSelector.yaml 
        2 deployment.apps/scheduler-nodeselector- deploy created
        3 [root@k8s- master scheduler]# 
        4 [root@k8s-master scheduler]# kubectl get deploy -o wide
        5 NAME READY Up- TO- DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
        6 scheduler-nodeselector-deploy     5 / 5      5             5             10s myapp-pod registry.cn-beijing.aliyuncs.com/google_registry/myapp:v1 app= myapp
        7 [root@k8s-主調度器]# 
        8 [root@k8s-master scheduler]# kubectl get rs - o wide
       9  NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
       10 scheduler-nodeselector-deploy-79455db454    5          5          5        14s myapp-pod registry .cn-beijing.aliyuncs.com/google_registry/myapp:v1 app=myapp,pod-template-hash= 79455db454
       11 [root@k8s- master scheduler]# 
       12 [root@k8s-master scheduler]# kubectl get pod -o寬
      13 名稱就緒狀態(tài)重新啟動年齡 IP 節(jié)點提名節(jié)點就緒門
      14 scheduler-nodeselector-deploy-79455db454-745ph    1 / 1     運行   0           19s    10.244。4.154    k8s-node01 <none> <none>
       15 scheduler-nodeselector-deploy-79455db454-bmjvd    1 / 1     運行   0           19s    10.244。4.151    k8s-node01 <none> <none>
       16調度程序-nodeselector-deploy-79455db454-g5cg2    1 /1     運行   0           19s    10.244。4.153 k8s    -node01 <none> <none>
       17 scheduler-nodeselector-deploy-79455db454-hw8jv    1 / 1     運行   0           19s    10.244。4.152    k8s-node01 <none> <none>
       18 scheduler-nodeselector-deploy-79455db454-zrt8d    1 / 1     運行   0           19s    10.244。4.155    k8s-node01 <無> <無>

      由上可見,所有pod都被調度到了k8s-node01節(jié)點。當然如果其他節(jié)點也有disk-type=ssd 標簽,那么pod也會調度到這些節(jié)點上。

       

      當nodeSelector標簽不存在

      要運行的yaml文件

      1 [root@k8s-master scheduler]# pwd 
      2 /root/k8s_practice/ scheduler
       3 [root@k8s- master scheduler]# 
       4 [root@k8s-master scheduler]# cat scheduler_nodeSelector_02.yaml 
       5 apiVersion:apps/ v1
       6種 :部署
      7 元數(shù)據(jù):
       8   名稱:scheduler-nodeselector-部署
      9   標簽:
       10     應用程序:nodeselector-部署
      11 規(guī)范:
       12   副本:5 
      13   選擇器:
       14      matchLabels:
       15       app: myapp
      16   template:
      17     metadata:
      18       labels:
      19         app: myapp
      20     spec:
      21       containers:
      22       - name: myapp-pod
      23         image: registry.cn-beijing.aliyuncs.com/google_registry/myapp:v1
      24         imagePullPolicy: IfNotPresent
      25         ports:
      26           - containerPort: 80
      27       # 指定節(jié)點標簽選擇,且標簽不存在
      28       nodeSelector:
      29         service-type: web

       

      運行yaml文件并查看信息

      1 [root@k8s-master scheduler]# kubectl apply -f scheduler_nodeSelector_02.yaml 
        2 deployment.apps/scheduler-nodeselector- deploy created
        3 [root@k8s- master scheduler]# 
        4 [root@k8s-master scheduler]# kubectl get deploy -o wide
        5 NAME READY Up- TO- DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
        6 scheduler-nodeselector-deploy     0 / 5      5             0             26s myapp-pod registry.cn-beijing.aliyuncs.com/google_registry/myapp:v1 app= myapp
        7 [root@k8s -主調度程序]# 
        8[root@k8s-master scheduler]# kubectl get rs -o wide
        9  NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
        10 scheduler-nodeselector-deploy-799d748db6     5          5          0         30s myapp-pod registry .cn-beijing.aliyuncs.com/google_registry /myapp:v1 app=myapp,pod-template-hash= 799d748db6
        11 [root@k8s- master scheduler]# 
        12 [root@k8s-master scheduler]# kubectl get pod -o寬
      13  NAME READY STATUS RESTARTS AGE IP Node NOMINATED節(jié)點就緒
       門14 scheduler-nodeselector-deploy-799d748db6-92mqj     0 / 1      待定    0            40s <none> <none> <none> <none>
        15 scheduler-nodeselector-deploy-799d748db6-c2w25     0 / 1       Pending     0            40s <none> <none> <none> <none>
        16 scheduler-nodeselector-deploy-799d748db6 -c8tlx     0 / 1      等待    0            40s <無> <無> <無>
      <無> 17 scheduler-nodeselector-deploy-799d748db6-tc5n7     0 / 1       Pending     0            40s <none> <none> <none> <none>
        18 scheduler-nodeselector-deploy-799d748db6-z8c57     0 / 1       Pending     0            40s <none> <無> <無> <無>

      由上可見,如果nodeSelector匹配的標簽不存在,則容器將不會運行,一直處于Pending 狀態(tài)。

       

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多