一:node Affinity与anti-affinity
Pod调度流程
Pod调度流程
1:nodeSelector
nodeSelector简介
-
nodeSelector 基于node标签选择器,将pod调度的指定的目的节点上。
-
可用于基于服务类型干预Pod调度结果,如对磁盘I/O要求高的pod调度到SSD节点,对内存要求比较高的 pod调度的内存较高的节点。
-
也可以用于区分不同项目的pod,如将node添加不同项目的标签,然后区分调度。
-
# kubectl describe node 172.31.7.111 #默认标签
nodeSelector案例
-
为node节点打标签
-
kubectl label node 172.31.7.111 project="magedu"
-
node/172.31.7.111 labeled
-
-
kubectl label node 172.31.7.111 disktype="ssd"
-
node/172.31.7.111 labeled
-
-
-
将pod调度到目的node,yaml文件中指定的key与value必须精确 匹配:
-
kubectl apply -f case1-nodeSelector.yaml
-
deployment.apps/magedu-tomcat-app2-deployment created
-
-
-
为node节点打其它标签:
-
kubectl label node 172.31.7.112 disktype="ssd"
-
node/172.31.7.111 labeled
-
-
[root@k8s-master1 Affinit-case]#cat case1-nodeSelector.yaml
kind: Deployment
#apiVersion: extensions/v1beta1
apiVersion: apps/v1
metadata:
labels:
app: magedu-tomcat-app2-deployment-label
name: magedu-tomcat-app2-deployment
namespace: magedu
spec:
replicas: 4
selector:
matchLabels:
app: magedu-tomcat-app2-selector
template:
metadata:
labels:
app: magedu-tomcat-app2-selector
spec:
containers:
- name: magedu-tomcat-app2-container
image: tomcat:7.0.94-alpine
imagePullPolicy: IfNotPresent
#imagePullPolicy: Always
ports:
- containerPort: 8080
protocol: TCP
name: http
env:
- name: "password"