Kubelet 配置 (v1beta1)

    CredentialProviderConfig

    KubeletConfiguration

    KubeletConfiguration 中包含 Kubelet 的配置。

    字段描述
    apiVersion
    string
    kubelet.config.k8s.io/v1beta1
    kind
    string
    KubeletConfiguration
    enableServer [必需]
    bool

    enableServer 会启用 kubelet 的安全服务器。

    注意:kubelet 的不安全端口由 readOnlyPort 选项控制。

    默认值:true

    staticPodPath
    string

    staticPodPath 是指向要运行的本地(静态)Pod 的目录, 或者指向某个静态 Pod 文件的路径。

    默认值:””

    syncFrequency

    syncFrequency 是对运行中的容器和配置进行同步的最长周期。

    默认值:”1m”

    fileCheckFrequency
    meta/v1.Duration

    fileCheckFrequency 是对配置文件中新数据进行检查的时间间隔值。

    默认值:”20s”

    httpCheckFrequency

    httpCheckFrequency 是对 HTTP 服务器上新数据进行检查的时间间隔值。

    默认值:”20s”

    staticPodURL
    string

    staticPodURL 是访问要运行的静态 Pod 的 URL 地址。

    默认值:””

    staticPodURLHeader
    map[string][]string

    staticPodURLHeader是一个由字符串组成的映射表,其中包含的 HTTP 头部信息用于访问podURL

    默认值:nil

    address
    string

    address 是 kubelet 提供服务所用的 IP 地址(设置为 0.0.0.0 使用所有网络接口提供服务)。

    默认值:”0.0.0.0”

    port
    int32

    port 是 kubelet 用来提供服务所使用的端口号。 这一端口号必须介于 1 到 65535 之间,包含 1 和 65535。

    默认值:10250

    readOnlyPort
    int32

    readOnlyPort 是 kubelet 用来提供服务所使用的只读端口号。 此端口上的服务不支持身份认证或鉴权。这一端口号必须介于 1 到 65535 之间, 包含 1 和 65535。将此字段设置为 0 会禁用只读服务。

    默认值:0(禁用)

    tlsCertFile
    string

    tlsCertFile是包含 HTTPS 所需要的 x509 证书的文件 (如果有 CA 证书,会串接到服务器证书之后)。如果tlsCertFiletlsPrivateKeyFile都没有设置,则系统会为节点的公开地址生成自签名的证书和私钥, 并将其保存到 kubelet —cert-dir参数所指定的目录下。

    默认值:””

    tlsPrivateKeyFile
    string

    tlsPrivateKeyFile是一个包含与tlsCertFile 证书匹配的 X509 私钥的文件。

    默认值:””

    tlsCipherSuites
    []string

    tlsCipherSuites是一个字符串列表,其中包含服务器所接受的加密包名称。 列表中的每个值来自于tls包中定义的常数(https://golang.org/pkg/crypto/tls/#pkg-constants)。

    默认值:nil

    tlsMinVersion
    string

    tlsMinVersion给出所支持的最小 TLS 版本。 字段取值来自于tls包中的常数定义(

    默认值:””

    rotateCertificates
    bool

    rotateCertificates用来启用客户端证书轮换。kubelet 会调用 certificates.k8s.io API 来请求新的证书。需要有一个批复人批准证书签名请求。

    默认值:false

    serverTLSBootstrap
    bool

    serverTLSBootstrap用来启用服务器证书引导。系统不再使用自签名的服务证书, kubelet 会调用certificates.k8s.io API 来请求证书。 需要有一个批复人来批准证书签名请求(CSR)。 设置此字段时,RotateKubeletServerCertificate特性必须被启用。

    默认值:false

    authentication
    KubeletAuthentication

    authorization设置发送给 kubelet 服务器的请求是如何进行身份认证的。

    默认值:

    authorization

    authorization设置发送给 kubelet 服务器的请求是如何进行鉴权的。

    默认值:

    registryPullQPS
    int32

    registryPullQPS是每秒钟可以执行的镜像仓库拉取操作限值。 此值必须不能为负数。将其设置为 0 表示没有限值。

    默认值:5

    registryBurst
    int32

    registryBurst是突发性镜像拉取的上限值,允许镜像拉取临时上升到所指定数量, 不过仍然不超过registryPullQPS所设置的约束。此值必须是非负值。 只有registryPullQPS参数值大于 0 时才会使用此设置。

    默认值:10

    eventRecordQPS
    int32

    eventRecordQPS设置每秒钟可创建的事件个数上限。如果此值为 0, 则表示没有限制。此值不能设置为负数。

    默认值:5

    eventBurst
    int32

    eventBurst是突发性事件创建的上限值,允许事件创建临时上升到所指定数量, 不过仍然不超过eventRecordQPS所设置的约束。此值必须是非负值, 且只有eventRecordQPS > 0 时才会使用此设置。

    默认值:10

    enableDebuggingHandlers
    bool

    enableDebuggingHandlers启用服务器上用来访问日志、 在本地运行容器和命令的端点,包括execattachlogsportforward等功能。

    默认值:true

    enableContentionProfiling
    bool

    enableContentionProfiling用于启用锁竞争性能分析, 仅用于enableDebuggingHandlerstrue的场合。

    默认值:false

    healthzPort
    int32

    healthzPort是本地主机上提供healthz端点的端口 (设置值为 0 时表示禁止)。合法值介于 1 和 65535 之间。

    默认值:10248

    healthzBindAddress
    string

    healthzBindAddresshealthz服务器用来提供服务的 IP 地址。

    默认值:”127.0.0.1”

    oomScoreAdj
    int32

    oomScoreAdj 是为 kubelet 进程设置的oom-score-adj值。 所设置的取值要在 [-1000, 1000] 范围之内。

    默认值:-999

    clusterDomain
    string

    clusterDomain是集群的 DNS 域名。如果设置了此字段,kubelet 会配置所有容器,使之在搜索主机的搜索域的同时也搜索这里指定的 DNS 域。

    默认值:””

    clusterDNS
    []string

    clusterDNS是集群 DNS 服务器的 IP 地址的列表。 如果设置了,kubelet 将会配置所有容器使用这里的 IP 地址而不是宿主系统上的 DNS 服务器来完成 DNS 解析。

    默认值:nil

    streamingConnectionIdleTimeout
    meta/v1.Duration

    streamingConnectionIdleTimeout设置流式连接在被自动关闭之前可以空闲的最长时间。

    默认值:”4h”

    nodeStatusUpdateFrequency

    nodeStatusUpdateFrequency是 kubelet 计算节点状态的频率。 如果未启用节点租约特性,这一字段设置的也是 kubelet 向控制面投递节点状态的频率。

    注意:如果节点租约特性未被启用,更改此参数设置时要非常小心, 所设置的参数值必须与节点控制器的nodeMonitorGracePeriod协同。

    默认值:”10s”

    nodeStatusReportFrequency
    meta/v1.Duration

    nodeStatusReportFrequency是节点状态未发生变化时,kubelet 向控制面更新节点状态的频率。如果节点状态发生变化,则 kubelet 会忽略这一频率设置, 立即更新节点状态。

    此字段仅当启用了节点租约特性时才被使用。nodeStatusReportFrequency 的默认值是”5m”。不过,如果nodeStatusUpdateFrequency 被显式设置了,则nodeStatusReportFrequency的默认值会等于 nodeStatusUpdateFrequency值,这是为了实现向后兼容。

    默认值:”5m”

    nodeLeaseDurationSeconds
    int32

    nodeLeaseDurationSeconds是 kubelet 会在其对应的 Lease 对象上设置的时长值。 NodeLease让 kubelet 来在kube-node-lease名字空间中创建 按节点名称命名的租约并定期执行续约操作,并通过这种机制来了解节点健康状况。

    如果租约过期,则节点可被视作不健康。根据 KEP-0009 约定,目前的租约每 10 秒钟续约一次。 在将来,租约的续约时间间隔可能会根据租约的时长来设置。

    此字段的取值必须大于零。

    默认值:40

    imageMinimumGCAge

    imageMinimumGCAge是对未使用镜像进行垃圾搜集之前允许其存在的时长。

    默认值:”2m”

    imageGCHighThresholdPercent
    int32

    imageGCHighThresholdPercent所给的是镜像的磁盘用量百分数, 一旦镜像用量超过此阈值,则镜像垃圾收集会一直运行。百分比是用这里的值除以 100 得到的,所以此字段取值必须介于 0 和 100 之间,包括 0 和 100。如果设置了此字段, 则取值必须大于imageGCLowThresholdPercent取值。

    默认值:85

    imageGCLowThresholdPercent
    int32

    imageGCLowThresholdPercent所给的是镜像的磁盘用量百分数, 镜像用量低于此阈值时不会执行镜像垃圾收集操作。垃圾收集操作也将此作为最低磁盘用量边界。 百分比是用这里的值除以 100 得到的,所以此字段取值必须介于 0 和 100 之间,包括 0 和 100。 如果设置了此字段,则取值必须小于imageGCHighThresholdPercent取值。

    默认值:80

    volumeStatsAggPeriod
    meta/v1.Duration

    volumeStatsAggPeriod是计算和缓存所有 Pod 磁盘用量的频率。

    默认值:”1m”

    kubeletCgroups
    string

    kubeletCgroups是用来隔离 kubelet 的控制组(CGroup)的绝对名称。

    默认值:””

    systemCgroups
    string

    systemCgroups是用来放置那些未被容器化的、非内核的进程的控制组 (CGroup)的绝对名称。设置为空字符串表示没有这类容器。回滚此字段设置需要重启节点。 当此字段非空时,必须设置cgroupRoot字段。

    默认值:””

    cgroupRoot
    string

    cgroupRoot是用来运行 Pod 的控制组(CGroup)。 容器运行时会尽可能处理此字段的设置值。

    cgroupsPerQOS
    bool

    cgroupsPerQOS用来启用基于 QoS 的控制组(CGroup)层次结构: 顶层的控制组用于不同 QoS 类,所有BurstableBestEffort Pod 都会被放置到对应的顶级 QoS 控制组下。

    默认值:true

    cgroupDriver
    string

    cgroupDriver是 kubelet 用来操控宿主系统上控制组(CGroup) 的驱动程序(cgroupfs 或 systemd)。

    默认值:”cgroupfs”

    cpuManagerPolicy
    string

    cpuManagerPolicy是要使用的策略名称。需要启用 特性门控。

    默认值:”None”

    cpuManagerPolicyOptions
    map[string]string

    cpuManagerPolicyOptions是一组key=value键值映射, 容许通过额外的选项来精细调整 CPU 管理器策略的行为。需要CPUManagerCPUManagerPolicyOptions两个特性门控都被启用。

    默认值:nil

    cpuManagerReconcilePeriod

    cpuManagerReconcilePeriod是 CPU 管理器的协调周期时长。 需要启用CPUManager特性门控。

    默认值:”10s”

    memoryManagerPolicy
    string

    memoryManagerPolicy是内存管理器要使用的策略的名称。 要求启用MemoryManager特性门控。

    默认值:”none”

    topologyManagerPolicy
    string

    topologyManagerPolicy是要使用的拓扑管理器策略名称。合法值包括:

    • restricted:kubelet 仅接受在所请求资源上实现最佳 NUMA 对齐的 Pod。
    • best-effort:kubelet 会优选在 CPU 和设备资源上实现 NUMA 对齐的 Pod。
    • none:kubelet 不了解 Pod CPU 和设备资源 NUMA 对齐需求。
    • single-numa-node:kubelet 仅允许在 CPU 和设备资源上对齐到同一 NUMA 节点的 Pod。

    如果策略不是 “none”,则要求启用TopologyManager特性门控。

    默认值:”none”

    topologyManagerScope
    string
    • container:拓扑策略是按每个容器来实施的。
    • pod:拓扑策略是按每个 Pod 来实施的。

    “pod” 范围要求启用TopologyManager特性门控。

    默认值:”container”

    qosReserved
    map[string]string

    qosReserved是一组从资源名称到百分比值的映射,用来为Guaranteed QoS 类型的负载预留供其独占使用的资源百分比。目前支持的资源为:”memory”。 需要启用QOSReserved特性门控。

    默认值:nil

    runtimeRequestTimeout
    meta/v1.Duration

    runtimeRequestTimeout用来设置除长期运行的请求(pulllogsexecattach)之外所有运行时请求的超时时长。

    默认值:”2m”

    hairpinMode
    string

    hairpinMode设置 kubelet 如何为发夹模式数据包配置容器网桥。 设置此字段可以让 Service 中的端点在尝试访问自身 Service 时将服务请求路由的自身。 可选值有:

    • “promiscuous-bridge”:将容器网桥设置为混杂模式。
    • “hairpin-veth”:在容器的 veth 接口上设置发夹模式标记。
    • “none”:什么也不做。

    一般而言,用户必须设置—hairpin-mode=hairpin-veth才能实现发夹模式的网络地址转译 (NAT),因为混杂模式的网桥要求存在一个名为cbr0的容器网桥。

    默认值:”promiscuous-bridge”

    maxPods
    int32

    maxPods是此 kubelet 上课运行的 Pod 个数上限。此值必须为非负整数。

    默认值:110

    podCIDR
    string

    podCIDR是用来设置 Pod IP 地址的 CIDR 值,仅用于独立部署模式。 运行于集群模式时,这一数值会从控制面获得。

    默认值:””

    podPidsLimit
    int64

    podPidsLimit是每个 Pod 中可使用的 PID 个数上限。

    默认值:-1

    resolvConf
    string

    resolvConf是一个域名解析配置文件,用作容器 DNS 解析配置的基础。

    如果此值设置为空字符串,则会覆盖 DNS 解析的默认配置, 本质上相当于禁用了 DNS 查询。

    默认值:”/etc/resolv.conf”

    runOnce
    bool

    runOnce字段被设置时,kubelet 会咨询 API 服务器一次并获得 Pod 列表, 运行在静态 Pod 文件中指定的 Pod 及这里所获得的 Pod,然后退出。

    默认值:false

    cpuCFSQuota
    bool

    cpuCFSQuota允许为设置了 CPU 限制的容器实施 CPU CFS 配额约束。

    默认值:true

    cpuCFSQuotaPeriod

    cpuCFSQuotaPeriod设置 CPU CFS 配额周期值,cpu.cfs_period_us。 此值需要介于 1 微秒和 1 秒之间,包含 1 微秒和 1 秒。 此功能要求启用CustomCPUCFSQuotaPeriod特性门控被启用。

    默认值:”100ms”

    nodeStatusMaxImages
    int32

    nodeStatusMaxImages限制Node.status.images中报告的镜像数量。 此值必须大于 -2。

    注意:如果设置为 -1,则不会对镜像数量做限制;如果设置为 0,则不会返回任何镜像。

    默认值:50

    maxOpenFiles
    int64

    maxOpenFiles是 kubelet 进程可以打开的文件个数。此值必须不能为负数。

    默认值:1000000

    contentType
    string

    contentType是向 API 服务器发送请求时使用的内容类型。

    默认值:”application/vnd.kubernetes.protobuf”

    kubeAPIQPS
    int32

    kubeAPIQPS设置与 Kubernetes API 服务器通信时要使用的 QPS(每秒查询数)。

    默认值:5

    kubeAPIBurst
    int32

    kubeAPIBurst设置与 Kubernetes API 服务器通信时突发的流量级别。 此字段取值不可以是负数。

    默认值:10

    serializeImagePulls
    bool

    serializeImagePulls被启用时会通知 kubelet 每次仅拉取一个镜像。 我们建议不要在所运行的 docker 守护进程版本低于 1.9、使用 aufs 存储后端的节点上更改默认值。详细信息可参见 Issue #10959。

    默认值:true

    evictionHard
    map[string]string

    evictionHard是一个映射,是从信号名称到定义硬性驱逐阈值的映射。 例如:{“memory.available”: “300Mi”}。 如果希望显式地禁用,可以在任意资源上将其阈值设置为 0% 或 100%。

    默认值:

    evictionSoft
    map[string]string

    evictionSoft是一个映射,是从信号名称到定义软性驱逐阈值的映射。 例如:{“memory.available”: “300Mi”}

    默认值:nil

    evictionSoftGracePeriod
    map[string]string

    evictionSoftGracePeriod是一个映射,是从信号名称到每个软性驱逐信号的宽限期限。 例如:{“memory.available”: “30s”}

    默认值:nil

    evictionPressureTransitionPeriod
    meta/v1.Duration

    evictionPressureTransitionPeriod设置 kubelet 离开驱逐压力状况之前必须要等待的时长。

    默认值:”5m”

    evictionMaxPodGracePeriod
    int32

    evictionMaxPodGracePeriod是指达到软性逐出阈值而引起 Pod 终止时, 可以赋予的宽限期限最大值(按秒计)。这个值本质上限制了软性逐出事件发生时, Pod 可以获得的terminationGracePeriodSeconds

    注意:由于 Issue #64530 的原因,系统中存在一个缺陷,即此处所设置的值会在软性逐出时覆盖 Pod 的宽限期设置,从而有可能增加 Pod 上原本设置的宽限期限时长。 这个缺陷会在未来版本中修复。

    默认值:0

    evictionMinimumReclaim
    map[string]string

    evictionMinimumReclaim是一个映射,定义信号名称与最小回收量数值之间的关系。 最小回收量指的是资源压力较大而执行 Pod 驱逐操作时,kubelet 对给定资源的最小回收量。 例如:{“imagefs.available”: “2Gi”}

    默认值:nil

    podsPerCore
    int32

    podsPerCore设置的是每个核上 Pod 个数上限。此值不能超过maxPods。 所设值必须是非负整数。如果设置为 0,则意味着对 Pod 个数没有限制。

    默认值:0

    enableControllerAttachDetach
    bool

    enableControllerAttachDetach用来允许 Attach/Detach 控制器管理调度到本节点的卷的挂接(attachment)和解除挂接(detachement), 并且禁止 kubelet 执行任何 attach/detach 操作。

    注意:kubelet 不支持挂接 CSI 卷和解除挂接, 因此对于该用例,此选项必须为 true。

    默认值:true

    protectKernelDefaults
    bool

    protectKernelDefaults设置为true时,会令 kubelet 在发现内核参数与预期不符时出错退出。若此字段设置为false,则 kubelet 会尝试更改内核参数以满足其预期。

    默认值:false

    makeIPTablesUtilChains
    bool

    makeIPTablesUtilChains设置为true时,相当于允许 kubelet 确保一组 iptables 规则存在于宿主机上。这些规则会为不同的组件(例如 kube-proxy) 提供工具性质的规则。它们是基于iptablesMasqueradeBitiptablesDropBit 来创建的。

    默认值:true

    iptablesMasqueradeBit
    int32

    iptablesMasqueradeBit是 iptables fwmark 空间中用来为 SNAT 作标记的位。此值必须介于[0, 31]区间,必须与其他标记位不同。

    警告:请确保此值设置与 kube-proxy 中对应的参数设置取值相同。

    默认值:14

    iptablesDropBit
    int32

    iptablesDropBit是 iptables fwmark 空间中用来标记丢弃包的数据位。 此值必须介于[0, 31]区间,必须与其他标记位不同。

    默认值:15

    featureGates
    map[string]bool

    featureGates是一个从功能特性名称到布尔值的映射,用来启用或禁用实验性的功能。 此字段可逐条更改文件 “k8s.io/kubernetes/pkg/features/kube_features.go” 中所给的内置默认值。

    默认值:nil

    failSwapOn
    bool

    failSwapOn通知 kubelet 在节点上启用交换分区时拒绝启动。

    默认值:true

    memorySwap

    memorySwap配置容器负载可用的交换内存。

    containerLogMaxSize
    string

    containerLogMaxSize是定义容器日志文件被轮转之前可以到达的最大尺寸。 例如:”5Mi” 或 “256Ki”。

    默认值:”10Mi”

    containerLogMaxFiles
    int32

    containerLogMaxFiles设置每个容器可以存在的日志文件个数上限。

    默认值:”5”

    configMapAndSecretChangeDetectionStrategy
    ResourceChangeDetectionStrategy

    configMapAndSecretChangeDetectionStrategy是 ConfigMap 和 Secret 管理器的运行模式。合法值包括:

    • Get:kubelet 从 API 服务器直接取回必要的对象;
    • Cache:kubelet 使用 TTL 缓存来管理来自 API 服务器的对象;
    • Watch:kubelet 使用 watch 操作来观察所关心的对象的变更。

    默认值:”Watch”

    systemReserved
    map[string]string

    systemReserved是一组资源名称=资源数量对, 用来描述为非 Kubernetes 组件预留的资源(例如:’cpu=200m,memory=150G’)。

    目前仅支持 CPU 和内存。更多细节可参见 。

    默认值:Nil

    kubeReserved
    map[string]string

    kubeReserved是一组资源名称=资源数量对, 用来描述为 Kubernetes 系统组件预留的资源(例如:’cpu=200m,memory=150G’)。 目前支持 CPU、内存和根文件系统的本地存储。 更多细节可参见 https://kubernetes.io/zh/docs/concepts/configuration/manage-resources-containers/。

    默认值:Nil

    reservedSystemCPUs [必需]
    string

    reservedSystemCPUs选项设置为宿主级系统线程和 Kubernetes 相关线程所预留的 CPU 列表。此字段提供的是一种“静态”的 CPU 列表,而不是像 systemReservedkubeReserved所提供的“动态”列表。 此选项不支持systemReservedCgroupkubeReservedCgroup

    showHiddenMetricsForVersion
    string

    showHiddenMetricsForVersion是你希望显示隐藏度量值的上一版本。 只有上一个次版本是有意义的,其他值都是不允许的。 字段值的格式为<major>.<minor>,例如:1.16。 此格式的目的是为了确保在下一个版本中有新的度量值被隐藏时,你有机会注意到这类变化, 而不是当这些度量值在其后的版本中彻底去除时来不及应对。

    默认值:””

    systemReservedCgroup
    string

    systemReservedCgroup帮助 kubelet 识别用来为 OS 系统级守护进程实施 systemReserved计算资源预留时使用的顶级控制组(CGroup)。 参考 以了解详细信息。

    默认值:””

    kubeReservedCgroup
    string

    kubeReservedCgroup 帮助 kubelet 识别用来为 Kubernetes 节点系统级守护进程实施 kubeReserved计算资源预留时使用的顶级控制组(CGroup)。 参阅 Node Allocatable 了解进一步的信息。

    默认值:””

    enforceNodeAllocatable
    []string

    此标志设置 kubelet 需要执行的各类节点可分配资源策略。此字段接受一组选项列表。 可接受的选项有nonepodssystem-reservedkube-reserved

    如果设置了none,则字段值中不可以包含其他选项。

    如果列表中包含,则必须设置systemReservedCgroup

    如果列表中包含kube-reserved,则必须设置kubeReservedCgroup

    这个字段只有在cgroupsPerQOS被设置为true才被支持。

    参阅 了解进一步的信息。

    默认值:[“pods”]

    allowedUnsafeSysctls
    []string

    用逗号分隔的白名单列表,其中包含不安全的 sysctl 或 sysctl 模式(以结尾)。

    不安全的 sysctl 组有 kernel.shm∗kernel.msg∗kernel.semfs.mqueue.∗net.∗

    例如:”kernel.msg∗,net.ipv4.route.min_pmtu

    默认值:[]

    volumePluginDir
    string

    volumePluginDir是用来搜索其他第三方卷插件的目录的路径。

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

    providerID
    string

    providerID字段被设置时,指定的是一个外部提供者(即云驱动)实例的唯一 ID, 该提供者可用来唯一性地标识特定节点。

    kernelMemcgNotification
    bool

    kernelMemcgNotification字段如果被设置了,会告知 kubelet 集成内核的 memcg 通知机制来确定是否超出内存逐出阈值,而不是使用轮询机制来判定。

    默认值:false

    logging [必需]
    LoggingConfiguration

    logging设置日志机制选项。更多的详细信息科参阅 。

    默认值:

    enableSystemLogHandler
    bool

    enableSystemLogHandler用来启用通过 Web 接口 host:port/logs/ 访问系统日志的能力。

    默认值:true

    shutdownGracePeriod
    meta/v1.Duration

    shutdownGracePeriod设置节点关闭期间,节点自身需要延迟以及为 Pod 提供的宽限期限的总时长。

    默认值:”0s”

    shutdownGracePeriodCriticalPods

    shutdownGracePeriodCriticalPods设置节点关闭期间用来终止关键性 Pod 的时长。此时长要短于shutdownGracePeriod。 例如,如果shutdownGracePeriod=30sshutdownGracePeriodCriticalPods=10s, 在节点关闭期间,前 20 秒钟被预留用来体面终止普通 Pod,后 10 秒钟用来终止关键 Pod。

    默认值:”0s”

    shutdownGracePeriodByPodPriority
    []ShutdownGracePeriodByPodPriority

    shutdownGracePeriodByPodPriority设置基于 Pod 相关的优先级类值而确定的体面关闭时间。当 kubelet 收到关闭请求的时候,kubelet 会针对节点上运行的所有 Pod 发起关闭操作,这些关闭操作会根据 Pod 的优先级确定其宽限期限, 之后 kubelet 等待所有 Pod 退出。

    数组中的每个表项代表的是节点关闭时 Pod 的体面终止时间;这里的 Pod 的优先级类介于列表中当前优先级类值和下一个表项的优先级类值之间。

    例如,要赋予关键 Pod 10 秒钟时间来关闭,赋予优先级>=10000 Pod 20 秒钟时间来关闭, 赋予其余的 Pod 30 秒钟来关闭。

    shutdownGracePeriodByPodPriority:

    • priority: 2000000000 shutdownGracePeriodSeconds: 10
    • priority: 10000 shutdownGracePeriodSeconds: 20
    • priority: 0 shutdownGracePeriodSeconds: 30

    在退出之前,kubelet 要等待的时间上限为节点上所有优先级类的 shutdownGracePeriodSeconds的最大值。 当所有 Pod 都退出或者到达其宽限期限时,kubelet 会释放关闭防护锁。 此功能要求GracefulNodeShutdown特性门控被启用。

    shutdownGracePeriodshutdownGracePeriodCriticalPods 被设置时,此配置字段必须为空。

    默认值:nil

    reservedMemory

    reservedMemory给出一个逗号分隔的列表,为 NUMA 节点预留内存。

    此参数仅在内存管理器功能特性语境下有意义。内存管理器不会为容器负载分配预留内存。 例如,如果你的 NUMA0 节点内存为 10Gi,reservedMemory设置为在 NUMA0 上预留 1Gi 内存,内存管理器会认为其上只有 9Gi 内存可供分配。

    你可以设置不同数量的 NUMA 节点和内存类型。你也可以完全忽略这个字段,不过你要清楚, 所有 NUMA 节点上预留内存的总量要等于通过 node allocatable 设置的内存量。

    如果至少有一个节点可分配参数设置值非零,则你需要设置至少一个 NUMA 节点。

    此外,避免如下设置:

    1. 在配置值中存在重复项,NUMA 节点和内存类型相同,但配置值不同,这是不允许的。
    2. 为任何内存类型设置限制值为零。
    3. NUMA 节点 ID 在宿主系统上不存在。/li>
    4. memoryhugepages-<size>之外的内存类型。

    默认值:nil

    enableProfilingHandler
    bool

    enableProfilingHandler启用通过 host:port/debug/pprof/ 接口来执行性能分析。

    默认值:true

    enableDebugFlagsHandler
    bool

    enableDebugFlagsHandler启用通过 host:port/debug/flags/v Web 接口上的标志设置。

    默认值:true

    seccompDefault
    bool

    seccompDefault字段允许针对所有负载将RuntimeDefault 设置为默认的 seccomp 配置。这一设置要求对应的SeccompDefault特性门控被启用。

    默认值:false

    memoryThrottlingFactor
    float64

    当设置 cgroupv2 memory.high以实施MemoryQoS特性时, memoryThrottlingFactor用来作为内存限制或节点可分配内存的系数。

    减小此系数会为容器控制组设置较低的 high 限制值,从而增大回收压力;反之, 增大此系数会降低回收压力。更多细节参见

    默认值:0.8

    registerWithTaints
    []core/v1.Taint

    registerWithTaints是一个由污点组成的数组,包含 kubelet 注册自身时要向节点对象添加的污点。只有registerNodetrue 时才会起作用,并且仅在节点的最初注册时起作用。

    默认值:nil

    registerNode
    bool

    registerNode启用向 API 服务器的自动注册。

    默认值:true

    SerializedNodeConfigSource

    SerializedNodeConfigSource 允许对 v1.NodeConfigSource 执行序列化操作。 这一类型供 kubelet 内部使用,以便跟踪动态配置的检查点。 此资源存在于 kubeletconfig API 组是因为它被当做是对 kubelet 的一种版本化输入。

    字段描述
    apiVersion
    string
    kubelet.config.k8s.io/v1beta1
    kind
    string
    SerializedNodeConfigSource
    source
    core/v1.NodeConfigSource

    source是我们执行序列化的数据源。

    CredentialProvider

    出现在:

    CredentialProvider 代表的是要被 kubelet 调用的一个 exec 插件。 这一插件只会在所拉取的镜像与该插件所处理的镜像匹配时才会被调用(参见 matchImages)。

    字段描述
    name [必需]
    string

    name 是凭据提供者的名称(必需)。此名称必须与 kubelet 所看到的提供者可执行文件的名称匹配。可执行文件必须位于 kubelet 的 bin 目录(通过 —image-credential-provider-bin-dir 设置)下。

    matchImages [必需]
    []string

    matchImages 是一个必须设置的字符串列表,用来匹配镜像以便确定是否要调用此提供者。 如果字符串之一与 kubelet 所请求的镜像匹配,则此插件会被调用并给予提供凭证的机会。 镜像应该包含镜像库域名和 URL 路径。

    matchImages 中的每个条目都是一个模式字符串,其中可以包含端口号和路径。 域名部分可以包含统配符,但端口或路径部分不可以。通配符可以用作子域名,例如 ‘.k8s.io’ 或 ‘k8s..io’,以及顶级域名,如 ‘k8s.‘。

    对类似 ‘app.k8s.io’ 这类部分子域名的匹配也是支持的。 每个通配符只能用来匹配一个子域名段,所以 ‘.io’ 不会匹配 ‘.k8s.io’。

    镜像与 matchImages 之间存在匹配时,以下条件都要满足:

    • 二者均包含相同个数的域名部分,并且每个域名部分都对应匹配;
    • matchImages 条目中的 URL 路径部分必须是目标镜像的 URL 路径的前缀;
    • 如果 matchImages 条目中包含端口号,则端口号也必须与镜像端口号匹配。

    matchImages 的一些示例如下:

    • *.azurecr.io
    • gcr.io
    • ..registry.io
    • registry.io:8080/path
    defaultCacheDuration [必需]

    defaultCacheDuration 是插件在内存中缓存凭据的默认时长, 在插件响应中没有给出缓存时长时,使用这里设置的值。此字段是必需的。

    apiVersion [必需]
    string

    要求 exec 插件 CredentialProviderRequest 请求的输入版本。 所返回的 CredentialProviderResponse 必须使用与输入相同的编码版本。当前支持的值有:

    • credentialprovider.kubelet.k8s.io/v1beta1
    args
    []string

    在执行插件可执行文件时要传递给命令的参数。

    env
    []ExecEnvVar

    env 定义要提供给插件进程的额外的环境变量。 这些环境变量会与主机上的其他环境变量以及 client-go 所使用的环境变量组合起来, 一起传递给插件。

    ExecEnvVar

    出现在:

    ExecEnvVar 用来在执行基于 exec 的凭据插件时设置环境变量。

    字段描述
    name [必需]
    string
    无描述
    value [必需]
    string
    无描述

    KubeletAnonymousAuthentication

    出现在:

    出现在:

    字段描述
    x509

    x509包含与 x509 客户端证书认证相关的配置。

    webhook
    KubeletWebhookAuthentication

    webhook包含与 Webhook 持有者令牌认证相关的配置。

    anonymous

    anonymous包含与匿名身份认证相关的配置信息。

    KubeletAuthorization

    出现在:

    字段描述
    mode
    KubeletAuthorizationMode

    mode>是应用到 kubelet 服务器所接收到的请求上的鉴权模式。合法值包括 AlwaysAllowWebhook。 Webhook 模式使用 SubjectAccessReview API 来确定鉴权。

    webhook

    webhook包含与 Webhook 鉴权相关的配置信息。

    KubeletAuthorizationMode

    string 类型的别名)

    出现在:

    KubeletWebhookAuthentication

    出现在:

    字段描述
    enabled
    bool

    enabled允许使用tokenreviews.authentication.k8s.io API 来提供持有者令牌身份认证。

    cacheTTL
    meta/v1.Duration

    cacheTTL启用对身份认证结果的缓存。

    KubeletWebhookAuthorization

    出现在:

    字段描述
    cacheAuthorizedTTL

    cacheAuthorizedTTL设置来自 Webhook 鉴权组件的 ‘authorized’ 响应的缓存时长。

    cacheUnauthorizedTTL
    meta/v1.Duration

    cacheUnauthorizedTTL设置来自 Webhook 鉴权组件的 ‘unauthorized’ 响应的缓存时长。

    KubeletX509Authentication

    出现在:

    MemoryReservation

    出现在:

    MemoryReservation 为每个 NUMA 节点设置不同类型的内存预留。

    字段描述
    numaNode [必需]
    int32

    NUMA 节点

    limits [必需]

    资源列表

    出现在:

    字段描述
    swapBehavior
    string

    swapBehavior配置容器负载可以使用的交换内存。可以是

    • “”、”LimitedSwap”:工作负载的内存和交换分区总用量不能超过 Pod 的内存限制;
    • “UnlimitedSwap”:工作负载可以无限制地使用交换分区,上限是可分配的约束。

    ResourceChangeDetectionStrategy

    string 类型的别名)

    出现在:

    ResourceChangeDetectionStrategy 给出的是内部管理器(ConfigMap、Secret) 用来发现对象变化的模式。

    ShutdownGracePeriodByPodPriority

    出现在:

    ShutdownGracePeriodByPodPriority 基于 Pod 关联的优先级类数值来为其设置关闭宽限时间。

    字段描述
    priority [必需]
    int32

    priority是与关闭宽限期限相关联的优先级值。

    shutdownGracePeriodSeconds [必需]
    int64

    shutdownGracePeriodSeconds是按秒数给出的关闭宽限期限。

    FormatOptions

    出现在:

    FormatOptions 包含为不同日志格式提供的选项。

    字段描述
    json [必需]
    JSONOptions

    [试验功能] json 包含为 “json” 日志格式提供的选项。

    JSONOptions

    出现在:

    JSONOptions 包含为 “json” 日志格式提供的选项。

    LoggingConfiguration

    出现在:

    LoggingConfiguration 包含日志选项。 参考 以了解更多信息。

    字段描述
    format [必需]
    string

    format 设置日志消息的结构。默认的格式取值为 text

    flushFrequency [必需]
    time.Duration

    对日志进行清洗的最大间隔纳秒数(例如,1s = 1000000000)。 如果所选的日志后端在写入日志消息时不提供缓存,则此配置会被忽略。

    verbosity [必需]
    uint32

    verbosity 用来确定日志消息记录的详细程度阈值。默认值为 0, 意味着仅记录最重要的消息。数值越大,额外的消息越多。出错消息总是会被记录下来。

    vmodule [必需]

    vmodule 会在单个文件层面重载 verbosity 阈值的设置。 这一选项仅支持 “text” 日志格式。

    options [必需]
    FormatOptions

    [试验功能] options 中包含特定于不同日志格式的配置参数。 只有针对所选格式的选项会被使用,但是合法性检查时会查看所有选项配置。

    []k8s.io/component-base/config/v1alpha1.VModuleItem 类型的别名)

    出现在:

    VModuleConfiguration 是一个集合,其中包含一个个文件名(或文件名模式) 及其对应的详细程度阈值。