k8s nameapce增加默认node-selector和defaultTolerations
开启准入控制器
编辑 kubadm-config
kubectl edit cm -n kube-system kubeadm-config
内容参考如下
data:
ClusterConfiguration: |
apiServer:
extraArgs:
authorization-mode: Node,RBAC
# 增加配置,开启 enable-admission-plugins
enable-admission-plugins: NodeRestriction,PodNodeSelector,PodTolerationRestriction
...
备份 /etc/kubernetes/
(必须)
编辑 kubeadm-init.yaml, 增加
...
apiServer:
timeoutForControlPlane: 4m0s
# 增加扩展配置
extraArgs:
authorization-mode: Node,RBAC
enable-admission-plugins: NodeRestriction,PodNodeSelector,PodTolerationRestriction
...
要在 /etc/kubernetes/manifests
中编写新的清单文件,你可以使用:
# kubeadm init phase control-plane <component-name> --config <config-file>
kubeadm init phase control-plane apiserver --config kubeadm-init.yaml
在namespace 注解中配置节点选择相关内容
apiVersion: v1
kind: Namespace
metadata:
...
annotations:
...
# 默认的节点选择
scheduler.alpha.kubernetes.io/node-selector: 'node-role.kubernetes.io/whitetiger=true'
# 默认的污点容忍
scheduler.alpha.kubernetes.io/defaultTolerations: '[{"operator": "Exists", "effect": "NoSchedule", "key": "whitetiger"}]'
# 污点容忍列表白名单
scheduler.alpha.kubernetes.io/tolerationsWhitelist: '[{"effect":"NoExecute","key":"node.kubernetes.io/not-ready","operator":"Exists"},{"effect":"NoExecute","key":"node.kubernetes.io/unreachable","operator":"Exists"},{"effect":"NoSchedule","key":"node.kubernetes.io/memory-pressure","operator":"Exists"},{"effect":"NoSchedule","key":"whitetiger","operator":"Exists"}]'
...
namespace 配置好上面内容后,在该namespace 中发布的服务默认会添加对应的 节点选择 和 污点容忍
参考:
https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/
https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/kubeadm/kubeadm-reconfigure/
Last updated
Was this helpful?