kubernetes調度pod運行於master節點上


應用背景:

使用kubeadm部署的kubernetes集群,其master節點默認拒絕將pod調度運行於其上的,加點官方的術語就是:master默認被賦予了一個或者多個“污點(taints)”,“污點”的作用是讓該節點拒絕將pod調度運行於其上。那么存在某些情況,比如想讓master也成為工作節點可以調度pod運行怎么辦呢?

兩種方式:①去掉“污點”(taints)【生產環境不推薦】;②讓pod能夠容忍(tolerations)該節點上的“污點”。

 

測試環境:

節點名稱 節點類型 版本號 部署方式
kube-node-01 Master v1.11.2 kubeadm init
kube-node-02 Node v1.11.2 kubeadm join
kube-node-03 Node v1.11.2 kubeadm join

 

 

 

 

 

 

操作步驟:

1. 當前環境

[root@kube-node-01 ~]# kubectl get pod -o wide
No resources found.

 

2. 准備一個yaml文件創建pod(2副本)

[root@kube-node-01 ~]# kubectl apply -f test-springboot-rc.yaml  
replicationcontroller/test-springboot created
[root@kube-node-01 ~]# kubectl get pods -o wide
NAME                                          READY     STATUS    RESTARTS   AGE       IP             NODE          NOMINATED NODE
test-springboot-6495q                         1/1       Running   0          2m        10.244.2.113   kube-node-03   <none>
test-springboot-b5sq2                         1/1       Running   0          2m        10.244.1.76    kube-node-02   <none>

以上運行的2個pod分別被調度到節點2和節點3上,目前還不足以說明調度不到節點1上,繼續操作;

 

3. 擴容pod副本觀察

[root@kube-node-01 ~]# kubectl scale rc test-springboot --replicas=3
replicationcontroller/test-springboot scaled
[root@tlsw-pre-01 ~]# kubectl get pods -o wide
NAME                                          READY     STATUS    RESTARTS   AGE       IP             NODE          NOMINATED NODE
test-springboot-6495q                         1/1       Running   0          4m       10.244.2.113   kube-node-03   <none>
test-springboot-68qtw                         1/1       Running   0          9s       10.244.2.114   kube-node-03   <none>
test-springboot-b5sq2                         1/1       Running   0          4m       10.244.1.76    kube-node-02   <none>

一般情況下,kubernetes的pod調度策略會盡量的安排相同的pod安排至不同的節點,上面推測因為節點1含有污點,pod不得不再次調度到節點2或者節點3上去。

再次測試默認調度,添加pod副本至5個:

[root@tlsw-pre-01 home]# kubectl scale rc test-springboot --replicas=5
replicationcontroller/test-springboot scaled
[root@tlsw-pre-01 home]# kubectl get pods -o wide
NAME                                          READY     STATUS    RESTARTS   AGE       IP             NODE          NOMINATED NODE
test-springboot-4875k                         1/1       Running   0          1m        10.244.1.77    kube-node-02   <none>
test-springboot-6495q                         1/1       Running   0          14m       10.244.2.113   kube-node-03   <none>
test-springboot-68qtw                         1/1       Running   0          10m       10.244.2.114   kube-node-03   <none>
test-springboot-b5sq2                         1/1       Running   0          14m       10.244.1.76    kube-node-02   <none>
test-springboot-hghwb                         1/1       Running   0          1m        10.244.2.115   kube-node-03   <none>

以上顯而易見,master節點(kube-node-01)上一直沒有pod運行,因為含有“污點”作祟。

 

4. 查看master節點的容忍參數

[root@kube-node-01 ~]# kubectl describe node kube-node-01
……
Taints: node-role.kubernetes.io/master:NoSchedule
Unschedulable:      false
……

 

5.添加污點容忍(並再次增加副本數至6)

根據容忍參數在pod對應的yaml文件中添加“容忍”段,如下:

…… 
replicas: 6   // 在當前的運行環境副本數(5個)上增加1個副本,用來觀察pod調度
……
spec
: tolerations: - key: node-role.kubernetes.io/master operator: Exists effect: NoSchedule containers: - name: test-springboot ……
[root@tlsw-pre-01 home]# kubectl apply -f test-springboot-rc.yaml 
replicationcontroller/test-springboot configured
[root@tlsw-pre-01 home]# kubectl get pod -o wide
NAME                                          READY     STATUS              RESTARTS   AGE       IP             NODE          
test-springboot-4875k                         1/1       Running             0          10m       10.244.1.77    kube-node-02
test-springboot-6495q                         1/1       Running             0          23m       10.244.2.113   kube-node-03
test-springboot-68qtw                         1/1       Running             0          19m       10.244.2.114   kube-node-03 
test-springboot-6pz2x                         0/1       ContainerCreating   0          3s        <none>         kube-node-01 
test-springboot-b5sq2                         1/1       Running             0          23m       10.244.1.76    kube-node-02 
test-springboot-hghwb                         1/1       Running             0          10m       10.244.2.115   kube-node-03 

很明顯,最新的一個pod已經調度至master節點,還在創建中,等待一下即可正常running。

 

結束.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM