<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>OPSaid – 节点组件</title><link>https://opsaid.net/docs/cloud-native/kubernetes/node-components/</link><description>Recent content in 节点组件 on OPSaid</description><generator>Hugo -- gohugo.io</generator><atom:link href="https://opsaid.net/docs/cloud-native/kubernetes/node-components/index.xml" rel="self" type="application/rss+xml"/><item><title>Docs: 参数配置</title><link>https://opsaid.net/docs/cloud-native/kubernetes/node-components/kubelet-config/</link><pubDate>Mon, 19 Dec 2022 11:34:43 +0800</pubDate><guid>https://opsaid.net/docs/cloud-native/kubernetes/node-components/kubelet-config/</guid><description>
&lt;h2 id="简要概述">简要概述&lt;/h2>
&lt;h2 id="参数解析">参数解析&lt;/h2>
&lt;h3 id="命令行参数">命令行参数&lt;/h3>
&lt;ul>
&lt;li>外部组建参数&lt;/li>
&lt;/ul>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>名称&lt;/th>
&lt;th>默认值&lt;/th>
&lt;th>来自组件&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>add-dir-header&lt;/td>
&lt;td>false&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;td>在输出日志时，是否把代码文件所在目录一起提供，如：state/state_mem.go:36，否则仅输出：state_mem.go:36&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>alsologtostderr&lt;/td>
&lt;td>-&lt;/td>
&lt;td>klog&lt;/td>
&lt;td>已弃用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>application-metrics-count-limit&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>azure-container-registry-config&lt;/td>
&lt;td>-&lt;/td>
&lt;td>azure&lt;/td>
&lt;td>包含 Azure 容器镜像库配置信息的文件的路径&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>boot-id-file&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>默认来自：/proc/sys/kernel/random/boot_id&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>cloud-config&lt;/td>
&lt;td>-&lt;/td>
&lt;td>kubelet&lt;/td>
&lt;td>已弃用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>cloud-provider&lt;/td>
&lt;td>-&lt;/td>
&lt;td>kubelet&lt;/td>
&lt;td>已弃用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>cni-bin-dir&lt;/td>
&lt;td>/opt/cni/bin&lt;/td>
&lt;td>dockershim&lt;/td>
&lt;td>已弃用 cni 的相关二进制地址&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>cni-cache-dir&lt;/td>
&lt;td>/var/lib/cni/cache&lt;/td>
&lt;td>dockershim&lt;/td>
&lt;td>已弃用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>cni-conf-dir&lt;/td>
&lt;td>/etc/cni/net.d&lt;/td>
&lt;td>dockershim&lt;/td>
&lt;td>已弃用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>container-hints&lt;/td>
&lt;td>/etc/cadvisor/container_hints.json&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>container-runtime&lt;/td>
&lt;td>remote&lt;/td>
&lt;td>kubelet&lt;/td>
&lt;td>已废弃，目前支持 docker、remote，以后仅支持 remote&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>containerd&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>containerd-namespace&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>docker&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>docker-endpoint&lt;/td>
&lt;td>-&lt;/td>
&lt;td>dockershim&lt;/td>
&lt;td>已弃用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>docker-env-metadata-whitelist&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>docker-only&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>docker-root&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>docker-tls&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>docker-tls-ca&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>docker-tls-cert&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>docker-tls-key&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>dynamic-config-dir&lt;/td>
&lt;td>-&lt;/td>
&lt;td>kubelet&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>enable-load-reader&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>event-storage-age-limit&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>event-storage-event-limit&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>experimental-allocatable-ignore-eviction&lt;/td>
&lt;td>false&lt;/td>
&lt;td>kubelet&lt;/td>
&lt;td>设置为 true 表示在计算节点可分配资源数量时忽略硬性逐出阈值设置&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>experimental-bootstrap-kubeconfig&lt;/td>
&lt;td>-&lt;/td>
&lt;td>kubelet&lt;/td>
&lt;td>Use &amp;ndash;bootstrap-kubeconfig&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>experimental-check-node-capabilities-before-mount&lt;/td>
&lt;td>-&lt;/td>
&lt;td>kubelet&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>experimental-kernel-memcg-notification&lt;/td>
&lt;td>-&lt;/td>
&lt;td>kubelet&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>experimental-mounter-path&lt;/td>
&lt;td>-&lt;/td>
&lt;td>kubelet&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>global-housekeeping-interval&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>image-pull-progress-deadline&lt;/td>
&lt;td>-&lt;/td>
&lt;td>dockershim&lt;/td>
&lt;td>已弃用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>keep-terminated-pod-volumes&lt;/td>
&lt;td>-&lt;/td>
&lt;td>kubelet&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>log-backtrace-at&lt;/td>
&lt;td>0&lt;/td>
&lt;td>klog&lt;/td>
&lt;td>已弃用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>log-dir&lt;/td>
&lt;td>-&lt;/td>
&lt;td>klog&lt;/td>
&lt;td>已弃用，如果此值为非空，则在所指定的目录中写入日志文件&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>log-file&lt;/td>
&lt;td>-&lt;/td>
&lt;td>klog&lt;/td>
&lt;td>已弃用，如果此值非空，使用所给字符串作为日志文件名&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>log-file-max-size&lt;/td>
&lt;td>1800&lt;/td>
&lt;td>klog&lt;/td>
&lt;td>已弃用，设置日志文件的最大值。单位为兆字节（M）。如果值为 0，则表示文件大小无限制&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>log-flush-frequency&lt;/td>
&lt;td>5s&lt;/td>
&lt;td>klog&lt;/td>
&lt;td>两次日志刷新之间的最大秒数&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>logtostderr&lt;/td>
&lt;td>true&lt;/td>
&lt;td>klog&lt;/td>
&lt;td>日志输出到 stderr 而不是文件&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>machine-id-file&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>/etc/machine-id,/var/lib/dbus/machine-id&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>master-service-namespace&lt;/td>
&lt;td>-&lt;/td>
&lt;td>kubelet&lt;/td>
&lt;td>已弃用，kubelet 向 Pod 注入 Kubernetes 主控服务信息时使用的命名空间&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>maximum-dead-containers&lt;/td>
&lt;td>-1&lt;/td>
&lt;td>kubelet&lt;/td>
&lt;td>已弃用，使用 eviction 代替&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>maximum-dead-containers-per-container&lt;/td>
&lt;td>1&lt;/td>
&lt;td>kubelet&lt;/td>
&lt;td>已弃用，使用 eviction 代替&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>minimum-container-ttl-duration&lt;/td>
&lt;td>-&lt;/td>
&lt;td>kubelet&lt;/td>
&lt;td>已弃用，使用 eviction 代替&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>network-plugin&lt;/td>
&lt;td>-&lt;/td>
&lt;td>dockershim&lt;/td>
&lt;td>已弃用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>network-plugin-mtu&lt;/td>
&lt;td>-&lt;/td>
&lt;td>dockershim&lt;/td>
&lt;td>已弃用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>non-masquerade-cidr&lt;/td>
&lt;td>-&lt;/td>
&lt;td>kubelet&lt;/td>
&lt;td>已弃用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>one-output&lt;/td>
&lt;td>-&lt;/td>
&lt;td>kubelet&lt;/td>
&lt;td>已弃用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>port&lt;/td>
&lt;td>10250&lt;/td>
&lt;td>kubelet&lt;/td>
&lt;td>已弃用，kubelet 服务监听的本机端口号&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>really-crash-for-testing&lt;/td>
&lt;td>-&lt;/td>
&lt;td>kubelet&lt;/td>
&lt;td>已弃用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>register-schedulable&lt;/td>
&lt;td>true&lt;/td>
&lt;td>kubelet&lt;/td>
&lt;td>已弃用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>seccomp-profile-root&lt;/td>
&lt;td>-&lt;/td>
&lt;td>kubelet&lt;/td>
&lt;td>已弃用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>skip-headers&lt;/td>
&lt;td>-&lt;/td>
&lt;td>klog&lt;/td>
&lt;td>已弃用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>skip-log-headers&lt;/td>
&lt;td>-&lt;/td>
&lt;td>klog&lt;/td>
&lt;td>已弃用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>stderrthreshold&lt;/td>
&lt;td>-&lt;/td>
&lt;td>klog&lt;/td>
&lt;td>已弃用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>storage-driver-buffer-duration&lt;/td>
&lt;td>&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>storage-driver-db&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>storage-driver-host&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>storage-driver-password&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>storage-driver-secure&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>storage-driver-table&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>storage-driver-user&lt;/td>
&lt;td>-&lt;/td>
&lt;td>cadvisor&lt;/td>
&lt;td>已废弃&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>v&lt;/td>
&lt;td>-&lt;/td>
&lt;td>klog&lt;/td>
&lt;td>日志级别详细程度的数值&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;ul>
&lt;li>组建内置参数&lt;/li>
&lt;/ul>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>名称&lt;/th>
&lt;th>默认值&lt;/th>
&lt;th>KubeletConfiguration&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>address&lt;/td>
&lt;td>0.0.0.0&lt;/td>
&lt;td>address&lt;/td>
&lt;td>kubelet api 服务监听的地址&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>allowed-unsafe-sysctls&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;td>允许不安全的 sysctl 设置&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>anonymous-auth&lt;/td>
&lt;td>true&lt;/td>
&lt;td>TODO;&lt;/td>
&lt;td>是否可接受匿名请求，用户名为 system:anonymous，用户组为 system:unauthenticated&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>authentication-token-webhook&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>authentication.webhook.enabled&lt;/td>
&lt;td>TODO；使用 TokenReview API 对持有者令牌进行身份认证&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>authentication-token-webhook-cache-ttl&lt;/td>
&lt;td>2m0s&lt;/td>
&lt;td>authentication.webhook.cacheTTL&lt;/td>
&lt;td>对 Webhook 令牌认证组件所返回的响应的缓存时间&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>authorization-mode&lt;/td>
&lt;td>AlwaysAllow 或 Webhook&lt;/td>
&lt;td>authorization.mode&lt;/td>
&lt;td>服务端鉴权模式，可选值：AlwaysAllow、Webhook，当设置 &amp;ndash;config 时默认值为 Webhook&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>authorization-webhook-cache-authorized-ttl&lt;/td>
&lt;td>5m0s&lt;/td>
&lt;td>authorization.webhook.cacheAuthorizedTTL&lt;/td>
&lt;td>对 Webhook 认证组件所返回的 “Authorized（已授权）” 应答的缓存时间&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>authorization-webhook-cache-unauthorized-ttl&lt;/td>
&lt;td>30s&lt;/td>
&lt;td>authorization.webhook.cacheUnauthorizedTTL&lt;/td>
&lt;td>对 Webhook 认证组件所返回的 “Unauthorized（未授权）” 应答的缓存时间&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>bootstrap-kubeconfig&lt;/td>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;td>包含 apiserver 上配置的 known_tokens.csv 里面 token，用于获取 kubelet-client-current.pem 证书&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>cert-dir&lt;/td>
&lt;td>/var/lib/kubelet/pki&lt;/td>
&lt;td>-&lt;/td>
&lt;td>kubelet.crt 与 kubelet.key 证书路径, 优先级低于 tls-cert-file 与 tls-private-key-file&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>cgroup-driver&lt;/td>
&lt;td>cgroupfs&lt;/td>
&lt;td>cgroupDriver&lt;/td>
&lt;td>用来操作本机 cgroup 时使用的驱动程序。支持的选项包括 cgroupfs 和 systemd&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>cgroup-root&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>为 Pod 设置根 cgroup 默认将使用容器运行时的默认设置&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>cgroups-per-qos&lt;/td>
&lt;td>true&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>启用创建 QoS cgroup 层次结构。此值为 true 时 kubelet 为 QoS 和 Pod 创建顶级的 cgroup&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>client-ca-file&lt;/td>
&lt;td>-&lt;/td>
&lt;td>authentication.x509.clientCAFile&lt;/td>
&lt;td>TODO; 检查客户端证书，如 kube-apiserver 请求 kubelet ??&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>cluster-dns&lt;/td>
&lt;td>-&lt;/td>
&lt;td>clusterDNS&lt;/td>
&lt;td>用于 Pod 中设置了 &amp;ldquo;dnsPolicy=ClusterFirst&amp;rdquo; 时为容器提供 DNS 服务&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>cluster-domain&lt;/td>
&lt;td>cluster.local&lt;/td>
&lt;td>clusterDomain&lt;/td>
&lt;td>集群域名，如果设置了此值，kubelet 除了将主机的搜索域配置到所有容器之外，还会为其配置这里指定的域名&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>config&lt;/td>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;td>指向 KubeletConfiguration 配置文件，命令行参数会覆盖此文件中的配置&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>container-log-max-files&lt;/td>
&lt;td>5&lt;/td>
&lt;td>containerLogMaxFiles&lt;/td>
&lt;td>设置容器的日志文件个数上限，必须不小于2且只能与 &amp;ndash;container-runtime=remote 一起使用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>container-log-max-size&lt;/td>
&lt;td>10Mi&lt;/td>
&lt;td>containerLogMaxSize&lt;/td>
&lt;td>设置容器日志文件在轮换生成新文件时之前的最大值&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>container-runtime-endpoint&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>-&lt;/td>
&lt;td>如：unix:///var/run/containerd/containerd.sock&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>contention-profiling&lt;/td>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO; 启用锁竞争分析，前提是开启 pprof&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>cpu-cfs-quota&lt;/td>
&lt;td>true&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>TODO; 为设置了 CPU 限制的容器启用 CPU CFS 配额保障&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>cpu-cfs-quota-period&lt;/td>
&lt;td>100ms&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>TODO; 设置 CPU CFS 配额周期 cpu.cfs_period_us。默认使用 Linux 内核所设置的默认值&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>cpu-manager-policy&lt;/td>
&lt;td>none&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>TODO; 要使用的 CPU 管理器策略。可选值包括：none 和 static&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>cpu-manager-policy-options&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>TODO; 一组用于微调其行为的 key=value CPU 管理器策略选项&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>cpu-manager-reconcile-period&lt;/td>
&lt;td>10s&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>TODO; 设置 CPU 管理器的调和时间&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>enable-controller-attach-detach&lt;/td>
&lt;td>true&lt;/td>
&lt;td>TODO ｜ 启用 Attach/Detach 控制器来挂接和摘除调度到该节点的卷，同时禁用 kubelet 执行挂接和摘除操作&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>enable-debugging-handlers&lt;/td>
&lt;td>true&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>启用服务器上用于日志收集和在本地运行容器和命令的端点&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>enable-server&lt;/td>
&lt;td>true&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>启用 kubelet 服务器&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>enforce-node-allocatable&lt;/td>
&lt;td>pods&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>用逗号分隔的列表，包含由 kubelet 强制执行的节点可分配资源级别&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>event-burst&lt;/td>
&lt;td>10&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>事件记录的个数的突发峰值上限&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>event-qps&lt;/td>
&lt;td>5&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>设置大于 0 的值表示限制每秒可生成的事件数量。设置为 0 表示不限制&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>eviction-hard&lt;/td>
&lt;td>imagefs.available&amp;lt;15%,memory.available&amp;lt;100Mi,nodefs.available&amp;lt;10%&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>触发 Pod 驱逐操作的一组硬性门限&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>eviction-max-pod-grace-period&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>响应满足软性驱逐阈值（Soft Eviction Threshold）而终止 Pod 时使用的最长宽限期（以秒为单位&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>eviction-minimum-reclaim&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>当某资源压力过大时，kubelet 将执行 Pod 驱逐操作&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>eviction-pressure-transition-period&lt;/td>
&lt;td>5m0s&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>在驱逐压力状况解除之前的最长等待时间&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>eviction-soft&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>设置一组驱逐阈值（例如：memory.available&amp;lt;1.5Gi）。 如果在相应的宽限期内达到该阈值，则会触发 Pod 驱逐操作&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>eviction-soft-grace-period&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>设置一组驱逐宽限期（例如，memory.available=1m30s），对应于触发软性 Pod 驱逐操作之前软性驱逐阈值所需持续的时间长短&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>exit-on-lock-contention&lt;/td>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;td>设置为 true 表示当发生锁文件竞争时 kubelet 可以退出&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>experimental-logging-sanitization&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>对一些日志敏感字段做特殊处理&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>fail-swap-on&lt;/td>
&lt;td>true&lt;/td>
&lt;td>failSwapOn&lt;/td>
&lt;td>设置为 true 表示如果主机启用了交换分区，kubelet 将直接失败&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>file-check-frequency&lt;/td>
&lt;td>20s&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>检查配置文件中新数据的时间间隔&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>hairpin-mode&lt;/td>
&lt;td>promiscuous-bridge&lt;/td>
&lt;td>hairpinMode&lt;/td>
&lt;td>设置 kubelet 执行 hairpin 网络地址转译的方式，该模式允许后端端点对其自身服务的访问能够再次经由负载均衡转发回自身，可选项包括 promiscuous-bridge、hairpin-veth 和 none&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>healthz-bind-address&lt;/td>
&lt;td>127.0.0.1&lt;/td>
&lt;td>healthzBindAddress&lt;/td>
&lt;td>用于运行 healthz 服务器的 IP 地址&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>healthz-port&lt;/td>
&lt;td>10248&lt;/td>
&lt;td>healthzPort&lt;/td>
&lt;td>本地 healthz 端点使用的端口（设置为 0 表示禁用）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>hostname-override&lt;/td>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;td>将使用此字符串而不是实际的主机名作为节点标识&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>housekeeping-interval&lt;/td>
&lt;td>10s&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>TODO&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>http-check-frequency&lt;/td>
&lt;td>20s&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>HTTP 服务以获取新数据的时间间隔&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>image-credential-provider-bin-dir&lt;/td>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO; 指向凭据提供组件可执行文件所在目录的路径&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>image-credential-provider-config&lt;/td>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO; 指向凭据提供插件配置文件所在目录的路径&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>image-gc-high-threshold&lt;/td>
&lt;td>85&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>镜像垃圾回收上限。磁盘使用空间达到该百分比时，镜像垃圾回收将持续工作。 值必须在 [0，100] 范围内。要禁用镜像垃圾回收，请设置为 100&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>image-gc-low-threshold&lt;/td>
&lt;td>80&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>镜像垃圾回收下限。磁盘使用空间在达到该百分比之前，镜像垃圾回收操作不会运行。 值必须在 [0，100] 范围内，并且不得大于 high-threshold的值&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>image-service-endpoint&lt;/td>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;td>远程镜像服务的端点，未设置则同 container-runtime-endpoint&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>iptables-drop-bit&lt;/td>
&lt;td>15&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>标记数据包将被丢弃的 fwmark 位设置。必须在 [0，31] 范围内&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>iptables-masquerade-bit&lt;/td>
&lt;td>14&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>标记数据包将进行 SNAT 的 fwmark 空间位设置。必须在 [0，31] 范围内&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>kernel-memcg-notification&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>若启用，则 kubelet 将与内核中的 memcg 通知机制集成，不再使用轮询的方式来判定 是否 Pod 达到内存驱逐阈值&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>kube-api-burst&lt;/td>
&lt;td>10&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>每秒发送到 apiserver 的突发请求数量上限&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>kube-api-content-type&lt;/td>
&lt;td>application/vnd.kubernetes.protobuf&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>发送到 apiserver 的请求的内容类型&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>kube-api-qps&lt;/td>
&lt;td>5&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>与 apiserver 通信的每秒查询个数QPS，此值必须&amp;gt;=0，如果为0，则使用默认5。不包含事件和节点心跳 api，它们的速率限制是由一组不同的标志所控制&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>kube-reserved&lt;/td>
&lt;td>-&lt;/td>
&lt;td>kubeReserved&lt;/td>
&lt;td>系统预留的资源配置，以一组 &amp;lt;资源名称&amp;gt;=&amp;lt;资源数量&amp;gt; 格式表示，支持：cpu、memory、ephemeral-storage&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>kube-reserved-cgroup&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>给出某个顶层 cgroup 绝对名称，该 cgroup 用于管理通过标志 &amp;ndash;kube-reserved 为 kubernetes 组件所预留的计算资源&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>kubeconfig&lt;/td>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;td>指定如何连接到 API 服务器&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>kubelet-cgroups&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>用于创建和运行 kubelet 的 cgroup 的绝对名称&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>lock-file&lt;/td>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;td>kubelet 使用的锁文件的路径&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>log-json-info-buffer-size&lt;/td>
&lt;td>0&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>实验性特性&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>log-json-split-stream&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>实验性特性&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>logging-format&lt;/td>
&lt;td>text&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>设置日志文件格式。可以设置的格式有：&amp;ldquo;text&amp;rdquo;、&amp;ldquo;json&amp;rdquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>make-iptables-util-chains&lt;/td>
&lt;td>true&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>设置为 true 表示 kubelet 将确保 iptables 规则在主机上存在&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>manifest-url&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>用于访问要运行的其他 Pod 规范的 URL&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>manifest-url-header&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>请求 manifest-url 自定义的头&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>max-open-files&lt;/td>
&lt;td>1000000&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>kubelet 进程可以打开的最大文件数量&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>max-pods&lt;/td>
&lt;td>110&lt;/td>
&lt;td>maxPods&lt;/td>
&lt;td>此 kubelet 能运行的 Pod 最大数量&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>memory-manager-policy&lt;/td>
&lt;td>None&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>内存管理器策略使用。可选值：&amp;lsquo;None&amp;rsquo;、&amp;lsquo;Static&amp;rsquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>minimum-image-ttl-duration&lt;/td>
&lt;td>2m0s&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>已结束的容器在被垃圾回收清理之前的最少存活时间。 例如：&amp;lsquo;300ms&amp;rsquo;、&amp;rsquo;10s&amp;rsquo; 或者 &amp;lsquo;2h45m&amp;rsquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>node-ip&lt;/td>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;td>节点的 IP 地址&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>node-labels&lt;/td>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;td>kubelet 在集群中注册本节点时设置的标签&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>node-status-max-images&lt;/td>
&lt;td>50&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>在 node.status.images 中可以报告的最大镜像数量。如果指定为 -1，则不设上限&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>node-status-update-frequency&lt;/td>
&lt;td>10s&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>指定 kubelet 向主控节点汇报节点状态的时间间隔。注意：更改此常量时请务必谨慎， 它必须与节点控制器中的 nodeMonitorGracePeriod 一起使用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>oom-score-adj&lt;/td>
&lt;td>-999&lt;/td>
&lt;td>oomScoreAdj&lt;/td>
&lt;td>kubelet 进程的 oom-score-adj 参数值。有效范围为 [-1000，1000]&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>pod-cidr&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>用于给 Pod 分配 IP 地址的 CIDR 地址池，仅在独立运行模式下使用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>pod-infra-container-image&lt;/td>
&lt;td>k8s.gcr.io/pause:3.5&lt;/td>
&lt;td>-&lt;/td>
&lt;td>所指定的镜像不会被镜像垃圾收集器删除，依赖CRI&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>pod-manifest-path&lt;/td>
&lt;td>-&lt;/td>
&lt;td>staticPodPath&lt;/td>
&lt;td>设置包含要运行的静态 Pod 的文件的路径&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>pod-max-pids&lt;/td>
&lt;td>-1&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>设置每个 Pod 中的最大进程数目。如果为 -1，则 kubelet 使用节点可分配的 PID 容量作为默认值&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>pods-per-core&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>在每个处理器核上可运行的 Pod 数量&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>protect-kernel-defaults&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>TODO&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>provider-id&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>设置主机数据库中用来标识节点的唯一标识&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>qos-reserved&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>TODO&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>read-only-port&lt;/td>
&lt;td>10255&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>kubelet 可以在没有身份验证/鉴权的情况下提供只读服务的端口（设置为 0 表示禁用）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>register-node&lt;/td>
&lt;td>true&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>向 API 服务器注册节点&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>register-with-taints&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>设置本节点的污点标记，格式为 &lt;key>=&lt;value>:&lt;effect>， 以逗号分隔&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>registry-burst&lt;/td>
&lt;td>10&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>设置突发性镜像拉取的个数上限&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>registry-qps&lt;/td>
&lt;td>5&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>如此值大于 0，可用来限制镜像仓库的 QPS 上限。设置为 0，表示不受限制&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>reserved-cpus&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>为系统和 Kubernetes 保留使用的 CPU，优先级高于 system-reserved 和 &amp;ndash;kube-reskube-reserved&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>reserved-memory&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>TODO; 以逗号分隔的 NUMA 节点内存预留列表&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>resolv-conf&lt;/td>
&lt;td>/etc/resolv.conf&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>名字解析服务的配置文件名，用作容器 DNS 解析配置的基础&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>root-dir&lt;/td>
&lt;td>/var/lib/kubelet&lt;/td>
&lt;td>-&lt;/td>
&lt;td>设置用于管理 kubelet 文件的根目录&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>rotate-certificates&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>当客户端证书即将过期时 kubelet 自动从 kube-apiserver 请求新的证书进行轮换&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>rotate-server-certificates&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>当 kubelet 的服务证书即将过期时自动从 kube-apiserver 请求新的证书进行轮换&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>runonce&lt;/td>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;td>表示从本地清单或远程 URL 创建完 Pod 后立即退出 kubelet 进程&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>runtime-cgroups&lt;/td>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO; 设置用于创建和运行容器运行时的 cgroup 的绝对名称&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>runtime-request-timeout&lt;/td>
&lt;td>2m0s&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>设置除了长时间运行的请求（包括 pull、logs、exec 和 attach 等操作）之外的其他运行时请求的超时时间&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>seccomp-default&lt;/td>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO; 启用 RuntimeDefault 作为所有工作负载的默认 seccomp 配置文件&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>serialize-image-pulls&lt;/td>
&lt;td>true&lt;/td>
&lt;td>serializeImagePulls&lt;/td>
&lt;td>逐一拉取镜像&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>streaming-connection-idle-timeout&lt;/td>
&lt;td>4h0m0s&lt;/td>
&lt;td>TODO; 设置流连接在自动关闭之前可以空闲的最长时间。0 表示没有超时限制，与 kubelet 服务器的所有连接最长持续时间为 4 小时&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>sync-frequency&lt;/td>
&lt;td>1m0s&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>在运行中的容器与其配置之间执行同步操作的最长时间间隔&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>system-cgroups&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>TODO&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>system-reserved&lt;/td>
&lt;td>-&lt;/td>
&lt;td>systemReserved&lt;/td>
&lt;td>系统预留的资源配置，以一组 资源名称=资源数量 的格式表示&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>system-reserved-cgroup&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>TODO; 此标志给出一个顶层 cgroup 绝对名称，该 cgroup 用于管理非 kubernetes 组件&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tls-cert-file&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>用于 HTTPS 认证，如未提供，则 kubelet 生成自签名证书和密钥，并将其保存到通过 &amp;ndash;cert-dir 指定的目录&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tls-cipher-suites&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>服务器端加密算法列表，以逗号分隔&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tls-min-version&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>设置支持的最小 TLS 版本号，可选的版本号包括：VersionTLS10、 VersionTLS11、VersionTLS12 和 VersionTLS13&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tls-private-key-file&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>同上&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>topology-manager-policy&lt;/td>
&lt;td>none&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>设置拓扑管理策略（Topology Manager policy）。可选值包括：none、 best-effort、restricted 和 single-numa-node&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>topology-manager-scope&lt;/td>
&lt;td>container&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>TODO; 拓扑提示信息使用范围&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>volume-plugin-dir&lt;/td>
&lt;td>-&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>用来搜索第三方存储卷插件的目录&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>volume-stats-agg-period&lt;/td>
&lt;td>1m0s&lt;/td>
&lt;td>TODO&lt;/td>
&lt;td>指定 kubelet 计算和缓存所有 Pod 和卷的磁盘用量总值的时间间隔。要禁用磁盘用量计算， 请设置为 0&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="数据结构">数据结构&lt;/h2>
&lt;h3 id="kubeletconfiguration">KubeletConfiguration&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-golang" data-lang="golang">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// KubeletConfiguration contains the configuration for the Kubelet
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">KubeletConfiguration&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">metav1&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">TypeMeta&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// enableServer enables Kubelet&amp;#39;s secured server.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Note: Kubelet&amp;#39;s insecure port is controlled by the readOnlyPort option.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">EnableServer&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// staticPodPath is the path to the directory containing local (static) pods to
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// run, or the path to a single static pod file.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">StaticPodPath&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// syncFrequency is the max period between synchronizing running
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// containers and config
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">SyncFrequency&lt;/span> &lt;span style="color:#000">metav1&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// fileCheckFrequency is the duration between checking config files for
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// new data
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">FileCheckFrequency&lt;/span> &lt;span style="color:#000">metav1&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// httpCheckFrequency is the duration between checking http for new data
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">HTTPCheckFrequency&lt;/span> &lt;span style="color:#000">metav1&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// staticPodURL is the URL for accessing static pods to run
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">StaticPodURL&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// staticPodURLHeader is a map of slices with HTTP headers to use when accessing the podURL
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">StaticPodURLHeader&lt;/span> &lt;span style="color:#204a87;font-weight:bold">map&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>&lt;span style="color:#000;font-weight:bold">][]&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// address is the IP address for the Kubelet to serve on (set to 0.0.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// for all interfaces)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">Address&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// port is the port for the Kubelet to serve on.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">Port&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// readOnlyPort is the read-only port for the Kubelet to serve on with
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// no authentication/authorization (set to 0 to disable)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ReadOnlyPort&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// volumePluginDir is the full path of the directory in which to search
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// for additional third party volume plugins.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">VolumePluginDir&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// providerID, if set, sets the unique id of the instance that an external provider (i.e. cloudprovider)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// can use to identify a specific node
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ProviderID&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// tlsCertFile is the file containing x509 Certificate for HTTPS. (CA cert,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// if any, concatenated after server cert). If tlsCertFile and
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// tlsPrivateKeyFile are not provided, a self-signed certificate
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// and key are generated for the public address and saved to the directory
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// passed to the Kubelet&amp;#39;s --cert-dir flag.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">TLSCertFile&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// tlsPrivateKeyFile is the file containing x509 private key matching tlsCertFile
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">TLSPrivateKeyFile&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// TLSCipherSuites is the list of allowed cipher suites for the server.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Values are from tls package constants (https://golang.org/pkg/crypto/tls/#pkg-constants).
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">TLSCipherSuites&lt;/span> &lt;span style="color:#000;font-weight:bold">[]&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// TLSMinVersion is the minimum TLS version supported.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Values are from tls package constants (https://golang.org/pkg/crypto/tls/#pkg-constants).
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">TLSMinVersion&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// rotateCertificates enables client certificate rotation. The Kubelet will request a
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// new certificate from the certificates.k8s.io API. This requires an approver to approve the
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// certificate signing requests.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">RotateCertificates&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// serverTLSBootstrap enables server certificate bootstrap. Instead of self
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// signing a serving certificate, the Kubelet will request a certificate from
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// the certificates.k8s.io API. This requires an approver to approve the
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// certificate signing requests. The RotateKubeletServerCertificate feature
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// must be enabled.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ServerTLSBootstrap&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// authentication specifies how requests to the Kubelet&amp;#39;s server are authenticated
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">Authentication&lt;/span> &lt;span style="color:#000">KubeletAuthentication&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// authorization specifies how requests to the Kubelet&amp;#39;s server are authorized
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">Authorization&lt;/span> &lt;span style="color:#000">KubeletAuthorization&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// registryPullQPS is the limit of registry pulls per second.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Set to 0 for no limit.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">RegistryPullQPS&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// registryBurst is the maximum size of bursty pulls, temporarily allows
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// pulls to burst to this number, while still not exceeding registryPullQPS.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Only used if registryPullQPS &amp;gt; 0.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">RegistryBurst&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// eventRecordQPS is the maximum event creations per second. If 0, there
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// is no limit enforced.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">EventRecordQPS&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// eventBurst is the maximum size of a burst of event creations, temporarily
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// allows event creations to burst to this number, while still not exceeding
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// eventRecordQPS. Only used if eventRecordQPS &amp;gt; 0.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">EventBurst&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// enableDebuggingHandlers enables server endpoints for log collection
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// and local running of containers and commands
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">EnableDebuggingHandlers&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// enableContentionProfiling enables lock contention profiling, if enableDebuggingHandlers is true.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">EnableContentionProfiling&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// healthzPort is the port of the localhost healthz endpoint (set to 0 to disable)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">HealthzPort&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// healthzBindAddress is the IP address for the healthz server to serve on
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">HealthzBindAddress&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// oomScoreAdj is The oom-score-adj value for kubelet process. Values
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// must be within the range [-1000, 1000].
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">OOMScoreAdj&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// clusterDomain is the DNS domain for this cluster. If set, kubelet will
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// configure all containers to search this domain in addition to the
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// host&amp;#39;s search domains.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ClusterDomain&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// clusterDNS is a list of IP addresses for a cluster DNS server. If set,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// kubelet will configure all containers to use this for DNS resolution
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// instead of the host&amp;#39;s DNS servers.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ClusterDNS&lt;/span> &lt;span style="color:#000;font-weight:bold">[]&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// streamingConnectionIdleTimeout is the maximum time a streaming connection
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// can be idle before the connection is automatically closed.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">StreamingConnectionIdleTimeout&lt;/span> &lt;span style="color:#000">metav1&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// nodeStatusUpdateFrequency is the frequency that kubelet computes node
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// status. If node lease feature is not enabled, it is also the frequency that
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// kubelet posts node status to master. In that case, be cautious when
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// changing the constant, it must work with nodeMonitorGracePeriod in nodecontroller.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">NodeStatusUpdateFrequency&lt;/span> &lt;span style="color:#000">metav1&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// nodeStatusReportFrequency is the frequency that kubelet posts node
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// status to master if node status does not change. Kubelet will ignore this
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// frequency and post node status immediately if any change is detected. It is
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// only used when node lease feature is enabled.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">NodeStatusReportFrequency&lt;/span> &lt;span style="color:#000">metav1&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// nodeLeaseDurationSeconds is the duration the Kubelet will set on its corresponding Lease.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">NodeLeaseDurationSeconds&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// imageMinimumGCAge is the minimum age for an unused image before it is
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// garbage collected.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ImageMinimumGCAge&lt;/span> &lt;span style="color:#000">metav1&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// imageGCHighThresholdPercent is the percent of disk usage after which
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// image garbage collection is always run. The percent is calculated as
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// this field value out of 100.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ImageGCHighThresholdPercent&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// imageGCLowThresholdPercent is the percent of disk usage before which
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// image garbage collection is never run. Lowest disk usage to garbage
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// collect to. The percent is calculated as this field value out of 100.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ImageGCLowThresholdPercent&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// How frequently to calculate and cache volume disk usage for all pods
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">VolumeStatsAggPeriod&lt;/span> &lt;span style="color:#000">metav1&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// KubeletCgroups is the absolute name of cgroups to isolate the kubelet in
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">KubeletCgroups&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// SystemCgroups is absolute name of cgroups in which to place
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// all non-kernel processes that are not already in a container. Empty
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// for no container. Rolling back the flag requires a reboot.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">SystemCgroups&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// CgroupRoot is the root cgroup to use for pods.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// If CgroupsPerQOS is enabled, this is the root of the QoS cgroup hierarchy.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">CgroupRoot&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// Enable QoS based Cgroup hierarchy: top level cgroups for QoS Classes
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// And all Burstable and BestEffort pods are brought up under their
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// specific top level QoS cgroup.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">CgroupsPerQOS&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// driver that the kubelet uses to manipulate cgroups on the host (cgroupfs or systemd)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">CgroupDriver&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// CPUManagerPolicy is the name of the policy to use.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Requires the CPUManager feature gate to be enabled.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">CPUManagerPolicy&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// CPUManagerPolicyOptions is a set of key=value which allows to set extra options
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// to fine tune the behaviour of the cpu manager policies.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Requires both the &amp;#34;CPUManager&amp;#34; and &amp;#34;CPUManagerPolicyOptions&amp;#34; feature gates to be enabled.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">CPUManagerPolicyOptions&lt;/span> &lt;span style="color:#204a87;font-weight:bold">map&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// CPU Manager reconciliation period.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Requires the CPUManager feature gate to be enabled.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">CPUManagerReconcilePeriod&lt;/span> &lt;span style="color:#000">metav1&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// MemoryManagerPolicy is the name of the policy to use.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Requires the MemoryManager feature gate to be enabled.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">MemoryManagerPolicy&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// TopologyManagerPolicy is the name of the policy to use.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Policies other than &amp;#34;none&amp;#34; require the TopologyManager feature gate to be enabled.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">TopologyManagerPolicy&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// TopologyManagerScope represents the scope of topology hint generation
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// that topology manager requests and hint providers generate.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// &amp;#34;pod&amp;#34; scope requires the TopologyManager feature gate to be enabled.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Default: &amp;#34;container&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// +optional
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">TopologyManagerScope&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// Map of QoS resource reservation percentages (memory only for now).
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Requires the QOSReserved feature gate to be enabled.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">QOSReserved&lt;/span> &lt;span style="color:#204a87;font-weight:bold">map&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// runtimeRequestTimeout is the timeout for all runtime requests except long running
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// requests - pull, logs, exec and attach.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">RuntimeRequestTimeout&lt;/span> &lt;span style="color:#000">metav1&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// hairpinMode specifies how the Kubelet should configure the container
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// bridge for hairpin packets.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Setting this flag allows endpoints in a Service to loadbalance back to
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// themselves if they should try to access their own Service. Values:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// &amp;#34;promiscuous-bridge&amp;#34;: make the container bridge promiscuous.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// &amp;#34;hairpin-veth&amp;#34;: set the hairpin flag on container veth interfaces.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// &amp;#34;none&amp;#34;: do nothing.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Generally, one must set --hairpin-mode=hairpin-veth to achieve hairpin NAT,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// because promiscuous-bridge assumes the existence of a container bridge named cbr0.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">HairpinMode&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// maxPods is the number of pods that can run on this Kubelet.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">MaxPods&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// The CIDR to use for pod IP addresses, only used in standalone mode.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// In cluster mode, this is obtained from the master.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">PodCIDR&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// The maximum number of processes per pod. If -1, the kubelet defaults to the node allocatable pid capacity.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">PodPidsLimit&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int64&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// ResolverConfig is the resolver configuration file used as the basis
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// for the container DNS resolution configuration.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ResolverConfig&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// RunOnce causes the Kubelet to check the API server once for pods,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// run those in addition to the pods specified by static pod files, and exit.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">RunOnce&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// cpuCFSQuota enables CPU CFS quota enforcement for containers that
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// specify CPU limits
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">CPUCFSQuota&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// CPUCFSQuotaPeriod sets the CPU CFS quota period value, cpu.cfs_period_us, defaults to 100ms
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">CPUCFSQuotaPeriod&lt;/span> &lt;span style="color:#000">metav1&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// maxOpenFiles is Number of files that can be opened by Kubelet process.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">MaxOpenFiles&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int64&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// nodeStatusMaxImages caps the number of images reported in Node.Status.Images.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">NodeStatusMaxImages&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// contentType is contentType of requests sent to apiserver.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ContentType&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// kubeAPIQPS is the QPS to use while talking with kubernetes apiserver
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">KubeAPIQPS&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// kubeAPIBurst is the burst to allow while talking with kubernetes
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// apiserver
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">KubeAPIBurst&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// serializeImagePulls when enabled, tells the Kubelet to pull images one at a time.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">SerializeImagePulls&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// Map of signal names to quantities that defines hard eviction thresholds. For example: {&amp;#34;memory.available&amp;#34;: &amp;#34;300Mi&amp;#34;}.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">EvictionHard&lt;/span> &lt;span style="color:#204a87;font-weight:bold">map&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// Map of signal names to quantities that defines soft eviction thresholds. For example: {&amp;#34;memory.available&amp;#34;: &amp;#34;300Mi&amp;#34;}.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">EvictionSoft&lt;/span> &lt;span style="color:#204a87;font-weight:bold">map&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// Map of signal names to quantities that defines grace periods for each soft eviction signal. For example: {&amp;#34;memory.available&amp;#34;: &amp;#34;30s&amp;#34;}.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">EvictionSoftGracePeriod&lt;/span> &lt;span style="color:#204a87;font-weight:bold">map&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// Duration for which the kubelet has to wait before transitioning out of an eviction pressure condition.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">EvictionPressureTransitionPeriod&lt;/span> &lt;span style="color:#000">metav1&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// Maximum allowed grace period (in seconds) to use when terminating pods in response to a soft eviction threshold being met.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">EvictionMaxPodGracePeriod&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// Map of signal names to quantities that defines minimum reclaims, which describe the minimum
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// amount of a given resource the kubelet will reclaim when performing a pod eviction while
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// that resource is under pressure. For example: {&amp;#34;imagefs.available&amp;#34;: &amp;#34;2Gi&amp;#34;}
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">EvictionMinimumReclaim&lt;/span> &lt;span style="color:#204a87;font-weight:bold">map&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// podsPerCore is the maximum number of pods per core. Cannot exceed MaxPods.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// If 0, this field is ignored.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">PodsPerCore&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// enableControllerAttachDetach enables the Attach/Detach controller to
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// manage attachment/detachment of volumes scheduled to this node, and
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// disables kubelet from executing any attach/detach operations
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">EnableControllerAttachDetach&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// protectKernelDefaults, if true, causes the Kubelet to error if kernel
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// flags are not as it expects. Otherwise the Kubelet will attempt to modify
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// kernel flags to match its expectation.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ProtectKernelDefaults&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// If true, Kubelet ensures a set of iptables rules are present on host.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// These rules will serve as utility for various components, e.g. kube-proxy.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// The rules will be created based on IPTablesMasqueradeBit and IPTablesDropBit.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">MakeIPTablesUtilChains&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// iptablesMasqueradeBit is the bit of the iptables fwmark space to mark for SNAT
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Values must be within the range [0, 31]. Must be different from other mark bits.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Warning: Please match the value of the corresponding parameter in kube-proxy.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// TODO: clean up IPTablesMasqueradeBit in kube-proxy
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">IPTablesMasqueradeBit&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// iptablesDropBit is the bit of the iptables fwmark space to mark for dropping packets.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Values must be within the range [0, 31]. Must be different from other mark bits.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">IPTablesDropBit&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// featureGates is a map of feature names to bools that enable or disable alpha/experimental
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// features. This field modifies piecemeal the built-in default values from
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// &amp;#34;k8s.io/kubernetes/pkg/features/kube_features.go&amp;#34;.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">FeatureGates&lt;/span> &lt;span style="color:#204a87;font-weight:bold">map&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>&lt;span style="color:#204a87;font-weight:bold">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// Tells the Kubelet to fail to start if swap is enabled on the node.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">FailSwapOn&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// memorySwap configures swap memory available to container workloads.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// +featureGate=NodeSwap
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// +optional
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">MemorySwap&lt;/span> &lt;span style="color:#000">MemorySwapConfiguration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// A quantity defines the maximum size of the container log file before it is rotated. For example: &amp;#34;5Mi&amp;#34; or &amp;#34;256Ki&amp;#34;.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ContainerLogMaxSize&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// Maximum number of container log files that can be present for a container.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ContainerLogMaxFiles&lt;/span> &lt;span style="color:#204a87;font-weight:bold">int32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// ConfigMapAndSecretChangeDetectionStrategy is a mode in which config map and secret managers are running.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ConfigMapAndSecretChangeDetectionStrategy&lt;/span> &lt;span style="color:#000">ResourceChangeDetectionStrategy&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// A comma separated whitelist of unsafe sysctls or sysctl patterns (ending in *).
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Unsafe sysctl groups are kernel.shm*, kernel.msg*, kernel.sem, fs.mqueue.*, and net.*.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// These sysctls are namespaced but not allowed by default. For example: &amp;#34;kernel.msg*,net.ipv4.route.min_pmtu&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// +optional
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">AllowedUnsafeSysctls&lt;/span> &lt;span style="color:#000;font-weight:bold">[]&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// kernelMemcgNotification if enabled, the kubelet will integrate with the kernel memcg
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// notification to determine if memory eviction thresholds are crossed rather than polling.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">KernelMemcgNotification&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">/* the following fields are meant for Node Allocatable */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// A set of ResourceName=ResourceQuantity (e.g. cpu=200m,memory=150G,pid=100) pairs
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// that describe resources reserved for non-kubernetes components.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Currently only cpu and memory are supported.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// See http://kubernetes.io/docs/user-guide/compute-resources for more detail.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">SystemReserved&lt;/span> &lt;span style="color:#204a87;font-weight:bold">map&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// A set of ResourceName=ResourceQuantity (e.g. cpu=200m,memory=150G,pid=100) pairs
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// that describe resources reserved for kubernetes system components.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Currently cpu, memory and local ephemeral storage for root file system are supported.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// See http://kubernetes.io/docs/user-guide/compute-resources for more detail.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">KubeReserved&lt;/span> &lt;span style="color:#204a87;font-weight:bold">map&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// This flag helps kubelet identify absolute name of top level cgroup used to enforce `SystemReserved` compute resource reservation for OS system daemons.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Refer to [Node Allocatable](https://git.k8s.io/community/contributors/design-proposals/node/node-allocatable.md) doc for more information.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">SystemReservedCgroup&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// This flag helps kubelet identify absolute name of top level cgroup used to enforce `KubeReserved` compute resource reservation for Kubernetes node system daemons.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Refer to [Node Allocatable](https://git.k8s.io/community/contributors/design-proposals/node/node-allocatable.md) doc for more information.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">KubeReservedCgroup&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// This flag specifies the various Node Allocatable enforcements that Kubelet needs to perform.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// This flag accepts a list of options. Acceptable options are `pods`, `system-reserved` &amp;amp; `kube-reserved`.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Refer to [Node Allocatable](https://git.k8s.io/community/contributors/design-proposals/node/node-allocatable.md) doc for more information.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">EnforceNodeAllocatable&lt;/span> &lt;span style="color:#000;font-weight:bold">[]&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// This option specifies the cpu list reserved for the host level system threads and kubernetes related threads.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// This provide a &amp;#34;static&amp;#34; CPU list rather than the &amp;#34;dynamic&amp;#34; list by system-reserved and kube-reserved.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// This option overwrites CPUs provided by system-reserved and kube-reserved.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ReservedSystemCPUs&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// The previous version for which you want to show hidden metrics.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Only the previous minor version is meaningful, other values will not be allowed.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// The format is &amp;lt;major&amp;gt;.&amp;lt;minor&amp;gt;, e.g.: &amp;#39;1.16&amp;#39;.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// The purpose of this format is make sure you have the opportunity to notice if the next release hides additional metrics,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// rather than being surprised when they are permanently removed in the release after that.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ShowHiddenMetricsForVersion&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// Logging specifies the options of logging.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Refer [Logs Options](https://github.com/kubernetes/component-base/blob/master/logs/options.go) for more information.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">Logging&lt;/span> &lt;span style="color:#000">componentbaseconfig&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">LoggingConfiguration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// EnableSystemLogHandler enables /logs handler.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">EnableSystemLogHandler&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// ShutdownGracePeriod specifies the total duration that the node should delay the shutdown and total grace period for pod termination during a node shutdown.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Defaults to 0 seconds.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// +featureGate=GracefulNodeShutdown
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// +optional
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ShutdownGracePeriod&lt;/span> &lt;span style="color:#000">metav1&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// ShutdownGracePeriodCriticalPods specifies the duration used to terminate critical pods during a node shutdown. This should be less than ShutdownGracePeriod.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Defaults to 0 seconds.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// For example, if ShutdownGracePeriod=30s, and ShutdownGracePeriodCriticalPods=10s, during a node shutdown the first 20 seconds would be reserved for gracefully terminating normal pods, and the last 10 seconds would be reserved for terminating critical pods.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// +featureGate=GracefulNodeShutdown
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// +optional
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ShutdownGracePeriodCriticalPods&lt;/span> &lt;span style="color:#000">metav1&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// ReservedMemory specifies a comma-separated list of memory reservations for NUMA nodes.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// The parameter makes sense only in the context of the memory manager feature. The memory manager will not allocate reserved memory for container workloads.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// For example, if you have a NUMA0 with 10Gi of memory and the ReservedMemory was specified to reserve 1Gi of memory at NUMA0,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// the memory manager will assume that only 9Gi is available for allocation.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// You can specify a different amount of NUMA node and memory types.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// You can omit this parameter at all, but you should be aware that the amount of reserved memory from all NUMA nodes
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// should be equal to the amount of memory specified by the node allocatable features(https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources/#node-allocatable).
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// If at least one node allocatable parameter has a non-zero value, you will need to specify at least one NUMA node.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Also, avoid specifying:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// 1. Duplicates, the same NUMA node, and memory type, but with a different value.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// 2. zero limits for any memory type.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// 3. NUMAs nodes IDs that do not exist under the machine.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// 4. memory types except for memory and hugepages-&amp;lt;size&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ReservedMemory&lt;/span> &lt;span style="color:#000;font-weight:bold">[]&lt;/span>&lt;span style="color:#000">MemoryReservation&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// EnableProfiling enables /debug/pprof handler.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">EnableProfilingHandler&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// EnableDebugFlagsHandler enables/debug/flags/v handler.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">EnableDebugFlagsHandler&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// SeccompDefault enables the use of `RuntimeDefault` as the default seccomp profile for all workloads.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">SeccompDefault&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// MemoryThrottlingFactor specifies the factor multiplied by the memory limit or node allocatable memory
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// when setting the cgroupv2 memory.high value to enforce MemoryQoS.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Decreasing this factor will set lower high limit for container cgroups and put heavier reclaim pressure
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// while increasing will put less reclaim pressure.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// See http://kep.k8s.io/2570 for more details.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Default: 0.8
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// +featureGate=MemoryQoS
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// +optional
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">MemoryThrottlingFactor&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">*&lt;/span>&lt;span style="color:#204a87;font-weight:bold">float64&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Docs: 参数配置</title><link>https://opsaid.net/docs/cloud-native/kubernetes/node-components/kube-proxy-config/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://opsaid.net/docs/cloud-native/kubernetes/node-components/kube-proxy-config/</guid><description>
&lt;h2 id="简要概述">简要概述&lt;/h2>
&lt;p>主要用于控制 iptables、ipvs 在宿主上的网络流量。&lt;/p>
&lt;h2 id="配置示例">配置示例&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">apiVersion&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">kubeproxy.config.k8s.io/v1alpha1&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">kind&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">KubeProxyConfiguration&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">bindAddress&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.0.0.0&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">bindAddressHardFail&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">false&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">clientConnection&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">acceptContentTypes&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">burst&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">10&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">contentType&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">application/vnd.kubernetes.protobuf&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">kubeconfig&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;/var/lib/kube-proxy/kubeconfig.conf&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">qps&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">5&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">clusterCIDR&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">192.168.201.0&lt;/span>&lt;span style="color:#000">/24&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">configSyncPeriod&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">15m0s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">conntrack&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">maxPerCore&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">32768&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">min&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">131072&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">tcpCloseWaitTimeout&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">1h0m0s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">tcpEstablishedTimeout&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">24h0m0s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">detectLocalMode&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">enableProfiling&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">false&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">healthzBindAddress&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">127.0.0.1&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">10256&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">hostnameOverride&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">iptables&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">masqueradeAll&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">false&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">masqueradeBit&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">14&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">minSyncPeriod&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">1s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">syncPeriod&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">30s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">ipvs&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">excludeCIDRs&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">null&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">minSyncPeriod&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">0s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">scheduler&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">rr&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">strictARP&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">false&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">syncPeriod&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">30s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">tcpFinTimeout&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">0s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">tcpTimeout&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">0s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">udpTimeout&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">0s&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">metricsBindAddress&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">127.0.0.1&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">10249&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">mode&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;ipvs&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">nodePortAddresses&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>- &lt;span style="color:#0000cf;font-weight:bold">192.168.201.0&lt;/span>&lt;span style="color:#000">/24&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">oomScoreAdj&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>-&lt;span style="color:#0000cf;font-weight:bold">999&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">portRange&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">showHiddenMetricsForVersion&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">udpIdleTimeout&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">250ms&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">winkernel&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">enableDSR&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">false&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">networkName&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">sourceVip&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="参数解析">参数解析&lt;/h2>
&lt;p>除命令行参数：&amp;ndash;config, &amp;ndash;write-config-to, and &amp;ndash;cleanup 外，其他均建议通过 KubeProxyConfiguration 配置。&lt;/p>
&lt;ul>
&lt;li>外部组件&lt;/li>
&lt;/ul>
&lt;p>&amp;ndash;boot-id-file
&amp;ndash;log-backtrace-at
&amp;ndash;log-dir
&amp;ndash;log-file
&amp;ndash;log-file-max-size
&amp;ndash;log-flush-frequency
&amp;ndash;logtostderr
&amp;ndash;machine-id-file
&amp;ndash;one-output
&amp;ndash;profiling
&amp;ndash;skip-headers
&amp;ndash;skip-log-headers
&amp;ndash;stderrthreshold&lt;/p>
&lt;ul>
&lt;li>内置组件&lt;/li>
&lt;/ul>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>名称&lt;/th>
&lt;th>KubeProxyConfiguration&lt;/th>
&lt;th>默认值&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>add-dir-header&lt;/td>
&lt;td>-&lt;/td>
&lt;td>false&lt;/td>
&lt;td>同 kubelet&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>alsologtostderr&lt;/td>
&lt;td>-&lt;/td>
&lt;td>false&lt;/td>
&lt;td>同上&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>bind-address&lt;/td>
&lt;td>bindAddress&lt;/td>
&lt;td>0.0.0.0&lt;/td>
&lt;td>服务端监听的地址&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>bind-address-hard-fail&lt;/td>
&lt;td>bindAddressHardFail&lt;/td>
&lt;td>false&lt;/td>
&lt;td>如果无法绑定端口，则将视为致命错误并退出&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>cleanup&lt;/td>
&lt;td>-&lt;/td>
&lt;td>false&lt;/td>
&lt;td>清除 iptabels 与 ipvs 规则后退出&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>cluster-cidr&lt;/td>
&lt;td>clusterCIDR&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>集群中 Pod 的 CIDR 范围，配置后将从该范围之外发送到集群 IP 的流量被伪装，从 Pod 发送到外部负载均衡器 IP 的流量将被重定向到相应的集群 IP&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>config&lt;/td>
&lt;td>-&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>配置 KubeProxyConfiguration 文件的路径&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>config-sync-period&lt;/td>
&lt;td>configSyncPeriod&lt;/td>
&lt;td>15m0s&lt;/td>
&lt;td>TODO; 来自 apiserver 的配置的刷新频率&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>conntrack-max-per-core&lt;/td>
&lt;td>conntrack.maxPerCore&lt;/td>
&lt;td>32768&lt;/td>
&lt;td>每个 CPU 核跟踪的最大 NAT 连接数（0 表示保留当前限制并忽略 conntrack-min 设置）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>conntrack-min&lt;/td>
&lt;td>conntrack.min&lt;/td>
&lt;td>131072&lt;/td>
&lt;td>无论上面设置为多少，要分配的 conntrack 条目的最小数量（将 conntrack-max-per-core 设置为 0 即可保持当前的限制）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>conntrack-tcp-timeout-close-wait&lt;/td>
&lt;td>conntrack.tcpCloseWaitTimeout&lt;/td>
&lt;td>1h0m0s&lt;/td>
&lt;td>TODO; 处于 CLOSE_WAIT 状态的 TCP 连接的 NAT 超时&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>conntrack-tcp-timeout-established&lt;/td>
&lt;td>conntrack.tcpEstablishedTimeout&lt;/td>
&lt;td>24h0m0s&lt;/td>
&lt;td>TODO; 已建立的 TCP 连接的空闲超时（0 保持当前设置）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>detect-local-mode&lt;/td>
&lt;td>detectLocalMode&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>TODO; 用于检测本地流量的模式，可配置：ClusterCIDR、NodeCIDR&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>feature-gates&lt;/td>
&lt;td>-&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>开启的特性&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>healthz-bind-address&lt;/td>
&lt;td>healthzBindAddress&lt;/td>
&lt;td>0.0.0.0:10256&lt;/td>
&lt;td>服务健康状态检查的 IP 地址和端口，设置为空表示禁用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>hostname-override&lt;/td>
&lt;td>hostnameOverride&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>如果非空，将使用此字符串而不是实际的主机名作为标识&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>iptables-masquerade-bit&lt;/td>
&lt;td>iptables.masqueradeBit&lt;/td>
&lt;td>14&lt;/td>
&lt;td>TODO; 在使用纯 iptables 代理时，用来设置 fwmark 空间的 bit，标记需要 SNAT 的数据包。必须在 [0,31] 范围内。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>iptables-min-sync-period&lt;/td>
&lt;td>iptables.minSyncPeriod&lt;/td>
&lt;td>1s&lt;/td>
&lt;td>iptables 规则可以随着端点和服务的更改而刷新的最小间隔&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>iptables-sync-period&lt;/td>
&lt;td>iptables.syncPeriod&lt;/td>
&lt;td>30s&lt;/td>
&lt;td>刷新 iptables 规则的最大间隔（例如 &amp;lsquo;5s&amp;rsquo;、&amp;lsquo;1m&amp;rsquo;、&amp;lsquo;2h22m&amp;rsquo;）。必须大于 0。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ipvs-exclude-cidrs&lt;/td>
&lt;td>ipvs.excludeCIDRs&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>逗号分隔的 CIDR 列表，ipvs 代理在清理 IPVS 规则时不会此列表中的地址范围。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ipvs-min-sync-period&lt;/td>
&lt;td>ipvs.minSyncPeriod&lt;/td>
&lt;td>0s&lt;/td>
&lt;td>ipvs 规则可以随着端点和服务的更改而刷新的最小间隔&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ipvs-scheduler&lt;/td>
&lt;td>ipvs.scheduler&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>ipvs 所选的调度器类型&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ipvs-strict-arp&lt;/td>
&lt;td>ipvs.strictARP&lt;/td>
&lt;td>false&lt;/td>
&lt;td>通过将 arp_ignore 设置为 1 并将 arp_announce 设置为 2 启用严格的 ARP&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ipvs-sync-period&lt;/td>
&lt;td>ipvs.syncPeriod&lt;/td>
&lt;td>30s&lt;/td>
&lt;td>刷新 ipvs 规则的最大间隔（例如 &amp;lsquo;5s&amp;rsquo;、&amp;lsquo;1m&amp;rsquo;、&amp;lsquo;2h22m&amp;rsquo;）。必须大于 0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ipvs-tcp-timeout&lt;/td>
&lt;td>ipvs.tcpTimeout&lt;/td>
&lt;td>0s&lt;/td>
&lt;td>空闲 IPVS TCP 连接的超时时间，0 保持连接&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ipvs-tcpfin-timeout&lt;/td>
&lt;td>ipvs.tcpFinTimeout&lt;/td>
&lt;td>0s&lt;/td>
&lt;td>收到 FIN 数据包后，IPVS TCP 连接的超时，0 保持当前设置不变&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ipvs-udp-timeout&lt;/td>
&lt;td>ipvs.udpTimeout&lt;/td>
&lt;td>0s&lt;/td>
&lt;td>IPVS UDP 数据包的超时，0 保持当前设置不变&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>kube-api-burst&lt;/td>
&lt;td>clientConnection.burst&lt;/td>
&lt;td>10&lt;/td>
&lt;td>与 kubernetes apiserver 通信的突发数量&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>kube-api-content-type&lt;/td>
&lt;td>clientConnection.contentType&lt;/td>
&lt;td>application/vnd.kubernetes.protobuf&lt;/td>
&lt;td>发送到 apiserver 的请求的内容类型&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>kube-api-qps&lt;/td>
&lt;td>clientConnection.qps&lt;/td>
&lt;td>5&lt;/td>
&lt;td>与 kubernetes apiserver 交互时使用的 QPS&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>kubeconfig&lt;/td>
&lt;td>clientConnection.kubeconfig&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>连接 apiserver 的鉴权文件&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>masquerade-all&lt;/td>
&lt;td>iptabels.masqueradeAll&lt;/td>
&lt;td>false&lt;/td>
&lt;td>如果使用纯 iptables 代理，则对通过服务集群 IP 发送的所有流量进行 SNAT（通常不需要）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>master&lt;/td>
&lt;td>-&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>Kubernetes API 服务器的地址，会覆盖 kubeconfig 中的值&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>metrics-bind-address&lt;/td>
&lt;td>metricsBindAddress&lt;/td>
&lt;td>127.0.0.1:10249&lt;/td>
&lt;td>性能数据 /metrics 的地址&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>nodeport-addresses&lt;/td>
&lt;td>nodePortAddresses&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>指定用于 NodePort 服务的地址，一个有效的 CIDR 地址段&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>oom-score-adj&lt;/td>
&lt;td>oomScoreAdj&lt;/td>
&lt;td>-999&lt;/td>
&lt;td>kube-proxy 进程中的 oom-score-adj 值，必须在 [-1000,1000] 范围内&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>profiling&lt;/td>
&lt;td>enableProfiling&lt;/td>
&lt;td>false&lt;/td>
&lt;td>如果为 true，则通过 Web 接口 /debug/pprof 启用性能分析&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>proxy-mode&lt;/td>
&lt;td>mode&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>四种代理模式：userspace, iptables, ipvs, kernelspace，默认为 iptables&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>proxy-port-range&lt;/td>
&lt;td>portRange&lt;/td>
&lt;td>0-0&lt;/td>
&lt;td>用来代理 nodePort 的主机端口范围，格式：beginPort-endPort，默认为 30000 - 32767&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>show-hidden-metrics-for-version&lt;/td>
&lt;td>showHiddenMetricsForVersion&lt;/td>
&lt;td>&amp;quot;&amp;quot;&lt;/td>
&lt;td>要显示隐藏指标的先前版本，仅先前的次要版本有意义，不允许其他值，如：&amp;ldquo;1.16&amp;rdquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>udp-timeout&lt;/td>
&lt;td>udpIdleTimeout&lt;/td>
&lt;td>250ms&lt;/td>
&lt;td>空闲 UDP 连接将保持打开的时长，必须大于 0，仅适用于 proxy-mode=userspace&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>write-config-to&lt;/td>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;td>将默认配置信息写入此文件并退出&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="数据结构">数据结构&lt;/h2>
&lt;h3 id="kubeproxyconfiguration">KubeProxyConfiguration&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-golang" data-lang="golang">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// KubeProxyConfiguration contains everything necessary to configure the
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// Kubernetes proxy server.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span> &lt;span style="color:#000">KubeProxyConfiguration&lt;/span> &lt;span style="color:#204a87;font-weight:bold">struct&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">metav1&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">TypeMeta&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// featureGates is a map of feature names to bools that enable or disable alpha/experimental features.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">FeatureGates&lt;/span> &lt;span style="color:#204a87;font-weight:bold">map&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>&lt;span style="color:#204a87;font-weight:bold">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// bindAddress is the IP address for the proxy server to serve on (set to 0.0.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// for all interfaces)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">BindAddress&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// healthzBindAddress is the IP address and port for the health check server to serve on,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// defaulting to 0.0.0.0:10256
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">HealthzBindAddress&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// metricsBindAddress is the IP address and port for the metrics server to serve on,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// defaulting to 127.0.0.1:10249 (set to 0.0.0.0 for all interfaces)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">MetricsBindAddress&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// BindAddressHardFail, if true, kube-proxy will treat failure to bind to a port as fatal and exit
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">BindAddressHardFail&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// enableProfiling enables profiling via web interface on /debug/pprof handler.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Profiling handlers will be handled by metrics server.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">EnableProfiling&lt;/span> &lt;span style="color:#204a87;font-weight:bold">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// clusterCIDR is the CIDR range of the pods in the cluster. It is used to
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// bridge traffic coming from outside of the cluster. If not provided,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// no off-cluster bridging will be performed.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ClusterCIDR&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// hostnameOverride, if non-empty, will be used as the identity instead of the actual hostname.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">HostnameOverride&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// clientConnection specifies the kubeconfig file and client connection settings for the proxy
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// server to use when communicating with the apiserver.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ClientConnection&lt;/span> &lt;span style="color:#000">componentbaseconfig&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">ClientConnectionConfiguration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// iptables contains iptables-related configuration options.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">IPTables&lt;/span> &lt;span style="color:#000">KubeProxyIPTablesConfiguration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// ipvs contains ipvs-related configuration options.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">IPVS&lt;/span> &lt;span style="color:#000">KubeProxyIPVSConfiguration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// oomScoreAdj is the oom-score-adj value for kube-proxy process. Values must be within
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// the range [-1000, 1000]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">OOMScoreAdj&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">*&lt;/span>&lt;span style="color:#204a87;font-weight:bold">int32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// mode specifies which proxy mode to use.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">Mode&lt;/span> &lt;span style="color:#000">ProxyMode&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// portRange is the range of host ports (beginPort-endPort, inclusive) that may be consumed
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// in order to proxy service traffic. If unspecified (0-0) then ports will be randomly chosen.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">PortRange&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// udpIdleTimeout is how long an idle UDP connection will be kept open (e.g. &amp;#39;250ms&amp;#39;, &amp;#39;2s&amp;#39;).
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Must be greater than 0. Only applicable for proxyMode=userspace.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">UDPIdleTimeout&lt;/span> &lt;span style="color:#000">metav1&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// conntrack contains conntrack-related configuration options.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">Conntrack&lt;/span> &lt;span style="color:#000">KubeProxyConntrackConfiguration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// configSyncPeriod is how often configuration from the apiserver is refreshed. Must be greater
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// than 0.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ConfigSyncPeriod&lt;/span> &lt;span style="color:#000">metav1&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Duration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// nodePortAddresses is the --nodeport-addresses value for kube-proxy process. Values must be valid
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// IP blocks. These values are as a parameter to select the interfaces where nodeport works.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// In case someone would like to expose a service on localhost for local visit and some other interfaces for
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// particular purpose, a list of IP blocks would do that.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// If set it to &amp;#34;127.0.0.0/8&amp;#34;, kube-proxy will only select the loopback interface for NodePort.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// If set it to a non-zero IP block, kube-proxy will filter that down to just the IPs that applied to the node.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// An empty string slice is meant to select all network interfaces.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">NodePortAddresses&lt;/span> &lt;span style="color:#000;font-weight:bold">[]&lt;/span>&lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// winkernel contains winkernel-related configuration options.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">Winkernel&lt;/span> &lt;span style="color:#000">KubeProxyWinkernelConfiguration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// ShowHiddenMetricsForVersion is the version for which you want to show hidden metrics.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">ShowHiddenMetricsForVersion&lt;/span> &lt;span style="color:#204a87;font-weight:bold">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// DetectLocalMode determines mode to use for detecting local traffic, defaults to LocalModeClusterCIDR
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">DetectLocalMode&lt;/span> &lt;span style="color:#000">LocalMode&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="配置说明">配置说明&lt;/h2>
&lt;h3 id="clustercidr">clusterCIDR&lt;/h3>
&lt;p>如果 clusterCIDR 配置为 192.168.209.0/24，则会创建以下 iptables 规则：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>-A KUBE-SERVICES ! -s 192.168.209.0/24 -m comment --comment &lt;span style="color:#4e9a06">&amp;#34;Kubernetes service cluster ip + port for masquerade purpose&amp;#34;&lt;/span> -m &lt;span style="color:#204a87">set&lt;/span> --match-set KUBE-CLUSTER-IP dst,dst -j KUBE-MARK-MASQ
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="conntrack">conntrack&lt;/h3>
&lt;ul>
&lt;li>数量限制&lt;/li>
&lt;/ul>
&lt;p>查看当前系统支持最大的 conntrack 数量&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>cat /proc/sys/net/netfilter/nf_conntrack_max
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>或者&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>sysctl -a &lt;span style="color:#000;font-weight:bold">|&lt;/span> grep net.netfilter.nf_conntrack_max
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>当 conntrack.maxPerCore=32768 且为 2个cpu核心的系统，则最大 nf_conntrack_max = 32768 * 2 = 65536，然后这个不应该小于 conntrack.min 设置的条目。&lt;/p>
&lt;ul>
&lt;li>超时限制&lt;/li>
&lt;/ul>
&lt;p>其中 net.netfilter.nf_conntrack_tcp_timeout_close_wait 等待时间是让被动关闭方把该传的数据传完。如果程序写得不好，这里抛了未捕捉的异常，也许就走不到发 FIN 那步了，一直停在这里&lt;/p></description></item></channel></rss>