Kubelet配置参数有哪些

61次阅读
没有评论

这篇文章主要介绍了 Kubelet 配置参数有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。

下面是 Kubelet version 1.12.0 的所有配置。

FlagComments–address

default 0.0.0.0,Kublet 监听地址,

0.0.0.0 表示监听所有网络接口

–allow-privileged 是否允许容器使用特权模式 –alsologtostderr 所有 log 输出到标准错误输出 –anonymous-authKubelet server 是否允许匿名的请求(default true)–application-metrics-count-limit 每个容器允许记录的最大事件数量(default 100–authentication-token-webhook 是否允许使用 TokerReview API 给持有的 tokens 做鉴权 –authentication-token-webhook-cache-ttl 缓存 webhook token 认证器回复的时间(默认值 2m0s)–authorization-mode   

Kubelet 的认证模式,取值(AlwaysAllow(默认值),Webhook)

Webhook 模式使用 SubjectAccessReview API 做鉴权

–authorization-webhook-cache-authorized-ttl 缓存 Webhook 授权人的已授权回复的时间(默认值 5m0s)–authorization-webhook-cache-unauthorized-ttl 缓存 Webhook 授权人的未授权回复的时间(默认值 30s)–azure-container-registry-config 文件容器路径 Azure 容器注册配置信息 –boot-id-file   

以逗号分隔的检查 boot-id 的文件列表。使用第一个存在的

(默认值: /proc/sys/kernel/random/boot_id)

–bootstrap-checkpoint-path 存储 checkpoint 的目录 –bootstrap-kubeconfig

用来获取 kubelet 客户证书的 Kubeconfig file 的路径, 如果 kubelet

没有定义 –kubeconfig 参数,bootstrap kubeconfig 会用于从

API server 获取客户证书。成功经验:引用已生成的客户证书和密钥

的 kubeconfig 写入 –kubeconfig 指定的路径。

客户证书和密钥将会储存在 –cert-dir 指定的目录中

–cadvisor-port 本地 cAdvisor 的端口,设置为 0 表示不可用,默认为 4194–cert-dir

TLS 证书所在的目录。如果 –tls-cert-file 和 –tls-private-key-file

提供了,那么这个参数会被忽略。默认值:/var/lib/kubelet/pki

–cgroup-driverKubelet 用来操作主机 cgroups 的驱动 –cgroup-root

Pods 可选的 root cgroup, 这是由 container runtime

在最佳工作的基础上处理的。

默认值:,意思是使用 container runtime 的默认处理

–cgroups-per-qos 支持创建 QoS cgroup 的层级结构。如果是 true,最高层级的 –chaos-chance 如果值大于 0.0,那么就引入随机的客户端错误和延迟,用于测试。–client-ca-file

如果 set 了,任何提供 client-ca-file 中由某个权威机构签名的

客户机证书的请求都使用与客户机证书的公共名称相对应的

身份进行身份验证

–cloud-configcloud provider 配置文件的路径 –cloud-provider 云服务的提供商。指定空值以在没有云提供商的情况下运行 –cloud-provider-gce-lb-src-cidrs

GCE 防火墙给 LB 流量代理开放的 CIDRS。默认值:

130.211.0.0/22,35.191.0.0/16,209.85.152.0/22,209.85.204.0/22

–cluster-dns 以逗号分隔的 DNS 服务 IP 地址。–cluster-domain 集群的域名 –cni-bin-dir 查找 CNI 插件二进制文件的完整目录。默认值:/opt/cni/bin–cni-conf-dir 查找 CNI 插件配置文件的完整目录。默认值:/etc/cni/net.d–container-hints 容器提示文件的目录。默认值:/etc/cadvisor/container_hints.json–container-runtime

使用的 container runtime 容器运行时。可用值“docker”,“rkt”。

默认值为“docker”。

–container-runtime-endpoint

试验性参数。远程运行时的服务端口, 目前 Linux 支持 unix socket,

Windows 支持 tcp。

–containerdcontained 端口,默认值:unix:///var/run/containerd.sock–containerized 试验性参数。支持在容器中运行 kubelet–contention-profiling 如果启用了 profiling,支持锁住争夺 profiling–cpu-cfs-quota

为指定 CPU 配额限制的容器启动 CPU CFS 配额强制执行,

默认值:true

–cpu-manager-policyCPU 的管理器策略。可选值:“none”,“static”。默认值:“none”–cpu-manager-reconcile-periodCPU 管理器调节周期。Nodes 状态更新频率。默认 10s。–dockerdocker 端口,默认值:unix:///var/run/docker.sock–docker-disable-shared-pid

RI 在同一个 POD 的中的容器在 1.13.1 的 docker 版本默认使用

同一个 PID namespace. 设置该标志将恢复到独立

PID namespace 之前的行为,将会在之后移除

–docker-endpoint

将此端口用于 docker 端口通信,

默认值:unix:///var/run/docker.sock

–docker-env-metadata-whitelistdocker 容器需要收集的一份以逗号间隔的环境变量列表 –docker-only 除了根目录,只报告 docker 容器 –docker-root 弃用:docker root 从 docker info(默认:/var/lib/docker)读取的 –docker-tls 使用 TLS 连接 docker–docker-tls-ca 可信 CA 的路径,默认值:ca.pem–docker-tls-cert 客户端证书的路径,默认值:cert.pe–docker-tls-key 私有密钥的路径 –dynamic-config-dir

Kubelet 将会使用这个目录来校验下载的配置以及追踪配置的健康。

Kubelet 会建空目录当该目录不存在时。该路径可能是绝对的

或者相对的,相对路径从 Kubelet 正在工作的目录开始。

提供该标志可启用 Kubelet 动态配置,目前,

必须启用 DynamicKubeletConfig 来传递此标志。

–enable-controller-attach-detach

允许附加 / 分离的 controller 管理调度附加 / 分离的 volumes 到该 node,

并禁止 kubelet 执行任何的附加 / 分离操作,默认值:true

–enable-debugging-handlers 启用用于日志收集和本地运行容器和命令的服务端端点,默认值:true–enable-load-reader 是否启用 cpu 负载阅读 –enable-server 启用 kubelet 服务器,默认值:true–enforce-node-allocatable

由 kubelet 执行的节点可分配强制执行级别的逗号分隔列表。

可选值:“pods”,“system-reserved,”“kube-reserved”.

如果指定后两个选项,那么 –system-reserved-cgroup

–kube-reserved-cgroup 也需要分别设置,默认值“pods”。

–event-burst

突发事件记录的最大值,临时允许事件记录爆发到该数字,但不超过

event-qps。只有当 –event-qps 0 时才有用,默认值:10

–event-qps

如果大于 0,将每秒创建的事件限制为该值。如果是 0,则不限制。

默认值:5

–event-storage-age-limit

存储事件的最大时间长度(每种类型),值是一个使用逗号

分隔的键值列表。key 值是事件类型 (creation, oom) 或者 dafault,

值是一个整数。默认应用于所有没有指定的事件类型。

默认值:“default=0”

–event-storage-event-limit

存储事件的最大数量(每种类型),值是一个使用逗号分隔的键值列表。

key 值是事件类型 (creation, oom) 或者 dafault,值是一个整数。默认应用于

所有没有指定的事件类型。默认值:“default=0”

–eviction-hard   

触发 pod 驱逐的一组驱逐阀值(e.g.  memory.available 1Gi)。默认值:imagefs.available 15%,memory.available 100Mi,

nodefs.available 10%,nodefs.inodesFree 5%

–eviction-max-pod-grace-period 终止 pod 的最大宽限时间(秒),以响应最大的软驱逐阀值 –eviction-minimum-reclaim 一组最小的回收策略(i.e. imagefs.available=2Gi),用来描述当资源处于压力时候,执行 pod 驱逐将要回收的最小资源数量 –eviction-pressure-transition-periodkubelet 过渡到驱逐压力状态需要等待的时间 –eviction-soft

一组驱逐阀值(e.g. memory.available 1.5Gi), 如果在相应的 –eviction-soft-grace-period 内都超过该阀值,

就会触发 pod 驱逐

–eviction-soft-grace-period 组驱逐的宽限期(e.g. memory.available=1m30s),需要持续触及软驱逐阀值多久才触发 pod 驱逐 –exit-on-lock-contentionKubelet 是否应该在锁文件争用的时候退出 –experimental-allocatable-ignore-evictionset to true 时,当在计算 Node 可分配的资源时,硬驱逐阀值会被忽略,默认值为 false–experimental-allowed-unsafe-sysctls 以逗号分隔的不安全的 sysctl 或不安全的 sysctl 模式的一组白名单(以 * 结尾)。使用该参数需要自行承担风险。–experimental-bootstrap-kubeconfig 启用,改为使用 –bootstrap-kubeconfig–experimental-check-node-capabilities-before-mount 试验性的,如果设置为 true,在执行挂载之前,kubelet 将会检查底层节点的组件(二进制文件等)–experimental-kernel-memcg-notification 如果启用,kubelet 将会与内核 memcg 通知集成,以确定是否超过了内存阀值,而不是轮询 –experimental-mounter-path 试验性的,贴片二进制文件的路径,保持空以便使用默认的挂载 –experimental-qos-reserved

一组资源名 = 百分比(e.g. memory=50%),描述了在 Qos 的级别上 pod 资源请求是如何保留的。

目前只支持 memory。默认值是 none

–fail-swap-on 如果 swap 在节点上启用了,则使 kubelet 无法启动 –feature-gates 一组键值对用于描述 alpha/ 实验特性的特性门 –file-check-frequency 检查新数据的配置文件的持续时间,默认值 20s–global-housekeeping-interval 全局性 housekeeping 的时间间隔,默认值 1m0s–google-json-keyGoogle 云平台用于身份验证的 Service Account Json key 值 –hairpin-modeKubelet 该怎么设置 hairpin NAT. 这个参数允许 Service 的端点在试图访问自己的 Service 重新负载均衡 –healthz-bind-addressDeafult 127.0.0.1。用于 healthz 服务的 IP 地址 –healthz-port 本地主机 healthz 端点的端口,设为 0 表示不可用,默认值:10248–host-ipc-sourcesKubelet 允许 pod 使用主机 IPC namespace 的一组以逗号分隔的源列表 –host-network-sourcesKubelet 允许 pod 使用主机 NETWORK namespace 的一组以逗号分隔的源列表 –host-pid-sourcesKubelet 允许 pod 使用主机 PID namespace 的一组以逗号分隔的源列表 –hostname-override 如果该参数不是空的,会使用这个参数作为身份识别替代实际的 hostname–housekeeping-interval 容器 housekeeping 的间隔时间,默认值 10s–http-check-frequency 检查新数据的 http 之间的持续时间,默认值 20s–image-gc-high-threshold 当磁盘使用率达到该值时,触发镜像的 GC 操作,默认值:85–image-gc-low-threshold 当磁盘使用率降到该值时,GC 操作结束,默认值:80–image-pull-progress-deadline 如果在这个 deadline 前拉取镜像没有结束,那么拉取镜像会被取消。默认值:1m0s–image-service-endpoint

试验性。远程镜像服务的端口。如果没有指定,那么这个参数默认和 container-runtime-endpoint 一样。

目前 linux 支持 unix socket,windows 支持 tcp。

–init-config-dir

Kubelet 会从这个目录中查找初始配置。这个路径可能是绝对的或者相对的,

相对路径从 Kubelet 的当前工作目录开始。缺省该参数以使用内置的默认配置值。

目前,还需要启用 Kubeletconfig 的 feature gate 来传递这个标志。

–iptables-drop-bitfwmark 空间的一部分,用来标记要丢弃的数据包。取值范围 0~31,默认值:15–iptables-masquerade-bit

fwmark 空间的一部分,用来将数据包标记为 SNAT。取值范围 0~31,

请将此参数与 kube-proxy 相应的参数进行匹配。默认值:14

–kube-api-burst 与 kubernetes apiserver 交互时的 burst,默认是 10–kube-api-content-type 发送到 apiserver 的请求的内容类型。默认:application/vnd.kubernetes.protobuf–kube-api-qps 与 kubernetes apiserver 交互时的 QPS 使用,默认值 5 –kube-reserved

用来描述给 kubernetes 系统组件预留资源的一组 ResourceName=ResourceQuantity

(e.g. cpu=200m,memory=500Mi,ephemeral-storage=1Gi)。目前,支持 cpu,内存,

和 root file 系统的临时性存储

–kube-reserved-cgroup    顶级 cgroup 的绝对名称,用于管理通过 –kube-reserved 标志保留计算资源 kubernetes 组件 –kubeconfigkubeconfig file 的路径,指定连接 API server 的方式。默认值:/var/lib/kubelet/kubeconfig –kubelet-cgroups 可选的 cgroups 的绝对名称,用来创建和运行 Kubelet。–lock-file   kubelet 作为锁文件使用的文件路径 –log-backtrace-at 当日志文件记录到行文件 N 时,发出堆栈跟踪,默认值 0 –log-cadvisor-usage 是否记录 cAdvisor 容器的使用情况 –log-dir 如果为非空,将日志文件写入该目录 –log-flush-frequency 日志刷新间隔最大的秒数。默认值:5s–logtostderr 日志写到标注错误输出,而不是文件,默认值为 true–machine-id-file

以逗号分隔的文件列表,用来检查机器 id。使用第一个存在的。

默认值:/etc/machine-id,/var/lib/dbus/machine-id

–make-iptables-util-chains 如果是 true,kubelet 将确保在主机上提供 iptables 实用规则 –manifest-url 访问容器清单的 URL–manifest-url-header

在访问 URL 清单的时候使用的以逗号分隔的 HTTP 头部列表。

将按照提供的顺序添加具有相同名称的多个头部,可以重复调用该标志。

I.E. –manifest-url-header a:hello,b:again,c:world

 –manifest-url-header b:beautiful

–max-open-filesKubelet 进程可以打开的文件数量,默认值:1000000–max-podsKubelet 可以运行的最大 pod 数量,默认值:110–minimum-image-ttl-duration 未被使用的镜像在垃圾收集之前的最低使用年限 –network-pluginKubelet/pod 生命周期中的各种各样的时间调用的网络插件的名称 –network-plugin-mtu 通过网络插件的 MTU(最大传输单元),用来覆盖默认值。设为 0 表示使用默认 1460MTU–node-ipNode 的 IP 地址,如果设置,Kubelet 将为 node 使用这个 IP 地址 –node-labels 当注册这个 node 到集群时添加这些 Labels–node-status-update-frequency

指定 Kubelet 发布节点状态给 master 的频率。注意:改变该常量时要小心,

必须和 nodecontroller 的 nodeMonitorGracePeriod 相结合。默认值:10s。

–oom-score-adjKubelet 进程的 oom-score-adj 值,取值范围 -1000 ~ 1000。默认值:-999–pod-cidr 用于 POD IP 地址的 CIDR,仅在独立模式下使用。–pod-infra-container-image 每个 pod 的 network/ipc namespace 容器使用的镜像,默认:k8s.gcr.io/pause:3.1 –pod-manifest-path(静态 pod 目录)包含需要运行的 pod 元文件目录,或者单个 pod 的元文件。以“.”开头的文件会被忽略。–pods-per-core   

Kubelet 上每个核心可以运行的 pods,Kubelet 上 Pods 的总数不能超过 max-pods,

所以当这个参数计算的结果大于 max-pods 时,Kubelet 会使用 max-pods 的参数,

该参数设置为 0 时表示不使用。

–portKubelet 的端口,默认值 10250–protect-kernel-defaults

内核调优的默认 Kubelet 行为。如果设置,任何内核的可调参数和 kubelet 的默认值

不同,则 kubelet 会出现错误。

–provider-id 用于标示节点在机器数据库中唯一标示符 –read-only-port

Kubelet 监听的只读端口,无需授权 / 身份验证即可使用,默认值 10255,设置为 0 表示不可用。

–really-crash-for-testing 如果设为 true,当出现 panics 时候引起奔溃,用于测试。–register-node   

向 APIserver 注册节点。如果 –kubeconfig 没有提供,这个标志就无关紧要了,

因为 Kubelet 没有一个注册服务器。默认值为 true。

–register-with-taints 使用指定的污染列表(逗号分隔‘=:’)。如果注册节点是 false,则无操作。–registry-burst

突发性 pulls 的最大值,临时允许 pulls 爆发到该值,但仍然不超过 registry-qps。

只有 –registry-qps 0 时候这个标志才有用。默认值 10.

–registry-qps 当大于 0 时,限制注册表 pull QPS 到这个值。–resolv-conf 解析配置文件用作容器 DNS 解析配置的基础,默认值:/etc/resolv.conf –root-dir    管理 kubelet 文件的目录路径。(volume mounts 等等)。默认值:/var/lib/kubelet –rotate-certificates 当证书到期时,通过从 kube-apiserver 请求新的证书,自动旋转 kubelet 客户机证书 –runonce 如果设置为 true,当从本地清单或者远程 urls 生成 pod 之后退出。给 –enable-server 单独使用的 –runtime-cgroups 可选的 cgroups 的决定名称,用于创建和运行 runtime–runtime-request-timeout

除了长时间运行的请求 (pull,logs,exec,attach) 以外,所有 runtime 请求的超时时间。

当触发超时时,kubelet 会取消请求,抛出一个错误并稍后重试,默认值:2m0s

–seccomp-profile-rootseccomp 概要文件的目录路径。默认值:/var/lib/kubelet/seccomp –serialize-image-pulls 每次拉取一个镜像。建议不要在 1.9 的 docker 版本或者使用 Aufs 存储后端的节点修改默认的值。默认值 true。–stderrthreshold 在此阀值或以上的日志转到标准错误输出。默认值 2 –storage-driver-buffer-duration

在此期间,存储驱动程序中的写入将被缓冲,并作为单个事务提交给非内存后端。默认值:1m0s

–storage-driver-db 数据库的名称,默认值:cadvisor –storage-driver-host 数据库主机:端口,默认值:localhost:8086 –storage-driver-password 数据库密码,默认值:root –storage-driver-secure 数据库使用安全连接 –storage-driver-table 表名,默认值:stats –streaming-connection-idle-timeout 在连接自动关闭之前,流连接可以空闲的最长时间。0 表示没有超时。默认值:4h0m0s–sync-frequency 同步运行的容器和配置之间最大的间隔。默认值:1m0s–system-cgroups

可选的 cgroups 的绝对名称将所有非内核进程放在 / 下的 cgroup 中。空表示容器,

回滚标志需要重新引导。

–system-reserved

一组 ResourceName=ResourceQuantity 对(e.g. cpu=200m,memory=500Mi,

ephemeral-storage=1Gi)  的集合,用于描述非 kubernetes 组件的预留资源。

目前只支持 cpu 和内存。默认值为  [default=none]–system-reserved-cgroup

顶级的 cgroup 的绝对名称,用于管理非 kubernetes 的组件,这些组件的计算资源

通过   –system-reserved 保留。默认值:[default=]–tls-cert-file   

用于服务 HTTPS 的包含 x509 证书的文件(如果有中间证书,则连接在服务器证书之后),

如果 –tls-cert-file 和 –tls-private-key-file 没有提供,则为公共地址生成自签名

证书和密钥,并报春传递到 –cert-dir 的目录中。

–tls-cipher-suites 用逗号分隔的服务器密码套件列表。如果省略,将使用默认的 Go 密码套件。–tls-private-key-file 包含匹配 –tls-cert-file 文件的 x509 私钥的文件。-v, –v  日志的日志级别 –vmodule 以逗号分隔的“模式列表 =N”的文件过滤日志记录设置 –volume-plugin-dir

用于寻找附加的第三方 volume 插件的完整目录路径。

默认值:/usr/libexec/kubernetes/kubelet-plugins/volume/exec/

–volume-stats-agg-period 指定 Kubelet 计算和缓存所有 pods/volumes 的 volume 使用量的间隔。

参考:大神的博客 https://my.oschina.net/jxcdwangtao/blog/891960

要做好资源预留的话,需要事先创建以下 cgroup 目录:

/sys/fs/cgroup/cpuset/system.slice/kubelet.service 
/sys/fs/cgroup/hugebtl/system.slice/kubelet.service

这个工作可以放到 kubelet.service 的 ExecStartPre 中做。

而且一定要加上这三个配置项,否则无法生效:

--enforce-node-allocatable=pods,kube-reserved,system-reserved 
--kube-reserved-cgroup=/system.slice/kubelet.service 
--system-reserved-cgroup=/system.slice

感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“Kubelet 配置参数有哪些”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!