【Kubernetes】Pod排程到指定Node
阿新 • • 發佈:2019-01-29
問題描述 |
Kubernetes有著自己特定的排程演算法與策略,有Master中的Scheduler元件來實現,根據Node資源使用情況自動排程Pod的建立,通常可以滿足我們大部分的需求。但是有時我們希望可以將某些Pod排程到特定硬體節點上,這裡採用目前最為簡單的nodeName和nodeSelector來實現Pod排程。
假設以下場景:有三個Node,分別為107、108、109,建立Deployments來部署Tomcat應用,指定在107節點上建立Pod。
解決方案 |
nodeName
Pod.spec.nodeName將Pod直接排程到指定的Node節點上,會跳過Scheduler的排程策略,該匹配規則是強制匹配。
- Tomcatl.yaml檔案
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: myweb
spec:
replicas: 2
template:
metadata:
labels:
app: myweb
spec:
nodeSelector: 107 #直接通過節點名稱排程到指定節點
containers:
- name: myweb
image: harbor/tomcat:8.5-jre8
ports:
- containerPort: 80
nodeSelector
Pod.spec.nodeSelector通過kubernetes的label-selector機制選擇節點,由排程器排程策略匹配label,而後排程Pod到目標節點,該匹配規則屬於強制約束。
- 設定 Node Lable
kubectl label nodes 107 type=backEndNode1
- Tomcatl.yaml檔案
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: myweb
spec:
replicas: 2
template:
metadata:
labels:
app: myweb
spec:
nodeSelector:
type: backEndNode1
containers:
- name: myweb
image: harbor/tomcat:8.5 -jre8
ports:
- containerPort: 80
- 建立Deployment
kubectl create -f Tomcat.yaml