nodeSelector
这样给节点加标签
kubectl label nodes <node-name> <label-key>=<label-value>
比如我们给节点加磁盘类型ssd的标签
kubectl label nodes kubernetes-foo-node-1.c.a-robinson.internal disktype=ssd
给pod或者Deployment的模板配置节点选择器,原配置:
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
env: test
spec:
containers:
- name: nginx
image: nginx
改为:
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
env: test
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
nodeSelector:
disktype: ssd
一般可以用内置的一批标签:kubenetes.io/hostname,kubenetes.io/os,kubenetes.io/arch。
节点亲和
apiVersion: v1
kind: Pod
metadata:
name: with-node-affinity
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/e2e-az-name
operator: In
values:
- e2e-az1
- e2e-az2
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
preference:
matchExpressions:
- key: another-node-label-key
operator: In
values:
- another-node-label-value
containers:
- name: with-node-affinity
image: k8s.gcr.io/pause:2.0
requiredDuringSchedulingIgnoredDuringExecution“硬需求”preferredDuringSchedulingIgnoredDuringExecution“软需求”
污点
污点用于排除Pod,pod不会被调度到包含污点的node上。除非pod声明自己能容忍此污点
