kube-apiserver 配置

简要概述

一些关键参数说明。

参数解析

节点异常后 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)