一、目標
學習掌握什麼是kubernetes(k8s)固定節點調度
二、平臺
[[email protected] ~]# uname -r
3.10.0-957.el7.x86_64
[[email protected] ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@master qinhe]# rpm -qa |grep kube
kubeadm-1.17.3-0.x86_64
kubernetes-cni-0.7.5-0.x86_64
kubelet-1.17.3-0.x86_64
kubectl-1.17.3-0.x86_64
各主機規劃:
主機名 IP 角色 端口
master 192.168.73.150 master,node
node1 192.168.73.151 node
node2 192.168.73.152 node
harbor 192.168.73.160 harbor私服
三、前言
1.之前創建deployment的時候,假定指定副本有3個,那麼它不可能同時都放到一個節點服務器。
2.現在使用調度參數就能讓k8s指定一個特定的節點服務器來生成deployment
四、指定pod被調度到特定的節點服務器上
1.創建調度配置文件
[root@master schedule]# vim a1-schedule-pod.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
selector:
matchLabels:
app: my-nginx
replicas: 3
template:
metadata:
labels:
app: my-nginx
spec:
nodeName: node1.hiibm.com
containers:
- name: my-nginx
image: harbor.hiibm.com/public/xnginx:v1.5.20200306
ports:
- containerPort: 80
註釋:
創建Deployment的yaml配置文件,
replicas: 3 ----------->指定副本爲3,
nodeName: node1.hiibm.com ----------->指定必鬚生成在指定的節點服務器node1上
2.使用硬性調度生成Deployment,並查看資源是否只分配到了我們指定的node1節點服務器上了
kubectl apply -f a1-schedule-pod.yaml
kubectl get pod -owide
五、指定pod被調度到特定標籤鍵值的節點服務器上
1.創建配置文件
該配置文件意思是,本deployment生成前,先去檢查物理node服務器的標籤是否有鍵值符合xlabelkey: kahnvalue的k8s節點服務器,如果這樣的服務器存在,我才能在這樣任何服務器上生成pod。
[root@master schedule]# vim a2-schedule-pod.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mynginx2
spec:
selector:
matchLabels:
app: mynginx2
replicas: 2
template:
metadata:
labels:
app: mynginx2
spec:
nodeSelector:
xlabelkey: kahnvalue
containers:
- name: mynginx2
image: harbor.hiibm.com/public/xnginx:v1.5.20200306
ports:
- containerPort: 80
註釋:
nodeSelector: -----------------------------> 節點選擇器
xlabelkey: kahnvalue --------------------> 節點選擇器的條件,選擇標籤鍵是xlabelkey,且鍵值是kahnvalue的物理節點服務器。
2.使用配置文件生成pod,並查看結果
kubectl apply -f a2-schedule-pod.yaml
kubectl get pod -owide
3.給某個服務器打上個自定義標籤
註釋:給node1.hiibm.com服務器打上一個標籤,鍵xlabelkey的值是kahnvalue
kubectl label node node1.hiibm.com xlabelkey=kahnvalue
4.再去看看pod的狀態。
囉嗦:剛剛已經給node1服務器打上yaml中需要的標籤鍵值,現在再看看pod是否生成在了node1服務器上了。
kubectl get pod -owide
從結果上可以看到,給node1打上指定的自定義標籤後,pod立即就生成了。正是我們想要的結果。
5.囉嗦,你可以給任意多個服務器打上這個標籤,那麼他們就可以在任意多個服務器上生成pod了。
--------------------END--------------2020年3月9日17:07:58----------------------