kubelet 参数
kubelet是在每个节点上运行的。
kubelet 使用描述 pod 的 YAML 或 JSON 格式的 PodSpec 工作。
kubelet 确保 PodSpecs 中描述的容器健康运行。 kubelet 不会管理非 Kubernetes 创建的容器。
除了来自 apiserver 的 PodSpec 之外,还有三种方法可以将容器清单提供给Kubelet:
1、文件:路径作为参数在命令行传递。kubelet 将定期监视此路径下的文件以获取更新。
2、HTTP端点:HTTP端点作为参数在命令行传递。
3、HTTP服务器:kubelet还可以监听HTTP并响应一个简单的API(当前未检测到)以提交新的清单。很多命令行参数被弃用,应该到 --config 参数指定的配置文件中设置。有关详细信息,请参阅 https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/
参数名 | 含义 | 默认值 |
---|---|---|
allow-privileged | 如果为true,则允许特权容器。DEPRECATED:将在以后的版本中删除 | true |
allowed-unsafe-sysctls | 不安全的sysctl或不安全的sysctl模式的白名单(以*结尾)默认情况下启用Sysctls功能门。 | |
azure-container-registry-config | 包含Azure容器注册表配置信息的文件的路径。 | |
bootstrap-checkpoint-path | <警告:Alpha功能>存储 checkpoint 的目录的路径 | |
bootstrap-kubeconfig | 如果 --kubeconfig 指定的文件不存在,kubelet 使用该文件中的用户名和 token 向 kube-apiserver 发送 TLS Bootstrapping 请求;管理员通过了 CSR 请求后,kubelet 自动在 --cert-dir 目录创建证书和私钥文件(kubelet-client.crt 和 kubelet-client.key),然后写入 --kubeconfig 文件; | |
cert-dir | TLS证书所在的目录。如果提供了--tls-cert-file和--tls-private-key-file,则将忽略此参数。 | “/ var / lib / kubelet / pki” |
cloud-config | 云提供商配置文件的路径。空表示没有配置文件。 | |
cloud-provider | 云服务商。如果为空表示没有云服务商。云服务商可能确定节点的名称(请参阅云提供商文档以确定是否以及如何使用主机名)。 | |
cni-bin-dir | <警告:Alpha功能>搜索CNI插件二进制文件的目录列表。 仅在container-runtime设置为docker时有效。 | |
cni-conf-dir | <警告:Alpha功能>搜索CNI配置文件的目录。 仅在container-runtime设置为docker时有效。 | /etc/cni/net.d |
config | 将从此文件加载其初始配置。 路径可以是绝对的或相对的; 相对路径从Kubelet的当前工作目录开始。 省略此参数以使用默认配置值。命令行的配置参数将会覆盖该文件中的值 | |
container-log-max-files | <警告:测试版功能>设置容器可以存在的最大容器日志文件数。数字必须> = 2。此参数只能与--container-runtime = remote一起使用。 | 5 |
container-runtime | 要使用的容器运行时。可选: 'docker','remote','rkt(deprecated)' | docker |
container-runtime-endpoint | [Experimental]远程runtime服务的端点。目前Linux上支持unix socket和tcp端点,而windows上支持npipe和tcp端点。示例:'unix:///var/run/dockershim.sock','npipe:////./pipe/dockershim' | unix:///var/run/dockershim.sock |
containerized | 容器中运行kubelet。 | |
docker-endpoint | 与docker端点进行通信。此docker参数仅在 container-runtime 设置为 docker 时有效 | unix:///var/run/docker.sock |
docker-root | DEPRECATED:从docker info读取docker root(这是一个后备) | /var/lib/docker |
dynamic-config-dir | Kubelet将使用此目录检查下载的配置并跟踪配置运行状况。如果该目录尚不存在,Kubelet将创建该目录。路径可以是绝对的或相对的,相对路径从Kubelet的当前工作目录开始。提供此参数会启用动态Kubelet配置。必须启用DynamicKubeletConfig功能门才能传递此参数,该功能是测试版。 | true |
enable-server | 启用Kubelet的服务器 | true |
exit-on-lock-contention | kubelet是否应在锁定文件争用时退出 | |
experimental-allocatable-ignore-eviction | 设置为'true'时,计算Node Allocatable时将忽略Hard Eviction Thresholds。有关详细信息,请参阅https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources/。 | false |
experimental-bootstrap-kubeconfig | (DEPRECATED:使用--bootstrap-kubeconfig) | |
experimental-check-node-capabilities-before-mount | [实验性] 如果设置为true,kubelet将在执行mount之前检查底层节点是否需要组件(二进制文件等) | |
experimental-kernel-memcg-notification | 如果启用,则kubelet将与 kernel memcg notification 集成,以此确定是否超出内存逐出阈值而不是靠轮询。 | |
experimental-mounter-path | [实验性]mounter二进制文件路径。 为空则使用默认安装 | |
feature-gates | 一组key = value对,用于描述特征处于alpha / experimental状态。 | |
healthz-port | 本地 healthz 端点的端口,设置为 0 将禁用 | 10248 |
host-ipc-sources | Kubelet 允许 pod 使用 host ipc 的命名空间列表。 (已弃用:将在以后的版本中删除) | [*] |
host-network-sources | Kubelet允许pod使用主机网络的列表(已弃用:将在以后的版本中删除) | [*] |
host-pid-sources | Kubelet允许pod使用主机pid命名空间的列表 | [*] |
hostname-override | 如果非空,则使用此字符串作为标识而不是实际的主机名。如果设置了--cloud-provider,则云提供商决定节点的名称(请参阅云提供商文档以确定是否以及如何使用主机名)。 | |
housekeeping-interval | 容器housekeepings间隔时间 | 10s |
image-pull-progress-deadline | 如果在此时间之前没有 pulling 进度,pulling images 将被取消。 此参数仅在 container-runtime 设置为 docker 时有效。 | 1m |
image-service-endpoint | [实验性质] 远程images service的端点。 如果未指定,则默认情况下与container-runtime-endpoint相同。 目前支持unix socket和tcp端点 | |
keep-terminated-pod-volumes | 在pod终止后,将终止的pod卷安装到节点上。可用于调试与 volumes 相关的问题。 (已弃用:将在以后的版本中删除) | |
kube-api-burst | 在与kubernetes apiserver通信时使用Burst | 10 |
kubeconfig | kubeconfig文件的路径,指定如何连接到API server。 使用--kubeconfig启用API服务器模式,省略--kubeconfig启用独立模式。该路径指向的 kubelet.kubeconfig 文件在第一次启动 kubelet 之前并不存在,当通过CSR请求后会自动生成kubelet.kubeconfig文件 | |
lock-file | <警告:Alpha功能>用于kubelet的文件路径,用作锁定文件。 | |
master-service-namespace | 应将kubernetes主服务注入pod的命名空间(DEPRECATED:将在以后的版本中删除此参数。) | default |
maximum-dead-containers | 全局保留的容器的最大旧实例数。每个容器占用一些磁盘空间。设置为负数表示禁用此功能。(已弃用:改为使用--eviction-hard或--eviction-soft。将在以后的版本中删除。) | -1 |
maximum-dead-containers-per-container | 每个容器保留的最大旧实例数。 每个容器占用一些磁盘空间。(已弃用:请使用--eviction-hard或--eviction-soft。将来的版本将被删除。) | 1 |
minimum-container-ttl-duration | 已完成容器在垃圾回收之前的最小年龄。 示例:'300ms','10s'或'2h45m'(已弃用:使用--eviction-hard或--eviction-soft代替。将在未来版本中删除。) | |
network-plugin | <警告:Alpha功能> kubelet / pod生命周期中的各种事件调用的网络插件。此参数仅在container-runtime设置为docker时有效。 | |
network-plugin-mtu | <警告:Alpha功能>要传递给网络插件的MTU,以覆盖默认值。设置为0表示 MTU 使用默认的1460。此参数仅在container-runtime设置为docker时有效。 | |
node-ip | 节点的IP地址。如果设置,则kubelet将使用此IP地址作为节点 | |
node-labels | <警告:Alpha功能>在集群中注册节点时要添加的标签。 'kubernetes.io'命名空间中的标签必须以允许的前缀(kubelet.kubernetes.io,node.kubernetes.io)开头,或者在特定允许的集合中(beta.kubernetes.io/arch,beta.kubernetes.io/ instance-type,beta.kubernetes.io / os,failure-domain.beta.kubernetes.io / region,failure-domain.beta.kubernetes.io / zone,failure-domain.kubernetes.io / region,failure-domain。 kubernetes.io/zone,kubernetes.io/arch,kubernetes.io/hostname,kubernetes.io/instance-type,kubernetes.io/os) | |
node-status-max-images | <警告:Alpha功能> Node.Status.Images中上报的最大 images 数。指定-1表示没有上限。 | 50 |
non-masquerade-cidr | 此范围之外的IP流量将使用IP伪装。设置为'0.0.0.0/0'表示永不伪装。 (已弃用:将在以后的版本中删除) | 10.0.0.0/8 |
pod-infra-container-image | 每个pod中的network / ipc命名空间容器会使用的映像。此参数仅在container-runtime设置为docker时有效。 | k8s.gcr.io/pause:3.1 |
provider-id | 用于标识 machine database 中节点的唯一标识符,即cloudprovider | |
really-crash-for-testing | 如果是,则当恐慌发生时崩溃。用于测试。 | |
redirect-container-streaming | 启用容器流重定向。如果为false,则kubelet将在apiserver和容器运行时之间代理容器流数据;如果为true,则kubelet会将http重定向返回给apiserver,而apiserver将直接访问容器运行时。代理方法更安全,但引入了一些开销。重定向方法性能更高,但安全性较低,因为apiserver和容器运行时之间的连接可能无法进行身份验证。 | |
register-node | 用apiserver注册节点。如果未提供--kubeconfig,则此参数无效,因为Kubelet将没有可注册的apiserver。 | true |
register-schedulable | 将节点注册为可调度的。如果register-node为false,则不会有任何影响。(DEPRECATED:将在以后的版本中删除) | true |
register-with-taints | 用给定的taints列表注册节点(“ |
|
root-dir | 管理kubelet文件的路径(volume mounts 等) | /var / lib / kubelet |
runonce | 如果为true,则在从静态pod文件或远程url生成pod后退出。仅限--enable-server | |
runtime-cgroups | 要创建和运行runtime里的cgroup的可选名称。 | |
seccomp-profile-root | <警告:Alpha功能> seccomp配置文件的目录路径。 | / var / lib / kubelet / seccomp |
stderrthreshold | >=此严重性的日志会输出到stderr | 2 |
volume-plugin-dir | 搜索第三方卷插件的完整路径 | / usr / libexec / kubernetes / kubelet-plugins / volume / exec / 1m0s |
弃用参数 | =========================此参数应通过Kubelet的--config参数指定的配置文件设置=========================================== | ===== |
address | Kubelet提供服务的IP地址。 | 0.0.0.0 |
anonymous-auth | 启用对访问 API server 安全端口的匿名请求。没有被其他身份验证方法拒绝的请求被视为匿名请求。匿名请求在系统中的用户名:anonymous,组名:unauthenticated。 | true |
authentication-token-webhook | 使用 TokenReview API 确定承载令牌的身份验证。 | |
authentication-token-webhook-cache-ttl | 缓存来自webhook令牌验证器的响应的持续时间。 | 2m |
authorization-webhook-cache-authorized-ttl | 缓存 webhook 授权程序的“授权”响应的持续时间。 | 5m0s |
authorization-webhook-cache-unauthorized-ttl | 缓存 webhook 授权程序的“未授权”响应的持续时间。 | 30s |
authorization-mode | kubelet服务器的授权模式(AlwaysAllow,Webhook)Webhook模式使用SubjectAccessReview API来确定授权。 | AlwaysAllow |
cgroup-driver | kubelet 用于操作主机上的cgroup的驱动程序。可能的值:'cgroupfs','systemd' | cgroupfs |
cgroup-root | pod的可选root cgroup。这由容器运行时以尽力而为的方式处理。 | 使用容器运行时默认值 |
cgroups-per-qos | 如果最高等级的QoS和pod cgroup已创建,则启用 creation of QoS cgroup hierarchy。 | true |
chaos-chance | 如果> 0.0,则引入随机客户端错误和延迟。用于测试。 | |
client-ca-file | 启用客户端证书认证。该参数引用的文件中必须包含一个或多个证书颁发机构,用于验证提交给该组件的客户端证书。如果客户端证书已验证,则用其中的 Common Name 作为请求的用户名 | |
cluster-dns | DNS服务器IP地址列表。对于具有“dnsPolicy = ClusterFirst”的Pod,此值用于容器DNS服务器。注意:列表中的所有DNS服务器必须提供相同的记录集,否则集群的名称解析可能无法正常工作。无法保证可以联系哪个DNS服务器进行名称解析。 | |
cluster-domain | 集群的域名。如果设置,除了主机的搜索域之外,kubelet还将配置所有容器以搜索此域 | |
container-log-max-size | <警告:测试版功能>设置容器日志文件回滚前的最大大小(例如10Mi)。此参数只能与--container-runtime = remote一起使用。 | |
contention-profiling | 如果启用了 profiling,则启用锁争用性分析 | |
cpu-cfs-quota | 为指定CPU限制的容器强制执行CPU CFS配额 | true |
cpu-cfs-quota-period | 设置CPU CFS配额周期值cpu.cfs_period_us,默认为Linux内核默认值 | 100ms |
cpu-manager-policy | CPU管理器策略 none 或者 static | none |
cpu-manager-reconcile-period | <警告:Alpha功能> CPU Manager协调期。 如果未提供,则默认为NodeStatusUpdateFrequency | 10s |
enable-controller-attach-detach | 使Attach / Detach控制器能够调度该节点的volume的 Attach/Detach | true |
enable-debugging-handlers | 启用服务器端点以进行日志收集和本地运行容器、命令 | true |
enforce-node-allocatable | kubelet强制执行的节点可分配强制执行级别的逗号分隔列表。可选项是'none','pods','system-reserved'和'kube-reserved'。如果指定后两个选项,则还必须分别设置'--system-reserved-cgroup'和'--kube-reserved-cgroup'。如果指定'none',不用设置其他选项。有关详细信息,请参阅https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources/。 | pods |
event-burst | 突发事件记录的最大大小,暂时允许事件记录突发到此数字,同时不超过事件qps。仅在--event-qps> 0 时有效 | 10 |
event-qps | 如果> 0,则将每秒的创建事件数限制为此值。如果为0,无限制。 | 5 |
eviction-hard | 一组 eviction thresholds(例如memory.available <1Gi),如果到了阈值则会触发pod驱逐。 | imagefs.available <15%,memory.available <100Mi,nodefs.available <10%,nodefs.inodesFree <5% |
eviction-max-pod-grace-period | 当因达到软驱逐阈值时终止pod前的最大宽限时间。如果为负数,则推迟到pod指定的值。 | |
eviction-minimum-reclaim | 当资源有压力,执行pod驱逐时,kubelet将回收的最小资源量。 | |
eviction-pressure-transition-period | 在驱逐压力之前, kubelet必须等待的时间。 | 5m |
eviction-soft | 一组驱逐阈值(例如memory.available <1.5Gi),如果在相应的宽限期内遇到,将触发一个pod驱逐。 | |
eviction-soft-grace-period | 一组驱逐宽限期(例如memory.available = 1m30s),对应于软驱逐阈值在触发吊舱驱逐之前必须保持多长时间。 | |
experimental-fail-swap-on | DEPRECATED:请改用--fail-swap-on。 | true |
file-check-frequency | 检查新数据的配置文件的间隔时间 | 20s |
hairpin-mode | kubelet setup hairpin NAT 模式。这允许服务的端点在尝试访问自己的服务时负载平衡回自身。有效值为“promiscuous-bridge”,“hairpin-veth”和“none”。 | promiscuous-bridge |
healthz-bind-address | healthz服务器的IP地址(对于所有IPv4接口设置为0.0.0.0,对于所有IPv6接口设置为:: ) |
127.0.0.1 |
http-check-frequency duration | 检查新数据的http之间的持续时间 | 20s |
image-gc-high-threshold | 运行 image 垃圾回收后的磁盘使用百分比。值必须在[0,100]范围内,设置为 100 可禁用图像垃圾回收 | 85 |
image-gc-low-threshold | 从未运行 image 垃圾回收前的磁盘使用百分比。垃圾收集的最低磁盘使用率。值必须在[0,100]范围内,并且不应大于--image-gc-high-threshold。 | 80 |
iptables-drop-bit | 用于标记丢弃数据包的 fwmark 位。必须在[0,31]范围内。 | 15 |
iptables-masquerade-bit | 用于标记SNAT数据包的fwmark空间位。必须在[0,31]范围内。此参数应与kube-proxy中的相应参数匹配。 | 14 |
kube-api-content-type | 发送到apiserver的请求的内容类型。 | application / vnd.kubernetes.protobuf |
kube-api-qps | 与 kubernetes apiserver 通信时使用的QPS | 5 |
kube-reserved | 一组ResourceName = ResourceQuantity 对(例如cpu = 200m,memory = 500Mi,ephemeral-storage = 1Gi), 表示为kubernetes系统组件保留的资源。前支持根文件系统的cpu,内存和本地临时存储。有关更多详细信息,请参见http://kubernetes.io/docs/user-guide/compute-resources。 | none |
kube-reserved-cgroup | 最高等级cgroup的名称,用于管理通过“--kube-reserved”参数保留计算资源的kubernetes组件。 | '' |
kubelet-cgroups | 用于创建和运行Kubelet的cgroups的可选名称。 | |
make-iptables-util-chains | 如果为true,kubelet将确保主机上使用 iptables 规则。 | true |
manifest-url | 用于访问要运行的其他Pod规范的URL | |
manifest-url-header | HTTP header 列表,用于访问时网址提供给--manifest-url。可以以相同的顺序添加具有相同名称的多个 header。可以重复调用此参数。 | |
max-open-files | Kubelet进程可以打开的文件数。 | 1000000 |
max-pods | 可以在此Kubelet上运行的Pod数。 | 110 |
minimum-image-ttl-duratio | 未使用的 image 在被垃圾回收之前的最小年龄。 示例:'300ms','10s'或'2h45m'。 | 2m |
node-status-update-frequency | 指定kubelet将节点状态发布到master的频率。该参数必须与nodecontroller中的nodeMonitorGracePeriod一起使用。 | 10s |
oom-score-adj | kubelet进程的oom-score-adj值。值必须在[-1000,1000]范围内 | -999 |
pod-cidr | 用于pod IP地址的CIDR,仅适用于单机模式。如果启动了集群,该值从 master 获得。对于IPv6,分配的最大IP数为65536 | |
pod-manifest-path | 包含要运行的静态pod文件的路径,或单个静态pod文件的路径。以点开头的文件将被忽略。 | |
pod-max-pids | <警告:Alpha功能>设置每个pod的最大进程数。 | -1 |
pods-per-core | 可以在此Kubelet上运行的每个核的Pod数。此Kubelet上的Pod总数不能超过max-pods。值为0表示禁用此限制。 | |
port | Kubelet提供服务的端口。 | 10250 |
protect-kernel-defaults | 内核优化的默认kubelet行为。如果设置,则当任何内核可调参数与kubelet默认值不同时,kubelet抛出错误。 | |
qos-reserved | <警告:Alpha功能>一组ResourceName = Percentage对(例如,内存= 50%),用于描述如何在QoS级别保留pod资源请求。目前仅支持内存。需要启用QOSReserved功能门。 | |
read-only-port | Kubelet的只读端口,无需认证/授权即可服务(设置为0以禁用)(DEPRECATED:此参数应通过指定的配置文件设置Kubelet的--config参数..) | 10255 |
registry-burst | 暂时允许 bursty pulls的最大大小,不超过registry-qps。仅在--registry-qps> 0 时使用 | 10 |
registry-qps | 如果> 0,允许registry pull QPS 达到此值。如果为0,无限制。 | 5 |
resolv-conf | 用作容器DNS解析配置的基础解析器配置文件。 | /etc/resolv.conf |
rotate-certificates | <警告:测试版功能> 证书过期时,从kube-apiserver请求新证书来自动更新kubelet客户端证书。 | |
rotate-server-certificates | 在证书过期时,通过从kube-apiserver自动请求轮换服务端证书。需要启用RotateKubeletServerCertificate功能门,并批准提交 CertificateSigningRequest 对象。 | |
runtime-request-timeout | 除了长时间运行的请求之外的所有运行时请求的超时时间 - pull,logs,exec和attach。 超时时,kubelet将取消请求,抛出错误并稍后重试。 | 2m |
serialize-image-pulls | 一次拉一个 image。不建议更改。 | true |
streaming-connection-idle-timeout | 连接自动关闭之前,流连接可以空闲的最长时间。 0表示不做限制。 | 4h0m0s |
sync-frequency | 同步运行容器和config的时间间隔 | 1m0s |
system-cgroups / | cgroups的可选名称,用于放置/.中未包含在cgroup下的所有非内核进程。空表示没有容器。回滚参数需要重新启动。 | |
system-reserved | 一组ResourceName = ResourceQuantity对(例如cpu = 200m,memory = 500Mi,ephemeral-storage = 1Gi),表示为非kubernetes组件保留的资源。目前仅支持cpu和内存。有关更多详细信息,请参见http://kubernetes.io/docs/user-guide/compute-resources | none |
system-reserved-cgroup | 最高级cgroup的名称,用于管理通过'--system-reserved'参数保留计算资源的非kubernetes组件。Ex. '/system-reserved'。 | '' |
tls-cert-file | 包含HTTPS的默认x509证书的文件。 CA证书,如果有的话,在服务器证书之后连接。如果启用了HTTPS服务,但是 --tls-cert-file和--tls-private-key-file 未提供,则会为公共地址生成自签名证书和密钥,并将其保存到--cert-dir指定的目录中。 | |
tls-cipher-suites | 密码套件列表。如果省略,将使用默认的Go密码套件。 | |
tls-private-key-file | 与 --tls-cert-file 匹配的默认x509私钥。 | |
volume-stats-agg-period | 指定kubelet计算和缓存所有pod和卷的卷磁盘使用的时间间隔。 要禁用卷计算,请设置为0. | |
弃用参数 | =========================此参数是一个错误的cadvisor参数,它将遵循标准的CLI弃用时间被删除==================== | ===== |
application-metrics-count-limit | 每个容器要存储的最大应用程序metrics数, | 100 |
boot-id-file | 用于检查boot-id的文件列表,使用匹配的第一个 。 | /proc/sys/kernel/random/boot_id |
container-hints | 容器提示文件的位置 | /etc/cadvisor/container_hints.json |
containerd | 容器化端点 | unix:///var/run/containerd.sock |
docker | docker 端点 | unix:///var/run/docker.sock |
docker-env-metadata-whitelist | docker容器需要收集的环境变量键列表 | |
docker-only | 除根数据库之外,只报告给docker容器 | |
docker-tls | 使用TLS连接到docker | |
docker-tls-ca | 可信CA的路径 | ca.pem |
docker-tls-cert | 客户端证书的路径 | cert.pem |
docker-tls-key | 密钥路径 | key.pem |
enable-load-reader | 是否启用cpu load reader | |
event-storage-age-limit | 存储每种事件的最长时间。是以逗号分隔的键值列表,其中键是事件类型(例如:creation,oom)或“default”,值是持续时间。默认值适用于所有未指定的事件类型 | 0 |
event-storage-event-limit | 存储的每种事件最大数(每种类型)。 Value是以逗号分隔的键值列表,其中键是事件类型(例如:creation,oom)或“default”,值是整数。默认值适用于所有未指定的事件类 | 0 |
global-housekeeping-interval | 全局内存间隔 | 1m |
log-cadvisor-usage | 是否记录cAdvisor容器的使用情况 | |
machine-id-file | 检查machine-id的文件列表,使用匹配的第一个。 | /etc/machine-id,/var/lib/dbus/machine-id |
storage-driver-buffer-duration | 存储驱动程序中的写入将在此期间缓冲,并作为一个事务提交到非内存后端 | 1m0s |
storage-driver-db | 数据库名称 | cadvisor |
storage-driver-host | 数据库host:port | localhost:8086 |
storage-driver-password | 数据库密码 | root |
storage-driver-secure | 启用与数据库的安全连接 | |
storage-driver-table | 表名称 | stats |
storage-driver-user | 数据库用户名 | root |
全局参数 (同 API-SERVER) | ======================================================================================================== | ===== |
alsologtostderr | 日志信息同时输出到stderr及文件 | |
help | 帮助 | |
log-backtrace-at | 当日志命中行文件时:N,触发堆栈跟踪 | 0 |
log-dir | 如果非空,则在此目录中写入日志文件 | |
log-file | 如果非空,请使用此日志文件 | |
log-flush-frequency | 日志刷新之间的最大秒数 | 5s |
logtostderr | 日志信息输出到stderr 而不是文件 | true |
stderrthreshold | 等于或高于此阈值的日志发布到stderr | 2 |
v | 日志的日志级别 | |
version版本 | 打印版本信息并退出 | true |
vmodule | 模式列表=N文件筛选日志记录 |
kubelet 认证授权
参考 https://jimmysong.io/kubernetes-handbook/guide/kubelet-authentication-authorization.html
Kubelet 的 HTTPS 端点对外暴露了用于访问不同敏感程度数据的 API,并允许在节点或者容器内执行不同权限级别的操作。
认证成功后,kubelet会对请求授权。默认授权模式为 AlwaysAllow,允许所有请求。
认证方式1. 匿名访问
所有未被配置的其他身份验证方法拒绝的,对 kubelet 的 HTTPS 端点的请求将被视为匿名请求,并被授予 system:anonymous 用户名和 system:unauthenticated 组。
禁用匿名访问:启动 kubelet 时指定 --anonymous-auth=false
认证方式2. 启用 X509 客户端证书身份验证:
- 启动 kubelet 时指定 --client-ca-file 参数,提供 CA bundle 以验证客户端证书
- 启动 apiserver 时指定 --kubelet-client-certificate 和 --kubelet-client-key 参数
认证方式3. 启用 API bearer token(包括 service account token):
- 确保在 API server 中开启了 authentication.k8s.io/v1beta1 API 组。
- 启动 kubelet 时指定 --authentication-token-webhook, --kubeconfig
- Kubelet 在配置的 API server 上调用 TokenReview API 以确定来自 bearer token 的用户信息
授权方式: 细分访问 kubelet API,将授权委托给 API server:
- API server 中启用了 authorization.k8s.io/v1beta1 API 组, 指定了 --kubelet-client-certificate 和 --kubelet-client-key 参数并授权了如下属性:
verb=*, resource=nodes, subresource=proxy
verb=*, resource=nodes, subresource=stats
verb=*, resource=nodes, subresource=log
verb=*, resource=nodes, subresource=spec
verb=*, resource=nodes, subresource=metrics
- 启动 kubelet 时指定 --authorization-mode=Webhook、 --kubeconfig
kubelet 在配置的 API server 上调用 SubjectAccessReview API,以确定每个请求是否被授权 - kubelet 使用与 apiserver 相同的方法来授权 API 请求。