本文共 2443 字,大约阅读时间需要 8 分钟。
nodeSelector:节点选择器用于将Pod调度到匹配label的node上,如果没有匹配的标签会调度失败。完全匹配节点标签,固定到pod的特定节点。nodeAffinity:节点亲和器
具体用法如下
kubectl label node cka-node disktype=gpu
#给 cka-node这个节点打上一个 disktype=ssd的标签
kubectl get node --show-labels #查看所有标签kubectl get node -l disktype=gpu #指定key查找标签
Taints :避免pod调度到特定node上
设置污点kubectl taint node [node] key=value:[effect][effect]有三个可选值1.Noschedule:一定不能被调度2.PreferNoSchedule:尽量不要被调度3.NoExecute:不仅不会被调度,还会驱逐Node上已有的Pod
kubectl taint node cka-node gpu=yes:NoSchedule
kubectl describe node | grep Taint
[root@CKA-master ~]# cat pod.yaml apiVersion: v1kind: Podmetadata: labels: run: nginx name: nginx-gpuspec: nodeSelector: porttype: "ssd" containers: - image: nginx name: nginx-ssd resources: { } dnsPolicy: ClusterFirstkubectl apply -f pod.yaml
apiVersion: v1kind: Podmetadata: labels: run: nginx name: nginx-tolerationsspec: tolerations: - key: "gpu" #key等于gpu operator: "Equal" #相等 value: "yes" #value=yes effect: "NoSchedule" #污点标签 nodeSelector: disktype: "gpu" #指定标签 containers: - image: nginx name: nginx-ssd resources: { } dnsPolicy: ClusterFirst
kubectl taint node cka-node gpu:NoSchedule-
增加 nodeName: "cka-node"的配置
apiVersion: v1kind: Podmetadata: labels: run: nginx name: nginx-nodespec: nodeName: "cka-node" containers: - image: nginx name: nginx-ssd resources: { } dnsPolicy: ClusterFirst
DaemonSet功能:
1.在每个Node上运行一个Pod 2.新加入的Node也同样会自动运行一个Pod 应用场景:网络插件,监控Agent,日志AgentapiVersion: apps/v1kind: DaemonSetmetadata: labels: app: nginx name: nginxspec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: tolerations: #容忍master节点的污点 - effect: NoSchedule #容忍master节点的污点 operator: Exists #容忍master节点的污点 containers: - image: nginx name: nginx resources: { }
#启动 kubectl apply -f daemonset.yaml
kubectl get pods -o wide
转载地址:http://nhah.baihongyu.com/