kube-apiserver 配置
少于1分钟
简要概述
一些关键参数说明。
参数解析
节点异常后 Pod 重建时间
配置以下参数,默认值为 300 秒:
--default-not-ready-toleration-seconds=300
--default-unreachable-toleration-seconds=300
同时开启 TaintNodesByCondition 控制器,默认也是启用的:
--enable-admission-plugins=TaintNodesByCondition
这样在创建生成 Pod 时,会自动添加以下 tolerations 分别表示对污点 “NotReady:NoExecute”、“Unreachable:NoExecute” 的容忍时长:
apiVersion: v1
kind: Pod
metadata:
spec:
containers:
......
tolerations:
- effect: NoExecute
key: node.kubernetes.io/not-ready
operator: Exists
tolerationSeconds: 300
- effect: NoExecute
key: node.kubernetes.io/unreachable
operator: Exists
tolerationSeconds: 300
以上说明当节点出现 “node.kubernetes.io/not-ready” 或 “node.kubernetes.io/unreachable” 时,该 Pod 还将在这个节点上运行多长时间,如默认集群节点判断不健康需要 40s 则以上发生 Pod 被驱逐需要 340s(40s + 300s)时间。
在集群级别应用 Pod 安全标准
涉及参数:
--admission-control-config-file
配置示例:
--admission-control-config-file=/etc/kubernetes/policies/admission-controls.yaml
cat <<EOF > /etc/kubernetes/policies/admission-controls.yaml
apiVersion: apiserver.config.k8s.io/v1
kind: AdmissionConfiguration
plugins:
- name: PodSecurity
configuration:
apiVersion: pod-security.admission.config.k8s.io/v1
kind: PodSecurityConfiguration
defaults:
enforce: "baseline"
enforce-version: "latest"
audit: "restricted"
audit-version: "latest"
warn: "restricted"
warn-version: "latest"
exemptions:
usernames: []
runtimeClasses: []
namespaces: [kube-system]
EOF
这里使用 AdmissionConfiguration 配置了一个静态的 PodSecurity 准入控制器。说明如果违反 “baseline” 则不允许创建 Pod,如果违反 “restricted” 模式,则记录审计日志并在终端输出警告。具体配置可参考 Pod 安全标准。
最后修改 2023.12.11: docs: add admission controller (3a9fca6)