配置 API
- 1: Client Authentication (v1beta1)
- 2: kube-apiserver Audit 配置 (v1)
- 3: kube-apiserver 加密配置 (v1)
- 4: kube-apiserver 配置 (v1)
- 5: kube-apiserver 配置 (v1alpha1)
- 6: kube-proxy 配置 (v1alpha1)
- 7: kube-scheduler 配置 (v1beta2)
- 8: kube-scheduler 配置 (v1beta3)
- 9: kubeadm 配置 (v1beta2)
- 10: kubeadm 配置 (v1beta3)
- 11: Kubelet Configuration (v1beta1)
- 12: Kubelet 配置 (v1alpha1)
- 13: WebhookAdmission 配置 (v1)
- 14: 客户端身份认证(Client Authentication) (v1)
1 - Client Authentication (v1beta1)
Resource Types
ExecCredential
ExecCredential is used by exec-based plugins to communicate credentials to HTTP transports.
Field | Description |
---|---|
apiVersion string | client.authentication.k8s.io/v1beta1 |
kind string | ExecCredential |
spec [Required]ExecCredentialSpec
|
Spec holds information passed to the plugin by the transport. |
status ExecCredentialStatus
|
Status is filled in by the plugin and holds the credentials that the transport should use to contact the API. |
Cluster
Appears in:
Cluster contains information to allow an exec plugin to communicate with the kubernetes cluster being authenticated to.
To ensure that this struct contains everything someone would need to communicate with a kubernetes cluster (just like they would via a kubeconfig), the fields should shadow "k8s.io/client-go/tools/clientcmd/api/v1".Cluster, with the exception of CertificateAuthority, since CA data will always be passed to the plugin as bytes.
Field | Description |
---|---|
server [Required]string
|
Server is the address of the kubernetes cluster (https://hostname:port). |
tls-server-name string
|
TLSServerName is passed to the server for SNI and is used in the client to check server certificates against. If ServerName is empty, the hostname used to contact the server is used. |
insecure-skip-tls-verify bool
|
InsecureSkipTLSVerify skips the validity check for the server's certificate. This will make your HTTPS connections insecure. |
certificate-authority-data []byte
|
CAData contains PEM-encoded certificate authority certificates. If empty, system roots should be used. |
proxy-url string
|
ProxyURL is the URL to the proxy to be used for all requests to this cluster. |
config k8s.io/apimachinery/pkg/runtime.RawExtension
|
Config holds additional config data that is specific to the exec
plugin with regards to the cluster being authenticated to.
This data is sourced from the clientcmd Cluster object's extensions[client.authentication.k8s.io/exec] field: clusters:
In some environments, the user config may be exactly the same across many clusters (i.e. call this exec plugin) minus some details that are specific to each cluster such as the audience. This field allows the per cluster config to be directly specified with the cluster info. Using this field to store secret data is not recommended as one of the prime benefits of exec plugins is that no secrets need to be stored directly in the kubeconfig. |
ExecCredentialSpec
Appears in:
ExecCredentialSpec holds request and runtime specific information provided by the transport.
Field | Description |
---|---|
cluster Cluster
|
Cluster contains information to allow an exec plugin to communicate with the kubernetes cluster being authenticated to. Note that Cluster is non-nil only when provideClusterInfo is set to true in the exec provider config (i.e., ExecConfig.ProvideClusterInfo). |
ExecCredentialStatus
Appears in:
ExecCredentialStatus holds credentials for the transport to use.
Token and ClientKeyData are sensitive fields. This data should only be transmitted in-memory between client and exec plugin process. Exec plugin itself should at least be protected via file permissions.
Field | Description |
---|---|
expirationTimestamp meta/v1.Time
|
ExpirationTimestamp indicates a time when the provided credentials expire. |
token [Required]string
|
Token is a bearer token used by the client for request authentication. |
clientCertificateData [Required]string
|
PEM-encoded client TLS certificates (including intermediates, if any). |
clientKeyData [Required]string
|
PEM-encoded private key for the above certificate. |
2 - kube-apiserver Audit 配置 (v1)
资源类型
Event
出现在:
Event 结构包含可出现在 API 审计日志中的所有信息。
字段 | 描述 |
---|---|
apiVersion string | audit.k8s.io/v1 |
kind string | Event |
level [必需]Level
|
生成事件所对应的审计级别。 |
auditID [必需]k8s.io/apimachinery/pkg/types.UID
|
为每个请求所生成的唯一审计 ID。 |
stage [必需]Stage
|
生成此事件时请求的处理阶段。 |
requestURI [必需]string
|
requestURI 是客户端发送到服务器端的请求 URI。 |
verb [必需]string
|
verb 是与请求对应的 Kubernetes 动词。对于非资源请求,此字段为 HTTP 方法的小写形式。 |
user [必需]authentication/v1.UserInfo
|
关于认证用户的信息。 |
impersonatedUser authentication/v1.UserInfo
|
关于所伪装(impersonated)的用户的信息。 |
sourceIPs []string
|
发起请求和中间代理的源 IP 地址。 |
userAgent string
|
userAgent 中记录客户端所报告的用户代理(User Agent)字符串。 注意 userAgent 信息是由客户端提供的,一定不要信任。 |
objectRef ObjectReference
|
此请求所指向的对象引用。对于 List 类型的请求或者非资源请求,此字段可忽略。 |
responseStatus meta/v1.Status
|
响应的状态,当 responseObject 不是 Status 类型时被赋值。 对于成功的请求,此字段仅包含 code 和 statusSuccess。 对于非 Status 类型的错误响应,此字段会被自动赋值为出错信息。 |
requestObject k8s.io/apimachinery/pkg/runtime.Unknown
|
来自请求的 API 对象,以 JSON 格式呈现。requestObject 在请求中按原样记录 (可能会采用 JSON 重新编码),之后会进入版本转换、默认值填充、准入控制以及 配置信息合并等阶段。此对象为外部版本化的对象类型,甚至其自身可能并不是一个 合法的对象。对于非资源请求,此字段被忽略。 只有当审计级别为 Request 或更高的时候才会记录。 |
responseObject k8s.io/apimachinery/pkg/runtime.Unknown
|
响应中包含的 API 对象,以 JSON 格式呈现。requestObject 是在被转换为外部类型 并序列化为 JSON 格式之后才被记录的。 对于非资源请求,此字段会被忽略。 只有审计级别为 Response 时才会记录。 |
requestReceivedTimestamp meta/v1.MicroTime
|
请求到达 API 服务器时的时间。 |
stageTimestamp meta/v1.MicroTime
|
请求到达当前审计阶段时的时间。 |
annotations map[string]string
|
annotations 是一个无结构的键-值映射,其中保存的是一个审计事件。 该事件可以由请求处理链路上的插件来设置,包括身份认证插件、鉴权插件以及 准入控制插件等。 注意这些注解是针对审计事件本身的,与所提交的对象中的 metadata.annotations 之间不存在对应关系。 映射中的键名应该唯一性地标识生成该事件的组件,从而避免名字上的冲突 (例如 podsecuritypolicy.admission.k8s.io/policy)。 映射中的键值应该比较简洁。 当审计级别为 Metadata 时会包含 annotations 字段。 |
EventList
EventList 是审计事件(Event)的列表。
字段 | 描述 |
---|---|
apiVersion string | audit.k8s.io/v1 |
kind string | EventList |
metadata meta/v1.ListMeta
|
列表结构元数据 |
items [必需][]Event
|
事件对象列表 |
Policy
出现在:
Policy 定义的是审计日志的配置以及不同类型请求的日志记录规则。
字段 | 描述 |
---|---|
apiVersion string | audit.k8s.io/v1 |
kind string | Policy |
metadata meta/v1.ObjectMeta
|
包含 metadata 字段是为了便于与 API 基础设施之间实现互操作。
参考 Kubernetes API 文档了解 metadata 字段的详细信息。
|
rules [必需][]PolicyRule
|
字段 rules 设置请求要被记录的审计级别(level)。 每个请求可能会与多条规则相匹配;发生这种状况时遵从第一条匹配规则。 默认的审计级别是 None,不过可以在列表的末尾使用一条全抓(catch-all)规则 重载其设置。 列表中的规则(PolicyRule)是严格有序的。 |
omitStages []Stage
|
字段 omitStages 是一个阶段(Stage)列表,其中包含无须生成事件的阶段。 注意这一选项也可以通过每条规则来设置。 审计组件最终会忽略出现在 omitStages 中阶段,也会忽略规则中的阶段。 |
PolicyList
PolicyList 是由审计策略(Policy)组成的列表。
字段 | 描述 |
---|---|
apiVersion string | audit.k8s.io/v1 |
kind string | PolicyList |
metadata meta/v1.ListMeta
|
列表结构元数据。 |
items [必需][]Policy
|
策略(Policy)对象列表。 |
GroupResources
出现在:
GroupResources 代表的是某 API 组中的资源类别。
字段 | 描述 |
---|---|
group string
|
字段 group 给出包含资源的 API 组的名称。
空字符串代表 core API 组。
|
resources []string
|
如果存在通配符,则合法性检查逻辑会确保 resources 中的条目不会彼此重叠。 |
resourceNames []string
|
字段 resourceNames 是策略将匹配的资源实例名称列表。
使用此字段时,resources 必须指定。
空的 resourceNames 列表意味着资源的所有实例都会匹配到此策略。
|
Level
string
数据类型的别名。
出现在:
Level 定义的是审计过程中在日志内记录的信息量。
ObjectReference
出现在:
ObjectReference 包含的是用来检查或修改所引用对象时将需要的全部信息。
字段 | 描述 |
---|---|
resource string
|
资源类别。 |
namespace string
|
资源对象所在名字空间。 |
name string
|
资源对象名称。 |
uid k8s.io/apimachinery/pkg/types.UID
|
资源对象的唯一标识(UID)。 |
apiGroup string
|
字段 apiGroup 给出包含所引用对象的 API 组的名称。
空字符串代表 core API 组。
|
apiVersion string
|
字段 apiVersion 是包含所引用对象的 API 组的版本。 |
resourceVersion string
|
资源对象自身的版本值。 |
subresource string
|
子资源的类别。 |
PolicyRule
出现在:
PolicyRule 包含一个映射,基于元数据将请求映射到某审计级别。 请求必须与每个字段所定义的规则都匹配(即 rules 的交集)才被视为匹配。
字段 | 描述 |
---|---|
level [必需]Level
|
与此规则匹配的请求所对应的日志记录级别(Level)。 |
users []string
|
根据身份认证所确定的用户名的列表,给出此规则所适用的用户。 空列表意味着适用于所有用户。 |
userGroups []string
|
此规则所适用的用户组的列表。如果用户是所列用户组中任一用户组的成员,则视为匹配。 空列表意味着适用于所有用户组。 |
verbs []string
|
此规则所适用的动词(verb)列表。 空列表意味着适用于所有动词。 |
resources []GroupResources
|
此规则所适用的资源类别列表。 空列表意味着适用于 API 组中的所有资源类别。 |
namespaces []string
|
此规则所适用的名字空间列表。 空字符串("")意味着适用于非名字空间作用域的资源。 空列表意味着适用于所有名字空间。 |
nonResourceURLs []string
|
字段 nonResourceURLs 给出一组需要被审计的 URL 路径。
允许使用 ∗,但只能作为路径中最后一个完整分段。 例如: "/metrics" - 记录对 API 服务器度量值(metrics)的所有请求; "/healthz∗" - 记录所有健康检查请求。 |
omitStages []Stage
|
字段 omitStages 是一个阶段(Stage)列表,针对所列的阶段服务器不会生成审计事件。 注意这一选项也可以在策略(Policy)级别指定。服务器审计组件会忽略 omitStages 中给出的阶段,也会忽略策略中给出的阶段。 空列表意味着不对阶段作任何限制。 |
Stage
string
数据类型的别名。
出现在:
Stage 定义在请求处理过程中可以生成审计事件的阶段。
3 - kube-apiserver 加密配置 (v1)
包 v1 是 API 的 v1 版本。
资源类型
EncryptionConfiguration
EncryptionConfiguration 为加密驱动保存完整的配置信息。
字段 | 描述 |
---|---|
apiVersion string | apiserver.config.k8s.io/v1 |
kind string | EncryptionConfiguration |
resources [必需][]ResourceConfiguration
|
|
AESConfiguration
出现在:
AESConfiguration 包含 AES 转换器的 API 配置信息。
字段 | 描述 |
---|---|
keys [必需][]Key
|
|
IdentityConfiguration
出现在:
IdentityConfiguration 是一个空的结构,用来支持在驱动配置中支持标识转换器。
KMSConfiguration
出现在:
KMSConfiguration 包含基于 KMS 的封套转换器的名称、缓存大小以及配置文件路径信息。
字段 | 描述 |
---|---|
name [必需]string
|
|
cachesize int32
|
|
endpoint [必需]string
|
|
timeout meta/v1.Duration
|
对 KMS 插件执行 gRPC 调用的超时时长(例如,'5s')。默认值为 3 秒。 |
Key
出现在:
Key 中包含为某转换器所提供的键名和对应的私密数据。
字段 | 描述 |
---|---|
name [必需]string
|
|
secret [必需]string
|
|
ProviderConfiguration
出现在:
ProviderConfiguration 为加密驱动存储配置信息。
字段 | 描述 |
---|---|
aesgcm [必需]AESConfiguration
|
|
aescbc [必需]AESConfiguration
|
|
secretbox [必需]SecretboxConfiguration
|
|
identity [必需]IdentityConfiguration
|
|
kms [必需]KMSConfiguration
|
|
ResourceConfiguration
出现在:
ResourceConfiguration 中保存资源配置。
字段 | 描述 |
---|---|
resources [必需][]string
|
|
providers [必需][]ProviderConfiguration
|
|
SecretboxConfiguration
出现在:
SecretboxConfiguration 包含用于某 Secretbox 转换器的 API 配置。
字段 | 描述 |
---|---|
keys [必需][]Key
|
|
4 - kube-apiserver 配置 (v1)
v1 包中包含 API 的 v1 版本。
资源类型
AdmissionConfiguration
AdmissionConfiguration 为准入控制器提供版本化的配置。
字段 | 描述 |
---|---|
apiVersion string | apiserver.config.k8s.io/v1 |
kind string | AdmissionConfiguration |
plugins []AdmissionPluginConfiguration
|
|
AdmissionPluginConfiguration
出现在:
AdmissionPluginConfiguration 为某个插件提供配置信息。
字段 | 描述 |
---|---|
name [必需]string
|
|
path string
|
|
configuration k8s.io/apimachinery/pkg/runtime.Unknown
|
|
5 - kube-apiserver 配置 (v1alpha1)
包 v1alpha1 包含 API 的 v1alpha1 版本。
资源类型
AdmissionConfiguration
AdmissionConfiguration 为准入控制器提供版本化的配置信息。
字段 | 描述 |
---|---|
apiVersion string | apiserver.k8s.io/v1alpha1 |
kind string | AdmissionConfiguration |
plugins []AdmissionPluginConfiguration
|
|
EgressSelectorConfiguration
EgressSelectorConfiguration 为 Egress 选择算符客户端提供版本化的配置选项。
字段 | 描述 |
---|---|
apiVersion string | apiserver.k8s.io/v1alpha1 |
kind string | EgressSelectorConfiguration |
egressSelections [必需][]EgressSelection
|
|
TracingConfiguration
TracingConfiguration 为跟踪客户端提供版本化的配置信息。
字段 | 描述 |
---|---|
apiVersion string | apiserver.k8s.io/v1alpha1 |
kind string | TracingConfiguration |
endpoint string
|
在控制面节点上运行的采集器的端点。
API 服务器在向采集器发送数据时将 |
samplingRatePerMillion int32
|
|
AdmissionPluginConfiguration
出现在:
AdmissionPluginConfiguration 为某个插件提供配置信息。
字段 | 描述 |
---|---|
name [必需]string
|
|
path string
|
|
configuration k8s.io/apimachinery/pkg/runtime.Unknown
|
|
Connection
出现在:
Connection 提供某个 Egress 选择客户端的配置信息。
字段 | 描述 |
---|---|
proxyProtocol [必需]ProtocolType
|
|
transport Transport
|
|
EgressSelection
出现在:
EgressSelection 为某个 Egress 选择客户端提供配置信息。
字段 | 描述 |
---|---|
name [必需]string
|
|
connection [必需]Connection
|
|
ProtocolType
(string
类型的别名)
出现在:
ProtocolType 是 connection.protocolType
的合法值集合。
TCPTransport
出现在:
TCPTransport 提供使用 TCP 连接 konnectivity 服务器时需要的信息。
字段 | 描述 |
---|---|
url [必需]string
|
|
tlsConfig TLSConfig
|
|
TLSConfig
出现在:
TLSConfig 为连接 konnectivity 服务器提供身份认证信息。仅用于 TCPTransport。
字段 | 描述 |
---|---|
caBundle string
|
|
clientKey string
|
|
clientCert string
|
|
Transport
出现在:
Transport 定义联系 konnectivity 服务器时要使用的传输层配置。
字段 | 描述 |
---|---|
tcp TCPTransport
|
|
uds UDSTransport
|
|
UDSTransport
出现在:
UDSTransport 设置通过 UDS 连接 konnectivity 服务器时需要的信息。
字段 | 描述 |
---|---|
udsName [必需]string
|
|
6 - kube-proxy 配置 (v1alpha1)
资源类型
KubeProxyConfiguration
KubeProxyConfiguration 包含用来配置 Kubernetes 代理服务器的所有配置信息。
字段 | 描述 |
---|---|
apiVersion string | kubeproxy.config.k8s.io/v1alpha1 |
kind string | KubeProxyConfiguration |
featureGates [必需]map[string]bool
|
featureGates 是一个功能特性名称到布尔值的映射表,用来启用或者禁用测试性质的功能特性。 |
bindAddress [必需]string
|
bindAddress 是代理服务器提供服务时所用 IP 地址(设置为 0.0.0.0 时意味着在所有网络接口上提供服务)。 |
healthzBindAddress [必需]string
|
healthzBindAddress 是健康状态检查服务器提供服务时所使用的的 IP 地址和端口, 默认设置为 '0.0.0.0:10256'。 |
metricsBindAddress [必需]string
|
metricsBindAddress 是度量值服务器提供服务时所使用的的 IP 地址和端口, 默认设置为 '127.0.0.1:10249'(设置为 0.0.0.0 意味着在所有接口上提供服务)。 |
bindAddressHardFail [必需]bool
|
bindAddressHardFail 设置为 true 时,kube-proxy 将无法绑定到某端口这类问题视为致命错误并直接退出。 |
enableProfiling [必需]bool
|
enableProfiling 通过 '/debug/pprof' 处理程序在 Web 界面上启用性能分析。 性能分析处理程序将由度量值服务器执行。 |
clusterCIDR [必需]string
|
clusterCIDR 是集群中 Pods 所使用的 CIDR 范围。这一地址范围用于对来自集群外的请求 流量进行桥接。如果未设置,则 kube-proxy 不会对非集群内部的流量做桥接。 |
hostnameOverride [必需]string
|
hostnameOverride 非空时,所给的字符串(而不是实际的主机名)将被用作 kube-proxy 的标识。 |
clientConnection [必需]ClientConnectionConfiguration
|
clientConnection 给出代理服务器与 API 服务器通信时要使用的 kubeconfig 文件和客户端链接设置。 |
iptables [必需]KubeProxyIPTablesConfiguration
|
iptables 字段包含与 iptables 相关的配置选项。 |
ipvs [必需]KubeProxyIPVSConfiguration
|
ipvs 中包含与 ipvs 相关的配置选项。 |
oomScoreAdj [必需]int32
|
oomScoreAdj 是为 kube-proxy 进程所设置的 oom-score-adj 值。 此设置值必须介于 [-1000, 1000] 范围内。 |
mode [必需]ProxyMode
|
mode 用来设置将使用的代理模式。 |
portRange [必需]string
|
portRange 是主机端口的范围,形式为 ‘beginPort-endPort’(包含边界), 用来设置代理服务所使用的端口。如果未指定(即‘0-0’),则代理服务会随机选择端口号。 |
udpIdleTimeout [必需]meta/v1.Duration
|
udpIdleTimeout 用来设置 UDP 链接保持活跃的时长(例如,'250ms'、'2s')。 此值必须大于 0。此字段仅适用于 mode 值为 'userspace' 的场合。 |
conntrack [必需]KubeProxyConntrackConfiguration
|
conntrack 包含与 conntrack 相关的配置选项。 |
configSyncPeriod [必需]meta/v1.Duration
|
configSyncPeriod 是从 API 服务器刷新配置的频率。此值必须大于 0。 |
nodePortAddresses [必需][]string
|
nodePortAddresses 是 kube-proxy 进程的 --nodeport-addresses 命令行参数设置。
此值必须是合法的 IP 段。所给的 IP 段会作为参数来选择 NodePort 类型服务所使用的接口。
如果有人希望将本地主机(Localhost)上的服务暴露给本地访问,同时暴露在某些其他网络接口上
以实现某种目标,可以使用 IP 段的列表。
如果此值被设置为 "127.0.0.0/8",则 kube-proxy 将仅为 NodePort 服务选择本地回路(loopback)接口。
如果此值被设置为非零的 IP 段,则 kube-proxy 会对 IP 作过滤,仅使用适用于当前节点的 IP 地址。
空的字符串列表意味着选择所有网络接口。
|
winkernel [必需]KubeProxyWinkernelConfiguration
|
winkernel 包含与 winkernel 相关的配置选项。 |
showHiddenMetricsForVersion [必需]string
|
showHiddenMetricsForVersion 给出的是一个 Kubernetes 版本号字符串,用来设置你希望 显示隐藏度量值的版本。 |
detectLocalMode [必需]LocalMode
|
detectLocalMode 用来确定检测本地流量的方式,默认为 LocalModeClusterCIDR。 |
KubeProxyConntrackConfiguration
出现在:
KubeProxyConntrackConfiguration 包含为 Kubernetes 代理服务器提供的 conntrack 设置。
字段 | 描述 |
---|---|
maxPerCore [必需]int32
|
maxPerCore 是每个 CPU 核所跟踪的 NAT 链接个数上限 (0 意味着保留当前上限限制并忽略 min 字段设置值)。 |
min [必需]int32
|
min 给出要分配的链接跟踪记录个数下限。 设置此值时会忽略 maxPerCore 的值(将 maxPerCore 设置为 0 时不会调整上限值)。 |
tcpEstablishedTimeout [必需]meta/v1.Duration
|
tcpEstablishedTimeout 给出空闲 TCP 连接的保留时间(例如,'2s')。 此值必须大于 0。 |
tcpCloseWaitTimeout [必需]meta/v1.Duration
|
tcpCloseWaitTimeout 用来设置空闲的、处于 CLOSE_WAIT 状态的 conntrack 条目 保留在 conntrack 表中的时间长度(例如,'60s')。 此设置值必须大于 0。 |
KubeProxyIPTablesConfiguration
出现在:
KubeProxyIPTablesConfiguration 包含用于 Kubernetes 代理服务器的、与 iptables 相关的配置细节。
字段 | 描述 |
---|---|
masqueradeBit [必需]int32
|
masqueradeBit 是 iptables fwmark 空间中的具体一位,用来在纯 iptables 代理模式下 设置 SNAT。此值必须介于 [0, 31](含边界值)。 |
masqueradeAll [必需]bool
|
masqueradeAll 用来通知 kube-proxy 在使用纯 iptables 代理模式时对所有流量执行 SNAT 操作。 |
syncPeriod [必需]meta/v1.Duration
|
syncPeriod 给出 iptables 规则的刷新周期(例如,'5s'、'1m'、'2h22m')。 此值必须大于 0。 |
minSyncPeriod [必需]meta/v1.Duration
|
minSyncPeriod 给出 iptables 规则被刷新的最小周期(例如,'5s'、'1m'、'2h22m')。 |
KubeProxyIPVSConfiguration
出现在:
KubeProxyIPVSConfiguration 包含用于 Kubernetes 代理服务器的、与 ipvs 相关的配置细节。
字段 | 描述 |
---|---|
syncPeriod [必需]meta/v1.Duration
|
syncPeriod 给出 ipvs 规则的刷新周期(例如,'5s'、'1m'、'2h22m')。 此值必须大于 0。 |
minSyncPeriod [必需]meta/v1.Duration
|
minSyncPeriod 给出 ipvs 规则被刷新的最小周期(例如,'5s'、'1m'、'2h22m')。 |
scheduler [必需]string
|
IPVS 调度器。 |
excludeCIDRs [必需][]string
|
excludeCIDRs 取值为一个 CIDR 列表,ipvs 代理程序在清理 IPVS 服务时不应触碰这些 IP 地址。 |
strictARP [必需]bool
|
strictARP 用来配置 arp_ignore 和 arp_announce,以避免(错误地)响应来自 kube-ipvs0 接口的 ARP 查询请求。 |
tcpTimeout [必需]meta/v1.Duration
|
tcpTimeout 是用于设置空闲 IPVS TCP 会话的超时值。 默认值为 0,意味着使用系统上当前的超时值设置。 |
tcpFinTimeout [必需]meta/v1.Duration
|
tcpFinTimeout 用来设置 IPVS TCP 会话在收到 FIN 之后的超时值。 默认值为 0,意味着使用系统上当前的超时值设置。 |
udpTimeout [必需]meta/v1.Duration
|
udpTimeout 用来设置 IPVS UDP 包的超时值。 默认值为 0,意味着使用系统上当前的超时值设置。 |
KubeProxyWinkernelConfiguration
出现在:
KubeProxyWinkernelConfiguration 包含 Kubernetes 代理服务器的 Windows/HNS 设置。
字段 | 描述 |
---|---|
networkName [必需]string
|
networkName 是 kube-proxy 用来创建端点和策略的网络名称。 |
sourceVip [必需]string
|
sourceVip 是执行负载均衡时进行 NAT 转换所使用的源端 VIP 端点 IP 地址。 |
enableDSR [必需]bool
|
enableDSR 通知 kube-proxy 是否使用 DSR 来创建 HNS 策略。 |
LocalMode
(string
类型的别名)
出现在:
LocalMode 代表的是对节点上本地流量进行检测的模式。
ProxyMode
(string
类型的别名)
出现在:
ProxyMode 表示的是 Kubernetes 代理服务器所使用的模式。
目前 Linux 平台上有三种可用的代理模式:'userspace'(相对较老,即将被淘汰)、 'iptables'(相对较新,速度较快)、'ipvs'(最新,在性能和可扩缩性上表现好)。
在 Windows 平台上有两种可用的代理模式:'userspace'(相对较老,但稳定)和 'kernelspace'(相对较新,速度更快)。
在 Linux 平台上,如果代理的 mode 为空,则使用可用的最佳代理(目前是 iptables, 将来可能会发生变化)。如果选择的是 iptables 代理(无论原因如何),但系统的内核 或者 iptables 的版本不够高,kube-proxy 也会回退为 userspace 代理服务器所使用的模式。 当代理的 mode 设置为 'ipvs' 时会启用 IPVS 模式,对应的回退路径是先尝试 iptables, 最后回退到 userspace。
在 Windows 平台上,如果代理 mode 为空,则使用可用的最佳代理(目前是 userspace, 不过将来可能会发生变化)。如果所选择的是 winkernel 代理(无论原因如何), 但 Windows 内核不支持此代理模式,则 kube-proxy 会回退到 userspace 代理。
ClientConnectionConfiguration
出现在:
ClientConnectionConfiguration 包含构造客户端所需要的细节信息。
字段 | 描述 |
---|---|
kubeconfig [必需]string
|
kubeconfig 是指向一个 KubeConfig 文件的路径。 |
acceptContentTypes [必需]string
|
acceptContentTypes 定义客户端在连接到服务器时所发送的 Accept 头部字段。 此设置值会覆盖默认配置 'application/json'。 此字段会控制某特定客户端与指定服务器的所有链接。 |
contentType [必需]string
|
contentType 是从此客户端向服务器发送数据时使用的内容类型(Content Type)。 |
qps [必需]float32
|
qps 控制此连接上每秒钟可以发送的查询请求个数。 |
burst [必需]int32
|
允许客户端超出其速率限制时可以临时累积的额外查询个数。 |
FormatOptions
FormatOptions 包含不同日志记录格式的配置选项。
字段 | 描述 |
---|---|
json [必需]JSONOptions
|
[实验特性] json 字段包含 “JSON” 日志格式的配置选项。 |
JSONOptions
出现在:
JSONOptions 包含“json”日志格式的配置选项。
字段 | 描述 |
---|---|
splitStream [必需]bool
|
[实验特性] splitStream 将信息类型的信息输出到标准输出,错误信息重定向到标准 错误输出,并提供缓存。默认行为是将二者都输出到标准输出且不提供缓存。 |
infoBufferSize [必需]k8s.io/apimachinery/pkg/api/resource.QuantityValue
|
[实验特性] infoBufferSize 设置在使用分离数据流时 info 数据流的缓冲区大小。 默认值为 0,意味着不提供缓存。 |
VModuleConfiguration
([]k8s.io/component-base/config/v1alpha1.VModuleItem
的别名)
VModuleConfiguration 是一组文件名或文件名模式,及其对应的日志详尽程度阈值配置。
7 - kube-scheduler 配置 (v1beta2)
资源类型
- DefaultPreemptionArgs
- InterPodAffinityArgs
- KubeSchedulerConfiguration
- NodeAffinityArgs
- NodeResourcesBalancedAllocationArgs
- NodeResourcesFitArgs
- PodTopologySpreadArgs
- VolumeBindingArgs
DefaultPreemptionArgs
DefaultPreemptionArgs 包含用来配置 DefaultPreemption 插件的参数。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1beta2 |
kind string | DefaultPreemptionArgs |
minCandidateNodesPercentage [必需]int32
|
此字段为试运行抢占时 shortlist 中候选节点数的下限,数值为节点数的百分比。 字段值必须介于 [0, 100] 之间。未指定时默认值为整个集群规模的 10%。 |
minCandidateNodesAbsolute [必需]int32
|
此字段设置 shortlist 中候选节点的绝对下限。用于试运行抢占而列举的 候选节点个数近似于通过下面的公式计算的: 候选节点数 = max(节点数 * minCandidateNodesPercentage, minCandidateNodesAbsolute) 之所以说是“近似于”是因为存在一些类似于 PDB 违例这种因素,会影响到进入 shortlist 中候选节点的个数。取值至少为 0 节点。若未设置默认为 100 节点。 |
InterPodAffinityArgs
InterPodAffinityArgs 包含用来配置 InterPodAffinity 插件的参数。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1beta2 |
kind string | InterPodAffinityArgs |
hardPodAffinityWeight [必需]int32
|
此字段是一个计分权重值。针对新增的 Pod,要对现存的、带有与新 Pod 匹配的 硬性亲和性设置的 Pod 计算亲和性得分。 |
KubeSchedulerConfiguration
KubeSchedulerConfiguration 用来配置调度器。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1beta2 |
kind string | KubeSchedulerConfiguration |
parallelism [必需]int32
|
此字段设置为调度 Pod 而执行算法时的并发度。此值必须大于 0。 默认值为 16。 |
leaderElection [必需]LeaderElectionConfiguration
|
此字段用来定义领导者选举客户端的配置。 |
clientConnection [必需]ClientConnectionConfiguration
|
此字段为与 API 服务器通信时使用的代理服务器设置 kubeconfig 文件和客户端 连接配置。 |
healthzBindAddress [必需]string
|
healthzBindAddress 是健康检查服务器提供服务所用的 IP 地址和端口。
注意:healthzBindAddress 和 metricsBindAddress
这两个字段都已被弃用。
只可以设置空地址或者端口 0。其他设置值都无法通过合法性检查。
|
metricsBindAddress [必需]string
|
metricsBindAddress 是度量值服务器提供服务所用的 IP 地址和端口。
|
DebuggingConfiguration [必需]DebuggingConfiguration
|
(DebuggingConfiguration 的成员被内嵌到此类型中)
此字段设置与调试相关功能特性的配置。
|
percentageOfNodesToScore [必需]int32
|
此字段为所有节点的百分比,一旦调度器找到所设置比例的、能够运行 Pod 的节点, 则停止在集群中继续寻找更合适的节点。这一配置有助于提高调度器的性能。调度器 总会尝试寻找至少 "minFeasibleNodesToFind" 个可行节点,无论此字段的取值如何。 例如:当集群规模为 500 个节点,而此字段的取值为 30,则调度器在找到 150 个合适 的节点后会停止继续寻找合适的节点。当此值为 0 时,调度器会使用默认节点数百分比(基于集群规模 确定的值,在 5% 到 50% 之间)来执行打分操作。 |
podInitialBackoffSeconds [必需]int64
|
此字段设置不可调度 Pod 的初始回退秒数。如果设置了此字段,其取值必须大于零。 若此值为 null,则使用默认值(1s)。 |
podMaxBackoffSeconds [必需]int64
|
此字段设置不可调度的 Pod 的最大回退秒数。如果设置了此字段,则其值必须大于 podInitialBackoffSeconds 字段值。如果此值设置为 null,则使用默认值(10s)。 |
profiles [必需][]KubeSchedulerProfile
|
此字段为 kube-scheduler 所支持的方案(profiles)。Pod 可以通过设置其对应 的调度器名称来选择使用特定的方案。未指定调度器名称的 Pod 会使用 “default-scheduler”方案来调度,如果存在的话。 |
extenders [必需][]Extender
|
此字段为调度器扩展模块(Extender)的列表,每个元素包含如何与某扩展模块 通信的配置信息。所有调度器模仿会共享此扩展模块列表。 |
NodeAffinityArgs
NodeAffinityArgs 中包含配置 NodeAffinity 插件的参数。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1beta2 |
kind string | NodeAffinityArgs |
addedAffinity core/v1.NodeAffinity
|
addedAffinity 会作为附加的亲和性属性添加到所有 Pod 的
规约中指定的 NodeAffinity 中。换言之,节点需要同时满足 addedAffinity
和 .spec.nodeAffinity。默认情况下,addedAffinity 为空(与所有节点匹配)。
使用了 addedAffinity 时,某些带有已经能够与某特定节点匹配的亲和性需求
的 Pod (例如 DaemonSet Pod)可能会继续呈现不可调度状态。
|
NodeResourcesBalancedAllocationArgs
NodeResourcesBalancedAllocationArgs 包含用来配置 NodeResourcesBalancedAllocation 插件的参数。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1beta2 |
kind string | NodeResourcesBalancedAllocationArgs |
resources [必需][]ResourceSpec
|
要管理的资源;如果未设置,则默认值为 "cpu" 和 "memory"。 |
NodeResourcesFitArgs
NodeResourcesFitArgs 包含用来配置 NodeResourcesFit 插件的参数。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1beta2 |
kind string | NodeResourcesFitArgs |
ignoredResources [必需][]string
|
此字段为 NodeResources 匹配过滤器要忽略的资源列表。此列表不影响节点打分。 |
ignoredResourceGroups [必需][]string
|
此字段定义 NodeResources 匹配过滤器要忽略的资源组列表。 例如,如果配置值为 ["example.com"],则以 "example.com" 开头的资源名(如 "example.com/aaa" 和 "example.com/bbb")都会被忽略。 资源组名称中不可以包含 '/'。此设置不影响节点的打分。 |
scoringStrategy [必需]ScoringStrategy
|
此字段用来选择节点资源打分策略。默认的策略为 LeastAllocated,且 "cpu" 和 "memory" 的权重相同。 |
PodTopologySpreadArgs
PodTopologySpreadArgs 包含用来配置 PodTopologySpread 插件的参数。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1beta2 |
kind string | PodTopologySpreadArgs |
defaultConstraints []core/v1.TopologySpreadConstraint
|
此字段针对未定义 .spec.topologySpreadConstraints 的 Pod,
为其提供拓扑分布约束。.defaultConstraints[∗].labelSelectors
必须为空,因为这一信息要从 Pod 所属的 Service、ReplicationController、
ReplicaSet 或 StatefulSet 来推导。
此字段不为空时,.defaultingType 必须为 "List"。
|
defaultingType PodTopologySpreadConstraintsDefaulting
|
当特性门控 DefaultPodTopologySpread 被禁用时,默认值为 "list";反之,默认值为 "System"。 |
VolumeBindingArgs
VolumeBindingArgs 包含用来配置 VolumeBinding 插件的参数。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1beta2 |
kind string | VolumeBindingArgs |
bindTimeoutSeconds [必需]int64
|
此字段设置卷绑定操作的超时秒数。字段值必须是非负数。 取值为 0 意味着不等待。如果此值为 null,则使用默认值(600)。 |
shape []UtilizationShapePoint
|
默认的曲线计分点为:
所有计分点必须按利用率值的升序来排序。 |
Extender
出现在:
Extender 包含与扩展模块(Extender)通信所用的参数。 如果未指定 verb 或者 verb 为空,则假定对应的扩展模块选择不提供该扩展功能。
字段 | 描述 |
---|---|
urlPrefix [必需]string
|
用来访问扩展模块的 URL 前缀。 |
filterVerb [必需]string
|
filter 调用所使用的动词,如果不支持过滤操作则为空。 此动词会在向扩展模块发送 filter 调用时追加到 urlPrefix 后面。 |
preemptVerb [必需]string
|
preempt 调用所使用的动词,如果不支持抢占操作则为空。 此动词会在向扩展模块发送 preempt 调用时追加到 urlPrefix 后面。 |
prioritizeVerb [必需]string
|
prioritize 调用所使用的动词,如果不支持 prioritize 操作则为空。 此动词会在向扩展模块发送 prioritize 调用时追加到 urlPrefix 后面。 |
weight [必需]int64
|
针对 prioritize 调用所生成的节点分数要使用的数值系数。 weight 值必须是正整数。 |
bindVerb [必需]string
|
bind 调用所使用的动词,如果不支持 bind 操作则为空。 此动词会在向扩展模块发送 bind 调用时追加到 urlPrefix 后面。 如果扩展模块实现了此方法,扩展模块要负责将 Pod 绑定到 API 服务器。 只有一个扩展模块可以实现此函数。 |
enableHTTPS [必需]bool
|
此字段设置是否需要使用 HTTPS 来与扩展模块通信。 |
tlsConfig [必需]ExtenderTLSConfig
|
此字段设置传输层安全性(TLS)配置。 |
httpTimeout [必需]meta/v1.Duration
|
此字段给出扩展模块功能调用的超时值。filter 操作超时会导致 Pod 无法被调度。 prioritize 操作超时会被忽略,Kubernetes 或者其他扩展模块所给出的优先级值 会被用来选择节点。 |
nodeCacheCapable [必需]bool
|
此字段指示扩展模块可以缓存节点信息,从而调度器应该发送关于可选节点的最少信息, 假定扩展模块已经缓存了集群中所有节点的全部详细信息。 |
managedResources []ExtenderManagedResource
|
|
ignorable [必需]bool
|
此字段用来设置扩展模块是否是可忽略的。换言之,当扩展模块返回错误或者 完全不可达时,调度操作不应失败。 |
ExtenderManagedResource
出现在:
ExtenderManagedResource 描述某扩展模块所管理的扩展资源的参数。
字段 | 描述 |
---|---|
name [必需]string
|
扩展资源的名称。 |
ignoredByScheduler [必需]bool
|
此字段标明 kube-scheduler 是否应在应用断言时忽略此资源。 |
ExtenderTLSConfig
出现在:
ExtenderTLSConfig 包含启用与扩展模块间 TLS 传输所需的配置参数。
字段 | 描述 |
---|---|
insecure [必需]bool
|
访问服务器时不需要检查 TLS 证书。此配置仅针对测试用途。 |
serverName [必需]string
|
serverName 会被发送到服务器端,作为 SNI 标志;客户端会使用
此设置来检查服务器证书。如果 serverName 为空,则会使用联系
服务器时所用的主机名。
|
certFile [必需]string
|
服务器端所要求的 TLS 客户端证书认证。 |
keyFile [必需]string
|
服务器端所要求的 TLS 客户端秘钥认证。 |
caFile [必需]string
|
服务器端可信任的根证书。 |
certData [必需][]byte
|
certData 包含 PEM 编码的字节流(通常从某客户端证书文件读入)。
此字段优先级高于 certFile 字段。
|
keyData [必需][]byte
|
keyData 包含 PEM 编码的字节流(通常从某客户端证书秘钥文件读入)。
此字段优先级高于 keyFile 字段。
|
caData [必需][]byte
|
caData 包含 PEM 编码的字节流(通常从某根证书包文件读入)。
此字段优先级高于 caFile 字段。
|
KubeSchedulerProfile
出现在:
KubeSchedulerProfile 是一个调度方案。
字段 | 描述 |
---|---|
schedulerName [必需]string
|
schedulerName 是与此调度方案相关联的调度器的名称。
如果 schedulerName 与 Pod 的 spec.schedulerName
匹配,则该 Pod 会使用此方案来调度。
|
plugins [必需]Plugins
|
如果针对某个扩展点没有设置被启用或被禁止的插件,则使用该扩展点
的默认插件(如果有的话)。如果设置了 QueueSort 插件,则同一个 QueueSort
插件和 |
pluginConfig [必需][]PluginConfig
|
pluginConfig 是为每个插件提供的一组可选的定制插件参数。
如果忽略了插件的配置参数,则意味着使用该插件的默认配置。
|
Plugin
出现在:
Plugin 指定插件的名称及其权重(如果适用的话)。权重仅用于评分(Score)插件。
字段 | 描述 |
---|---|
name [必需]string
|
插件的名称。 |
weight [必需]int32
|
插件的权重;仅适用于评分(Score)插件。 |
PluginConfig
出现在:
PluginConfig 给出初始化阶段要传递给插件的参数。 在多个扩展点被调用的插件仅会被初始化一次。 参数可以是任意结构。插件负责处理这里所传的参数。
字段 | 描述 |
---|---|
name [必需]string
|
name 是所配置的插件的名称。
|
args [必需]k8s.io/apimachinery/pkg/runtime.RawExtension
|
args 定义在初始化阶段要传递给插件的参数。参数可以为任意结构。
|
PluginSet
出现在:
PluginSet 为某扩展点设置要启用或禁用的插件。 如果数组为空,或者取值为 null,则使用该扩展点的默认插件集合。
字段 | 描述 |
---|---|
enabled [必需][]Plugin
|
enabled 设置在默认插件之外要启用的插件。如果在调度器的配置
文件中也配置了默认插件,则对应插件的权重会被覆盖。
此处所设置的插件会在默认插件之后被调用,调用顺序与数组中元素顺序相同。
|
disabled [必需][]Plugin
|
disabled 设置要被禁用的默认插件。
如果需要禁用所有的默认插件,应该提供仅包含一个元素 "∗" 的数组。
|
Plugins
出现在:
Plugins 结构中包含多个扩展点。当此结构被设置时,针对特定扩展点所启用 的所有插件都在这一列表中。 如果配置中不包含某个扩展点,则使用该扩展点的默认插件集合。 被启用的插件的调用顺序与这里指定的顺序相同,都在默认插件之后调用。 如果它们需要在默认插件之前调用,则需要先行禁止默认插件,之后在这里 按期望的顺序重新启用。
字段 | 描述 |
---|---|
queueSort [必需]PluginSet
|
queueSort 是一个在对调度队列中 Pod 排序时要调用的插件列表。
|
preFilter [必需]PluginSet
|
preFilter 是一个在调度框架中“PreFilter(预过滤)”扩展点上要
调用的插件列表。
|
filter [必需]PluginSet
|
filter 是一个在需要过滤掉无法运行 Pod 的节点时被调用的插件列表。
|
postFilter [必需]PluginSet
|
postFilter 是一个在过滤阶段结束后会被调用的插件列表;
这里的插件只有在找不到合适的节点来运行 Pod 时才会被调用。
|
preScore [必需]PluginSet
|
preScore 是一个在打分之前要调用的插件列表。
|
score [必需]PluginSet
|
score 是一个在对已经通过过滤阶段的节点进行排序时调用的插件的列表。
|
reserve [必需]PluginSet
|
reserve 是一组在运行 Pod 的节点已被选定后,需要预留或者释放资源时调用的插件的列表。
|
permit [必需]PluginSet
|
permit 是一个用来控制 Pod 绑定关系的插件列表。这些插件可以
禁止或者延迟 Pod 的绑定。
|
preBind [必需]PluginSet
|
preBind 是一个在 Pod 被绑定到某节点之前要被调用的插件的列表。
|
bind [必需]PluginSet
|
bind 是一个在调度框架中“Bind(绑定)”扩展点上要调用的
插件的列表。调度器按顺序调用这些插件。只要其中某个插件返回成功,则调度器
就略过余下的插件。
|
postBind [必需]PluginSet
|
postBind 是一个在 Pod 已经被成功绑定之后要调用的插件的列表。
|
multiPoint [必需]PluginSet
|
|
PodTopologySpreadConstraintsDefaulting
(string
类型的别名)
出现在:
PodTopologySpreadConstraintsDefaulting 定义如何为 PodTopologySpread 插件 设置默认的约束。
RequestedToCapacityRatioParam
出现在:
RequestedToCapacityRatioParam 结构定义 RequestedToCapacityRatio 的参数。
字段 | 描述 |
---|---|
shape [必需][]UtilizationShapePoint
|
shape 是一个定义评分函数曲线的计分点的列表。
|
ResourceSpec
出现在:
ResourceSpec 用来代表某个资源。
字段 | 描述 |
---|---|
name [必需]string
|
资源名称。 |
weight [必需]int64
|
资源权重。 |
ScoringStrategy
出现在:
ScoringStrategy 为节点资源插件定义 ScoringStrategyType。
字段 | 描述 |
---|---|
type [必需]ScoringStrategyType
|
type 用来选择要运行的策略。
|
resources [必需][]ResourceSpec
|
默认的资源集合包含 "cpu" 和 "memory",且二者权重相同。 权重的取值范围为 1 到 100。 当权重未设置或者显式设置为 0 时,意味着使用默认值 1。 |
requestedToCapacityRatio [必需]RequestedToCapacityRatioParam
|
特定于 RequestedToCapacityRatio 策略的参数。 |
ScoringStrategyType
(string
数据类型的别名)
出现在:
ScoringStrategyType 是 NodeResourcesFit 插件所使用的的评分策略类型。
UtilizationShapePoint
出现在:
UtilizationShapePoint 代表的是优先级函数曲线中的一个评分点。
字段 | 描述 |
---|---|
utilization [必需]int32
|
利用率(x 轴)。合法值为 0 到 100。完全被利用的节点映射到 100。 |
score [必需]int32
|
分配给指定利用率的分值(y 轴)。合法值为 0 到 10。 |
ClientConnectionConfiguration
出现在:
ClientConnectionConfiguration 中包含用来构造一个客户端所需的细节。
字段 | 描述 |
---|---|
kubeconfig [必需]string
|
此字段为指向某 KubeConfig 文件的路径。 |
acceptContentTypes [必需]string
|
acceptContentTypes 定义的是客户端与服务器建立连接时要发送的
Accept 头部;这里的设置值会覆盖默认值 "application/json"。
此字段会影响某特定客户端与服务器的所有连接。
|
contentType [必需]string
|
contentType 包含的是此客户端向服务器发送数据时使用的
内容类型(Content Type)。
|
qps [必需]float32
|
qps 控制的是此连接上每秒可以发送的查询个数。
|
burst [必需]int32
|
burst 允许在客户端超出其速率限制时可以累积的额外查询个数。
|
DebuggingConfiguration
出现在:
DebuggingConfiguration 保存与调试功能相关的配置。
字段 | 描述 |
---|---|
enableProfiling [必需]bool
|
此字段允许通过 Web 接口 host:port/debug/pprof/ 执行性能分析。 |
enableContentionProfiling [必需]bool
|
此字段在 enableProfiling 为 true 时允许执行锁竞争分析。
|
FormatOptions
FormatOptions 中包含不同日志格式的配置选项。
字段 | 描述 |
---|---|
json [必需]JSONOptions
|
[实验特性] json 字段包含为 "json" 日志格式提供的配置选项。
|
JSONOptions
出现在:
JSONOptions 包含为 "json" 日志格式所设置的配置选项。
字段 | 描述 |
---|---|
splitStream [必需]bool
|
[实验特性] 此字段将错误信息重定向到标准错误输出(stderr),将提示消息 重定向到标准输出(stdout),并且支持缓存。默认配置为将二者都输出到 标准输出(stdout),且不提供缓存。 |
infoBufferSize [必需]k8s.io/apimachinery/pkg/api/resource.QuantityValue
|
[实验特性] infoBufferSize 用来在分离数据流场景是设置提示
信息数据流的大小。默认值为 0,意味着禁止缓存。
|
LeaderElectionConfiguration
出现在:
LeaderElectionConfiguration 为能够支持领导者选举的组件定义其领导者选举 客户端的配置。
字段 | 描述 |
---|---|
leaderElect [必需]bool
|
leaderElect 启用领导者选举客户端,从而在进入主循环执行之前
先要获得领导者角色。当运行多副本组件时启用此功能有助于提高可用性。
|
leaseDuration [必需]meta/v1.Duration
|
leaseDuration 是非领导角色候选者在观察到需要领导席位更新时
要等待的时间;只有经过所设置时长才可以尝试去获得一个仍处于领导状态但需要
被刷新的席位。这里的设置值本质上意味着某个领导者在被另一个候选者替换掉
之前可以停止运行的最长时长。只有当启用了领导者选举时此字段有意义。
|
renewDeadline [必需]meta/v1.Duration
|
renewDeadline 设置的是当前领导者在停止扮演领导角色之前
需要刷新领导状态的时间间隔。此值必须小于或等于租约期限的长度。
只有到启用了领导者选举时此字段才有意义。
|
retryPeriod [必需]meta/v1.Duration
|
retryPeriod 是客户端在连续两次尝试获得或者刷新领导状态
之间需要等待的时长。只有当启用了领导者选举时此字段才有意义。
|
resourceLock [必需]string
|
此字段给出在领导者选举期间要作为锁来使用的资源对象类型。 |
resourceName [必需]string
|
此字段给出在领导者选举期间要作为锁来使用的资源对象名称。 |
resourceNamespace [必需]string
|
此字段给出在领导者选举期间要作为锁来使用的资源对象所在名字空间。 |
VModuleConfiguration
([]k8s.io/component-base/config/v1alpha1.VModuleItem
的别名)
VModuleConfiguration 是一组文件名(通配符)及其对应的日志详尽程度阈值。
8 - kube-scheduler 配置 (v1beta3)
资源类型
- DefaultPreemptionArgs
- InterPodAffinityArgs
- KubeSchedulerConfiguration
- NodeAffinityArgs
- NodeResourcesBalancedAllocationArgs
- NodeResourcesFitArgs
- PodTopologySpreadArgs
- VolumeBindingArgs
DefaultPreemptionArgs
DefaultPreemptionArgs 包含用来配置 DefaultPreemption 插件的参数。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1beta3 |
kind string | DefaultPreemptionArgs |
minCandidateNodesPercentage [必需]int32
|
此字段为试运行抢占时 shortlist 中候选节点数的下限,数值为节点数的百分比。 字段值必须介于 [0, 100] 之间。未指定时默认值为整个集群规模的 10%。 |
minCandidateNodesAbsolute [必需]int32
|
此字段设置 shortlist 中候选节点的绝对下限。用于试运行抢占而列举的
候选节点个数近似于通过下面的公式计算的: 候选节点数 = max(节点数 * minCandidateNodesPercentage, minCandidateNodesAbsolute) 之所以说是“近似于”是因为存在一些类似于 PDB 违例这种因素,会影响到进入 shortlist 中候选节点的个数。取值至少为 0 节点。若未设置默认为 100 节点。 |
InterPodAffinityArgs
InterPodAffinityArgs 包含用来配置 InterPodAffinity 插件的参数。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1beta3 |
kind string | InterPodAffinityArgs |
hardPodAffinityWeight [必需]int32
|
此字段是一个计分权重值。针对新增的 Pod,要对现存的、带有与新 Pod 匹配的 硬性亲和性设置的 Pods 计算亲和性得分。 |
KubeSchedulerConfiguration
KubeSchedulerConfiguration 用来配置调度器。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1beta3 |
kind string | KubeSchedulerConfiguration |
parallelism [必需]int32
|
此字段设置为调度 Pod 而执行算法时的并发度。此值必须大于 0。 默认值为 16。 |
leaderElection [必需]LeaderElectionConfiguration
|
此字段用来定义领导者选举客户端的配置。 |
clientConnection [必需]ClientConnectionConfiguration
|
此字段为与 API 服务器通信时使用的代理服务器设置 kubeconfig 文件和客户端 连接配置。 |
DebuggingConfiguration [必需]DebuggingConfiguration
|
(DebuggingConfiguration 的成员被内嵌到此类型中)
此字段设置与调试相关功能特性的配置。
|
percentageOfNodesToScore [必需]int32
|
此字段为所有节点的百分比,一旦调度器找到所设置比例的、能够运行 Pod 的节点, 则停止在集群中继续寻找更合适的节点。这一配置有助于提高调度器的性能。调度器 总会尝试寻找至少 "minFeasibleNodesToFind" 个可行节点,无论此字段的取值如何。 例如:当集群规模为 500 个节点,而此字段的取值为 30,则调度器在找到 150 个合适 的节点后会停止继续寻找合适的节点。当此值为 0 时,调度器会使用默认节点数百分比(基于集群规模 确定的值,在 5% 到 50% 之间)来执行打分操作。 |
podInitialBackoffSeconds [必需]int64
|
此字段设置不可调度 Pod 的初始回退秒数。如果设置了此字段,其取值必须大于零。 若此值为 null,则使用默认值(1s)。 |
podMaxBackoffSeconds [必需]int64
|
此字段设置不可调度的 Pod 的最大回退秒数。如果设置了此字段,则其值必须大于 podInitialBackoffSeconds 字段值。如果此值设置为 null,则使用默认值(10s)。 |
profiles [必需][]KubeSchedulerProfile
|
此字段为 kube-scheduler 所支持的方案(profiles)。Pod 可以通过设置其对应 的调度器名称来选择使用特定的方案。未指定调度器名称的 Pod 会使用 “default-scheduler”方案来调度,如果存在的话。 |
extenders [必需][]Extender
|
此字段为调度器扩展模块(Extender)的列表,每个元素包含如何与某扩展模块 通信的配置信息。所有调度器模仿会共享此扩展模块列表。 |
NodeAffinityArgs
NodeAffinityArgs 中包含配置 NodeAffinity 插件的参数。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1beta3 |
kind string | NodeAffinityArgs |
addedAffinity core/v1.NodeAffinity
|
addedAffinity 会作为附加的亲和性属性添加到所有 Pod 的
规约中指定的 NodeAffinity 中。换言之,节点需要同时满足 addedAffinity
和 .spec.nodeAffinity。默认情况下,addedAffinity 为空(与所有节点匹配)。
使用了 addedAffinity 时,某些带有已经能够与某特定节点匹配的亲和性需求
的 Pod (例如 DaemonSet Pod)可能会继续呈现不可调度状态。
|
NodeResourcesBalancedAllocationArgs
NodeResourcesBalancedAllocationArgs 包含用来配置 NodeResourcesBalancedAllocation 插件的参数。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1beta3 |
kind string | NodeResourcesBalancedAllocationArgs |
resources [必需][]ResourceSpec
|
要管理的资源;如果未设置,则默认值为 "cpu" 和 "memory"。 |
NodeResourcesFitArgs
NodeResourcesFitArgs 包含用来配置 NodeResourcesFit 插件的参数。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1beta3 |
kind string | NodeResourcesFitArgs |
ignoredResources [必需][]string
|
此字段为 NodeResources 匹配过滤器要忽略的资源列表。此列表不影响节点打分。 |
ignoredResourceGroups [必需][]string
|
此字段定义 NodeResources 匹配过滤器要忽略的资源组列表。 例如,如果配置值为 ["example.com"],则以 "example.com" 开头的资源名(如 "example.com/aaa" 和 "example.com/bbb")都会被忽略。 资源组名称中不可以包含 '/'。此设置不影响节点的打分。 |
scoringStrategy [必需]ScoringStrategy
|
此字段用来选择节点资源打分策略。默认的策略为 LeastAllocated,且 "cpu" 和 "memory" 的权重相同。 |
PodTopologySpreadArgs
PodTopologySpreadArgs 包含用来配置 PodTopologySpread 插件的参数。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1beta3 |
kind string | PodTopologySpreadArgs |
defaultConstraints []core/v1.TopologySpreadConstraint
|
此字段针对未定义 .spec.topologySpreadConstraints 的 Pod,
为其提供拓扑分布约束。.defaultConstraints[∗].labelSelectors
必须为空,因为这一信息要从 Pod 所属的 Service、ReplicationController、
ReplicaSet 或 StatefulSet 来推导。
此字段不为空时,.defaultingType 必须为 "List"。
|
defaultingType PodTopologySpreadConstraintsDefaulting
|
当特性门控 DefaultPodTopologySpread 被禁用时,默认值为 "list";反之,默认值为 "System"。 |
VolumeBindingArgs
VolumeBindingArgs 包含用来配置 VolumeBinding 插件的参数。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1beta3 |
kind string | VolumeBindingArgs |
bindTimeoutSeconds [必需]int64
|
此字段设置卷绑定操作的超时秒数。字段值必须是非负数。 取值为 0 意味着不等待。如果此值为 null,则使用默认值(600)。 |
shape []UtilizationShapePoint
|
默认的曲线计分点为:
所有计分点必须按利用率值的升序来排序。 |
Extender
出现在:
Extender 包含与扩展模块(Extender)通信所用的参数。 如果未指定 verb 或者 verb 为空,则假定对应的扩展模块选择不提供该扩展功能。
字段 | 描述 |
---|---|
urlPrefix [必需]string
|
用来访问扩展模块的 URL 前缀。 |
filterVerb [必需]string
|
filter 调用所使用的动词,如果不支持过滤操作则为空。 此动词会在向扩展模块发送 filter 调用时追加到 urlPrefix 后面。 |
preemptVerb [必需]string
|
preempt 调用所使用的动词,如果不支持过滤操作则为空。 此动词会在向扩展模块发送 preempt 调用时追加到 urlPrefix 后面。 |
prioritizeVerb [必需]string
|
prioritize 调用所使用的动词,如果不支持过滤操作则为空。 此动词会在向扩展模块发送 prioritize 调用时追加到 urlPrefix 后面。 |
weight [必需]int64
|
针对 prioritize 调用所生成的节点分数要使用的数值系数。 weight 值必须是正整数。 |
bindVerb [必需]string
|
bind 调用所使用的动词,如果不支持过滤操作则为空。 此动词会在向扩展模块发送 bind 调用时追加到 urlPrefix 后面。 如果扩展模块实现了此方法,扩展模块要负责将 Pod 绑定到 API 服务器。 只有一个扩展模块可以实现此函数。 |
enableHTTPS [必需]bool
|
此字段设置是否需要使用 HTTPS 来与扩展模块通信。 |
tlsConfig [必需]ExtenderTLSConfig
|
此字段设置传输层安全性(TLS)配置。 |
httpTimeout [必需]meta/v1.Duration
|
此字段给出扩展模块功能调用的超时值。filter 操作超时会导致 Pod 无法被调度。 prioritize 操作超时会被忽略,Kubernetes 或者其他扩展模块所给出的优先级值 会被用来选择节点。 |
nodeCacheCapable [必需]bool
|
此字段指示扩展模块可以缓存节点信息,从而调度器应该发送关于可选节点的最少信息, 假定扩展模块已经缓存了集群中所有节点的全部详细信息。 |
managedResources []ExtenderManagedResource
|
|
ignorable [必需]bool
|
此字段用来设置扩展模块是否是可忽略的。换言之,当扩展模块返回错误或者 完全不可达时,调度操作不应失败。 |
ExtenderManagedResource
出现在:
ExtenderManagedResource 描述某扩展模块所管理的扩展资源的参数。
字段 | 描述 |
---|---|
name [必需]string
|
扩展资源的名称。 |
ignoredByScheduler [必需]bool
|
此字段标明 kube-scheduler 是否应在应用断言时忽略此资源。 |
ExtenderTLSConfig
出现在:
ExtenderTLSConfig 包含启用与扩展模块间 TLS 传输所需的配置参数。
字段 | 描述 |
---|---|
insecure [必需]bool
|
访问服务器时不需要检查 TLS 证书。此配置仅针对测试用途。 |
serverName [必需]string
|
serverName 会被发送到服务器端,作为 SNI 标志;客户端会使用
此设置来检查服务器证书。如果 serverName 为空,则会使用联系
服务器时所用的主机名。
|
certFile [必需]string
|
服务器端所要求的 TLS 客户端证书认证。 |
keyFile [必需]string
|
服务器端所要求的 TLS 客户端秘钥认证。 |
caFile [必需]string
|
服务器端被信任的根证书。 |
certData [必需][]byte
|
certData 包含 PEM 编码的字节流(通常从某客户端证书文件读入)。
此字段优先级高于 certFile 字段。
|
keyData [必需][]byte
|
keyData 包含 PEM 编码的字节流(通常从某客户端证书秘钥文件读入)。
此字段优先级高于 keyFile 字段。
|
caData [必需][]byte
|
caData 包含 PEM 编码的字节流(通常从某根证书包文件读入)。
此字段优先级高于 caFile 字段。
|
KubeSchedulerProfile
出现在:
KubeSchedulerProfile 是一个调度方案。
字段 | 描述 |
---|---|
schedulerName [必需]string
|
schedulerName 是与此调度方案相关联的调度器的名称。
如果 schedulerName 与 Pod 的 spec.schedulerName
匹配,则该 Pod 会使用此方案来调度。
|
plugins [必需]Plugins
|
如果针对某个扩展点没有设置被启用或被禁止的插件,则使用该扩展点
的默认插件(如果有的话)。如果设置了 QueueSort 插件,则同一个 QueueSort
插件和 |
pluginConfig [必需][]PluginConfig
|
pluginConfig 是为每个插件提供的一组可选的定制插件参数。
如果忽略了插件的配置参数,则意味着使用该插件的默认配置。
|
Plugin
出现在:
Plugin 指定插件的名称及其权重(如果适用的话)。权重仅用于评分(Score)插件。
字段 | 描述 |
---|---|
name [必需]string
|
插件的名称。 |
weight [必需]int32
|
插件的权重;仅适用于评分(Score)插件。 |
PluginConfig
出现在:
PluginConfig 给出初始化阶段要传递给插件的参数。 在多个扩展点被调用的插件仅会被初始化一次。 参数可以是任意结构。插件负责处理这里所传的参数。
字段 | 描述 |
---|---|
name [必需]string
|
name 是所配置的插件的名称。
|
args [必需]k8s.io/apimachinery/pkg/runtime.RawExtension
|
args 定义在初始化阶段要传递给插件的参数。参数可以为任意结构。
|
PluginSet
出现在:
PluginSet 为某扩展点设置要启用或禁用的插件。 如果数组为空,或者取值为 null,则使用该扩展点的默认插件集合。
字段 | 描述 |
---|---|
enabled [必需][]Plugin
|
enabled 设置在默认插件之外要启用的插件。如果在调度器的配置
文件中也配置了默认插件,则对应插件的权重会被覆盖。
此处所设置的插件会在默认插件之后被调用,调用顺序与数组中元素顺序相同。
|
disabled [必需][]Plugin
|
disabled 设置要被禁用的默认插件。
如果需要禁用所有的默认插件,应该提供仅包含一个元素 "∗" 的数组。
|
Plugins
出现在:
Plugins 结构中包含多个扩展点。当此结构被设置时,针对特定扩展点所启用 的所有插件都在这一列表中。 如果配置中不包含某个扩展点,则使用该扩展点的默认插件集合。 被启用的插件的调用顺序与这里指定的顺序相同,都在默认插件之后调用。 如果它们需要在默认插件之前调用,则需要先行禁止默认插件,之后在这里 按期望的顺序重新启用。
字段 | 描述 |
---|---|
queueSort [必需]PluginSet
|
queueSort 是一个在对调度队列中 Pod 排序时要调用的插件列表。
|
preFilter [必需]PluginSet
|
preFilter 是一个在调度框架中“PreFilter(预过滤)”扩展点上要
调用的插件列表。
|
filter [必需]PluginSet
|
filter 是一个在需要过滤掉无法运行 Pod 的节点时被调用的插件列表。
|
postFilter [必需]PluginSet
|
postFilter 是一个在过滤阶段结束后会被调用的插件列表;
这里的插件只有在找不到合适的节点来运行 Pod 时才会被调用。
|
preScore [必需]PluginSet
|
preScore 是一个在打分之前要调用的插件列表。
|
score [必需]PluginSet
|
score 是一个在对已经通过过滤阶段的节点进行排序时调用的插件的列表。
|
reserve [必需]PluginSet
|
reserve 是一组在运行 Pod 的节点已被选定后,需要预留或者释放资源时调用的插件的列表。
|
permit [必需]PluginSet
|
permit 是一个用来控制 Pod 绑定关系的插件列表。这些插件可以
禁止或者延迟 Pod 的绑定。
|
preBind [必需]PluginSet
|
preBind 是一个在 Pod 被绑定到某节点之前要被调用的插件的列表。
|
bind [必需]PluginSet
|
bind 是一个在调度框架中“Bind(绑定)”扩展点上要调用的
插件的列表。调度器按顺序调用这些插件。只要其中某个插件返回成功,则调度器
就略过余下的插件。
|
postBind [必需]PluginSet
|
postBind 是一个在 Pod 已经被成功绑定之后要调用的插件的列表。
|
multiPoint [必需]PluginSet
|
就优先序而言,插件配置遵从以下基本层次:
这意味着优先序较高的插件会先被运行,并且覆盖 用户显式配置的插件也会比默认插件优先序高。 在这样的层次结构设计之下, |
PodTopologySpreadConstraintsDefaulting
(string
类型的别名)
出现在:
PodTopologySpreadConstraintsDefaulting 定义如何为 PodTopologySpread 插件 设置默认的约束。
RequestedToCapacityRatioParam
出现在:
RequestedToCapacityRatioParam 结构定义 RequestedToCapacityRatio 的参数。
字段 | 描述 |
---|---|
shape [必需][]UtilizationShapePoint
|
shape 是一个定义评分函数曲线的计分点的列表。
|
ResourceSpec
出现在:
ResourceSpec 用来代表某个资源。
字段 | 描述 |
---|---|
name [必需]string
|
资源名称。 |
weight [必需]int64
|
资源权重。 |
ScoringStrategy
出现在:
ScoringStrategy 为节点资源插件定义 ScoringStrategyType。
字段 | 描述 |
---|---|
type [必需]ScoringStrategyType
|
type 用来选择要运行的策略。
|
resources [必需][]ResourceSpec
|
默认的资源集合包含 "cpu" 和 "memory",且二者权重相同。 权重的取值范围为 1 到 100。 当权重未设置或者显式设置为 0 时,意味着使用默认值 1。 |
requestedToCapacityRatio [必需]RequestedToCapacityRatioParam
|
特定于 RequestedToCapacityRatio 策略的参数。 |
ScoringStrategyType
(string
数据类型的别名)
出现在:
ScoringStrategyType 是 NodeResourcesFit 插件所使用的的评分策略类型。
UtilizationShapePoint
出现在:
UtilizationShapePoint 代表的是优先级函数曲线中的一个评分点。
字段 | 描述 |
---|---|
utilization [必需]int32
|
利用率(x 轴)。合法值为 0 到 100。完全被利用的节点映射到 100。 |
score [必需]int32
|
分配给指定利用率的分值(y 轴)。合法值为 0 到 10。 |
ClientConnectionConfiguration
出现在:
ClientConnectionConfiguration 中包含用来构造一个客户端所需的细节。
字段 | 描述 |
---|---|
kubeconfig [必需]string
|
此字段为指向某 KubeConfig 文件的路径。 |
acceptContentTypes [必需]string
|
acceptContentTypes 定义的是客户端与服务器建立连接时要发送的
Accept 头部;这里的设置值会覆盖默认值 "application/json"。
此字段会影响某特定客户端与服务器的所有连接。
|
contentType [必需]string
|
contentType 包含的是此客户端向服务器发送数据时使用的
内容类型(Content Type)。
|
qps [必需]float32
|
qps 控制的是此连接上每秒可以发送的查询个数。
|
burst [必需]int32
|
burst 允许在客户端超出其速率限制时可以累积的额外查询个数。
|
DebuggingConfiguration
出现在:
DebuggingConfiguration 保存与调试功能相关的配置。
字段 | 描述 |
---|---|
enableProfiling [必需]bool
|
此字段允许通过 Web 接口 host:port/debug/pprof/ 执行性能分析。 |
enableContentionProfiling [必需]bool
|
此字段在 enableProfiling 为 true 时允许执行锁竞争分析。
|
FormatOptions
FormatOptions 中包含不同日志格式的配置选项。
字段 | 描述 |
---|---|
json [必需]JSONOptions
|
[实验特性] json 字段包含为 "json" 日志格式提供的配置选项。
|
JSONOptions
出现在:
JSONOptions 包含为 "json" 日志格式所设置的配置选项。
字段 | 描述 |
---|---|
splitStream [必需]bool
|
[实验特性] 此字段将错误信息重定向到标准错误输出(stderr),将提示消息 重定向到标准输出(stdout),并且支持缓存。默认配置为将二者都输出到 标准输出(stdout),且不提供缓存。 |
infoBufferSize [必需]k8s.io/apimachinery/pkg/api/resource.QuantityValue
|
[实验特性] infoBufferSize 用来在分离数据流场景是设置提示
信息数据流的大小。默认值为 0,意味着禁止缓存。
|
LeaderElectionConfiguration
出现在:
LeaderElectionConfiguration 为能够支持领导者选举的组件定义其领导者选举 客户端的配置。
字段 | 描述 |
---|---|
leaderElect [必需]bool
|
leaderElect 启用领导者选举客户端,从而在进入主循环执行之前
先要获得领导者角色。当运行多副本组件时启用此功能有助于提高可用性。
|
leaseDuration [必需]meta/v1.Duration
|
leaseDuration 是非领导角色候选者在观察到需要领导席位更新时
要等待的时间;只有经过所设置时长才可以尝试去获得一个仍处于领导状态但需要
被刷新的席位。这里的设置值本质上意味着某个领导者在被另一个候选者替换掉
之前可以停止运行的最长时长。只有当启用了领导者选举时此字段有意义。
|
renewDeadline [必需]meta/v1.Duration
|
renewDeadline 设置的是当前领导者在停止扮演领导角色之前
需要刷新领导状态的时间间隔。此值必须小于或等于租约期限的长度。
只有到启用了领导者选举时此字段才有意义。
|
retryPeriod [必需]meta/v1.Duration
|
retryPeriod 是客户端在连续两次尝试获得或者刷新领导状态
之间需要等待的时长。只有当启用了领导者选举时此字段才有意义。
|
resourceLock [必需]string
|
此字段给出在领导者选举期间要作为锁来使用的资源对象类型。 |
resourceName [必需]string
|
此字段给出在领导者选举期间要作为锁来使用的资源对象名称。 |
resourceNamespace [必需]string
|
此字段给出在领导者选举期间要作为锁来使用的资源对象所在名字空间。 |
VModuleConfiguration
([]k8s.io/component-base/config/v1alpha1.VModuleItem
的别名)
VModuleConfiguration 是一组文件名(通配符)及其对应的日志详尽程度阈值。
9 - kubeadm 配置 (v1beta2)
概述
包 v1beta2 定义 kubeadm 配置文件格式的 v1beta2 版本。 此版本改进了 v1beta1 的格式,修复了一些小问题并添加了一些新的字段。
从 v1beta1 版本以来的变更列表:
- "certificateKey" 字段被添加到 InitConfiguration 和 JoinConfiguration 中。
- "ignorePreflightErrors" 字段被添加到 NodeRegistrationOptions 中。
- JSON 标签 "omitempty" 在合适的情况下被用到更多的位置。
- "taints" 字段(在 NodeRegistrationOptions)的 JSON 标签 "omitempty" 被去除。
参阅 Kubernetes 1.15 的变更记录以了解详细信息。
从老的 kubeadm 配置版本迁移:
请使用 kubeadm v1.15.x 的 "kubeadm config migrate" 命令将 v1beta1 版本的配置文件转换为 v1beta2。 (从更老版本的 kubeadm 配置文件迁移需要使用更老版本的 kubeadm。例如:
- kubeadm v1.11 版本可以用来从 v1alpha1 迁移到 v1alpha2 版本;kubeadm v1.12 可用来将 v1alpha2 翻译为 v1alpha3。
- kubeadm v1.13 或 v1.14 可以用来将 v1alpha3 迁移到 v1beta1。
尽管如此,kubeadm v1.15.x 会支持读取 v1beta1 版本的 kubeadm 配置文件格式。
基础知识
配置 kubeadm 的推荐方式是使用 --config
选项向其传递一个 YAML 配置文件。
kubeadm 配置文件中定义的某些配置选项也可以作为命令行标志来使用,
不过这种方法所支持的都是一些最常见的、最简单的使用场景。
一个 kubeadm 配置文件中可以包含多个配置类型,使用三根横线(---
)作为分隔符。
kubeadm 支持以下配置类型:
apiVersion: kubeadm.k8s.io/v1beta2 kind: InitConfiguration apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConfiguration apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration apiVersion: kubeadm.k8s.io/v1beta2 kind: JoinConfiguration
要输出 "init" 和 "join" 动作的默认值,可以使用下面的命令:
kubeadm config print init-defaults kubeadm config print join-defaults
配置文件中必须包含的配置类型列表取决于你在执行的动作(init
或 join
),
也取决于你要使用的配置选项(默认值或者高级定制)。
如果某些配置类型没有提供,或者仅部分提供,kubeadm 将使用默认值;
kubeadm 所提供的默认值在必要时也会保证其在多个组件之间是一致的
(例如控制器管理器上的 --cluster-cidr
参数和 kube-proxy 上的
clusterCIDR
)。
用户总是可以重载默认配置值,唯一的例外是一小部分与安全性相关联的配置 (例如在 API 服务器上强制实施 Node 和 RBAC 鉴权模式)。
如果用户所提供的配置类型并非你所执行的操作需要的, kubeadm 会忽略这些配置类型并打印警告信息。
kubeadm init 配置类型
当带有 --config
选项来执行 kubeadm init 命令时,可以使用下面的配置类型:
InitConfiguration
、ClusterConfiguration
、KubeProxyConfiguration
、
KubeletConfiguration
,但 InitConfiguration
和 ClusterConfiguration
之间只有一个是必须提供的。
apiVersion: kubeadm.k8s.io/v1beta2 kind: InitConfiguration bootstrapTokens: ... nodeRegistration: ...
类型 InitConfiguration 用来配置运行时设置,就 kubeadm init 命令而言, 包括启动引导令牌以及所有与 kubeadm 所在节点相关的设置,包括:
nodeRegistration
:其中包含与向集群注册新节点相关的字段; 使用这个类型来定制节点名称、要使用的 CRI 套接字或者其他仅对当前节点起作用的设置 (例如节点 IP 地址)。apiServer
:代表的是要部署到此节点上的 API 服务器示例的端点; 使用这个类型可以完成定制 API 服务器公告地址这类操作。
apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConfiguration networking: ... etcd: ... apiServer: extraArgs: ... extraVolumes: ... ...
类型 ClusterConfiguration
用来定制集群范围的设置,具体包括以下设置:
networking
:其中包含集群的网络拓扑配置。使用这一部分可以定制 Pod 的子网或者 Service 的子网。etcd
:etcd 数据库的配置。例如使用这个部分可以定制本地 etcd 或者配置 API 服务器使用一个外部的 etcd 集群。kube-apiserver
、kube-scheduler
、kube-controller-manager
配置:这些部分可以通过添加定制的设置或者重载 kubeadm 的默认设置来定制控制面组件。
apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration ...
KubeProxyConfiguration 类型用来更改传递给在集群中部署的 kube-proxy 实例的配置。 如果此对象没有提供,或者仅部分提供,kubeadm 使用默认值。
关于 kube-proxy 的官方文档,可参阅 https://kubernetes.io/zh/docs/reference/command-line-tools-reference/kube-proxy/ 或者 https://godoc.org/k8s.io/kube-proxy/config/v1alpha1#KubeProxyConfiguration。
apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration ...
KubeletConfiguration 类型用来更改传递给在集群中部署的 kubelet 实例的配置。 如果此对象没有提供,或者仅部分提供,kubeadm 使用默认值。
关于 kubelet 的官方文档,可参阅 https://kubernetes.io/zh/docs/reference/command-line-tools-reference/kubelet/ 或者 https://godoc.org/k8s.io/kubelet/config/v1beta1#KubeletConfiguration。
下面是一个为执行 kubeadm init
而提供的、包含多个配置类型的单一 YAML 文件,
其中填充了很多部分。
apiVersion: kubeadm.k8s.io/v1beta2 kind: InitConfiguration bootstrapTokens: - token: "9a08jv.c0izixklcxtmnze7" description: "kubeadm bootstrap token" ttl: "24h" - token: "783bde.3f89s0fje9f38fhf" description: "another bootstrap token" usages: - authentication - signing groups: - system:bootstrappers:kubeadm:default-node-token nodeRegistration: name: "ec2-10-100-0-1" criSocket: "/var/run/dockershim.sock" taints: - key: "kubeadmNode" value: "master" effect: "NoSchedule" kubeletExtraArgs: v: 4 ignorePreflightErrors: - IsPrivilegedUser localAPIEndpoint: advertiseAddress: "10.100.0.1" bindPort: 6443 certificateKey: "e6a2eb8581237ab72a4f494f30285ec12a9694d750b9785706a83bfcbbbd2204" --- apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConfiguration etcd: # one of local or external local: imageRepository: "k8s.gcr.io" imageTag: "3.2.24" dataDir: "/var/lib/etcd" extraArgs: listen-client-urls: "http://10.100.0.1:2379" serverCertSANs: - "ec2-10-100-0-1.compute-1.amazonaws.com" peerCertSANs: - "10.100.0.1" # external: # endpoints: # - "10.100.0.1:2379" # - "10.100.0.2:2379" # caFile: "/etcd/kubernetes/pki/etcd/etcd-ca.crt" # certFile: "/etcd/kubernetes/pki/etcd/etcd.crt" # keyFile: "/etcd/kubernetes/pki/etcd/etcd.key" networking: serviceSubnet: "10.96.0.0/16" podSubnet: "10.244.0.0/24" dnsDomain: "cluster.local" kubernetesVersion: "v1.12.0" controlPlaneEndpoint: "10.100.0.1:6443" apiServer: extraArgs: authorization-mode: "Node,RBAC" extraVolumes: - name: "some-volume" hostPath: "/etc/some-path" mountPath: "/etc/some-pod-path" readOnly: false pathType: File certSANs: - "10.100.1.1" - "ec2-10-100-0-1.compute-1.amazonaws.com" timeoutForControlPlane: 4m0s controllerManager: extraArgs: "node-cidr-mask-size": "20" extraVolumes: - name: "some-volume" hostPath: "/etc/some-path" mountPath: "/etc/some-pod-path" readOnly: false pathType: File scheduler: extraArgs: address: "10.100.0.1" extraVolumes: - name: "some-volume" hostPath: "/etc/some-path" mountPath: "/etc/some-pod-path" readOnly: false pathType: File certificatesDir: "/etc/kubernetes/pki" imageRepository: "k8s.gcr.io" useHyperKubeImage: false clusterName: "example-cluster" --- apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration # kubelet specific options here --- apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration # kube-proxy specific options here
kubeadm join 配置类型
当带有 --config
选项来执行 kubeadm join
操作时,
需要提供 JoinConfiguration 类型。
apiVersion: kubeadm.k8s.io/v1beta2 kind: JoinConfiguration ...
JoinConfiguration 类型用来配置运行时设置,就 kubeadm join
而言包括用来访问集群信息的发现方法,以及所有特定于 kubeadm 执行所在节点的设置,
包括:
nodeRegistration
:其中包含向集群注册新节点相关的配置字段; 使用这个类型可以定制节点名称、用使用的 CRI 套接字和所有其他仅适用于当前节点的设置 (例如节点 IP 地址)。apiEndpoint
:用来代表最终要部署到此节点上的 API 服务器实例的端点。
资源类型
ClusterConfiguration
ClusterConfiguration 包含一个 kubadm 集群的集群范围配置信息。
字段 | 描述 |
---|---|
apiVersion string | kubeadm.k8s.io/v1beta2 |
kind string | ClusterConfiguration |
etcd [必需]Etcd
|
|
networking [必需]Networking
|
networking 字段包含集群的网络拓扑配置。
|
kubernetesVersion [必需]string
|
|
controlPlaneEndpoint [必需]string
|
可能的用法有:
|
apiServer [必需]APIServer
|
|
controllerManager [必需]ControlPlaneComponent
|
|
scheduler [必需]ControlPlaneComponent
|
|
dns [必需]DNS
|
|
certificatesDir [必需]string
|
|
imageRepository [必需]string
|
|
useHyperKubeImage [必需]bool
|
|
featureGates [必需]map[string]bool
|
|
clusterName [必需]string
|
集群名称。 |
ClusterStatus
ClusterStatus 包含集群信息。ClusterStatus 会被保存在集群中 kubeadm-config ConfigMap 中,之后在新的控制面实例添加到集群或者现有控制面实例离开集群时被更新。
字段 | 描述 |
---|---|
apiVersion string | kubeadm.k8s.io/v1beta2 |
kind string | ClusterStatus |
apiEndpoints [必需]map[string]APIEndpoint
|
|
InitConfiguration
InitConfiguration 包含一组特定于 "kubeadm init" 的运行时元素。
字段 | 描述 |
---|---|
apiVersion string | kubeadm.k8s.io/v1beta2 |
kind string | InitConfiguration |
bootstrapTokens [必需][]BootstrapToken
|
|
nodeRegistration [必需]NodeRegistrationOptions
|
|
localAPIEndpoint [必需]APIEndpoint
|
|
certificateKey [必需]string
|
|
JoinConfiguration
JoinConfiguration 包含描述特定节点的元素。
字段 | 描述 |
---|---|
apiVersion string | kubeadm.k8s.io/v1beta2 |
kind string | JoinConfiguration |
nodeRegistration [必需]NodeRegistrationOptions
|
nodeRegistration 包含与向集群注册控制面节点相关的字段。
|
caCertPath [必需]string
|
|
discovery [必需]Discovery
|
|
controlPlane [必需]JoinControlPlane
|
|
APIEndpoint
出现在:
APIEndpoint 结构包含某节点上部署的 API 服务器的配置元素。
字段 | 描述 |
---|---|
advertiseAddress [必需]string
|
|
bindPort [必需]int32
|
bindPort 设置 API 服务器要绑定到的安全端口。默认值为 6443。
|
APIServer
出现在:
APIServer 包含集群中 API 服务器部署所必需的设置。
字段 | 描述 |
---|---|
ControlPlaneComponent [必需]ControlPlaneComponent
|
(ControlPlaneComponent 结构的字段被嵌入到此类型中)
无描述
|
certSANs [必需][]string
|
certSANs 设置 API 服务器签署证书所用的额外主题替代名(Subject Alternative Name,SAN)。
|
timeoutForControlPlane [必需]meta/v1.Duration
|
|
BootstrapToken
出现在:
BootstrapToken 描述的是一个启动引导令牌,以 Secret 形式存储在集群中。
字段 | 描述 |
---|---|
token [必需]BootstrapTokenString
|
|
description [必需]string
|
|
ttl [必需]meta/v1.Duration
|
|
expires [必需]meta/v1.Time
|
|
usages [必需][]string
|
|
groups [必需][]string
|
|
BootstrapTokenDiscovery
出现在:
BootstrapTokenDiscovery 用来设置基于引导令牌的服务发现选项。
字段 | 描述 |
---|---|
token [必需]string
|
|
apiServerEndpoint [必需]string
|
|
caCertHashes [必需][]string
|
|
unsafeSkipCAVerification [必需]bool
|
unsafeSkipCAVerification 允许在使用基于令牌的服务发现时不使用
caCertHashes 来执行 CA 验证。这会弱化 kubeadm 的安全性,
因为其他节点可以伪装成控制面。
|
BootstrapTokenString
出现在:
BootstrapTokenString 形式为 abcdef.abcdef0123456789
的一个令牌,
用来从加入集群的节点角度验证 API 服务器的身份,或者 "kubeadm join"
在节点启动引导是作为一种身份认证方法。
此令牌的生命期是短暂的,并且应该如此。
字段 | 描述 |
---|---|
id [必需]string
|
无描述 |
secret [必需]string
|
无描述 |
ControlPlaneComponent
出现在:
ControlPlaneComponent 中包含对集群中所有控制面组件都适用的设置。
字段 | 描述 |
---|---|
extraArgs [必需]map[string]string
|
|
extraVolumes [必需][]HostPathMount
|
|
DNS
出现在:
DNS 结构定义要在集群中使用的 DNS 插件。
字段 | 描述 |
---|---|
type [必需]DNSAddOnType
|
|
ImageMeta [必需]ImageMeta
|
(ImageMeta 的成员被内嵌到此类型中)。
|
DNSAddOnType
(string
数据类型的别名)
出现在:
DNSAddOnType 定义的是用来辨识 DNS 插件类型的字符串。
Discovery
出现在:
Discovery 设置 TLS 启动引导过程中 kubelet 要使用的配置选项。
字段 | 描述 |
---|---|
bootstrapToken [必需]BootstrapTokenDiscovery
|
|
file [必需]FileDiscovery
|
用来设置一个文件或者 URL 路径,指向一个 kubeconfig 文件;
该配置文件中包含集群信息。
|
tlsBootstrapToken [必需]string
|
|
timeout [必需]meta/v1.Duration
|
|
Etcd
出现在:
Etcd 包含用来描述 etcd 配置的元素。
字段 | 描述 |
---|---|
local [必需]LocalEtcd
|
|
external [必需]ExternalEtcd
|
|
ExternalEtcd
出现在:
ExternalEtcd 描述外部 etcd 集群。 kubeadm 不清楚证书文件的存放位置,因此必须单独提供证书信息。
字段 | 描述 |
---|---|
endpoints [必需][]string
|
|
caFile [必需]string
|
|
certFile [必需]string
|
|
keyFile [必需]string
|
|
FileDiscovery
出现在:
FileDiscovery 用来指定一个文件或者 URL 路径,指向一个 kubeconfig 文件; 该配置文件可用来加载集群信息。
字段 | 描述 |
---|---|
kubeConfigPath [必需]string
|
|
HostPathMount
出现在:
HostPathMount 包含从宿主节点挂载的卷的信息。
字段 | 描述 |
---|---|
name [必需]string
|
|
hostPath [必需]string
|
|
mountPath [必需]string
|
|
readOnly [必需]bool
|
|
pathType [必需]core/v1.HostPathType
|
|
ImageMeta
出现在:
ImageMeta 用来配置来源不是 Kubernetes/kubernetes 发布过程的组件所使用的镜像。
字段 | 描述 |
---|---|
imageRepository [必需]string
|
|
imageTag [必需]string
|
|
JoinControlPlane
出现在:
JoinControlPlane 包含在正在加入集群的节点上要部署的额外的控制面组件的设置。
字段 | 描述 |
---|---|
localAPIEndpoint [必需]APIEndpoint
|
|
certificateKey [必需]string
|
|
LocalEtcd
出现在:
LocalEtcd 描述的是 kubeadm 要使用的本地 etcd 集群。
字段 | 描述 |
---|---|
ImageMeta [必需]ImageMeta
|
(ImageMeta 结构的字段被嵌入到此类型中。)
ImageMeta 允许用户为 etcd 定制要使用的容器。 |
dataDir [必需]string
|
|
extraArgs [必需]map[string]string
|
|
serverCertSANs [必需][]string
|
|
peerCertSANs [必需][]string
|
|
Networking
出现在:
Networking 中包含描述集群网络配置的元素。
字段 | 描述 |
---|---|
serviceSubnet [必需]string
|
|
podSubnet [必需]string
|
|
dnsDomain [必需]string
|
|
NodeRegistrationOptions
出现在:
NodeRegistrationOptions 包含向集群中注册新的控制面或节点所需要的信息; 节点注册可能通过 "kubeadm init" 或 "kubeadm join" 完成。
字段 | 描述 |
---|---|
name [必需]string
|
|
criSocket [必需]string
|
|
taints [必需][]core/v1.Taint
|
|
kubeletExtraArgs [必需]map[string]string
|
|
ignorePreflightErrors [必需][]string
|
|
10 - kubeadm 配置 (v1beta3)
概述
包 v1beta3 定义 kubeadm 配置文件格式的 v1beta3 版本。 此版本改进了 v1beta2 的格式,修复了一些小问题并添加了一些新的字段。
从 v1beta2 版本以来的变更列表:
- 已弃用的字段 "ClusterConfiguration.useHyperKubeImage" 现在被移除。 kubeadm 不再支持 hyperkube 镜像。
- 字段 "ClusterConfiguration.dns.type" 已经被移除,因为 CoreDNS 是 kubeadm 所支持 的唯一 DNS 服务器类型。
- 保存私密信息的字段现在包含了 "datapolicy" 标记(tag)。 这一标记会导致 API 结构通过 klog 打印输出时,会忽略这些字段的值。
- 添加了 "InitConfiguration.skipPhases", "JoinConfiguration.skipPhases", 以允许在执行 kubeadm init/join 命令时略过某些阶段。
- 添加了 "InitConfiguration.nodeRegistration.imagePullPolicy" 和 "JoinConfiguration.nodeRegistration.imagePullPolicy" 以允许在 kubeadm init 和 kubeadm join 期间指定镜像拉取策略。 这两个字段的值必须是 "Always"、"Never" 或 "IfNotPresent" 之一。 默认值是 "IfNotPresent",也是添加此字段之前的默认行为。
- 添加了 "InitConfiguration.patches.directory", "JoinConfiguration.patches.directory" 以允许用户配置一个目录, kubeadm 将从该目录中提取组件的补丁包。
- BootstrapToken∗ API 和相关的工具被从 "kubeadm" API 组中移出, 放到一个新的 "bootstraptoken" 组中。kubeadm API 版本 v1beta3 不再包含 BootstrapToken∗ 结构。
从老的 kubeadm 配置版本迁移:
- kubeadm v1.15.x 及更新的版本可以用来从 v1beta1 迁移到 v1beta2 版本;
- kubeadm v1.22.x 及更新的版本不再支持 v1beta1 和更老的 API,但可以用来 从 v1beta2 迁移到 v1beta3。
基础知识
配置 kubeadm 的推荐方式是使用 --config
选项向其传递一个 YAML 配置文件。
kubeadm 配置文件中定义的某些配置选项也可以作为命令行标志来使用,不过这种
方法所支持的都是一些最常见的、最简单的使用场景。
一个 kubeadm 配置文件中可以包含多个配置类型,使用三根横线(---
)作为分隔符。
kubeadm 支持以下配置类型:
apiVersion: kubeadm.k8s.io/v1beta3 kind: InitConfiguration apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration apiVersion: kubeadm.k8s.io/v1beta3 kind: JoinConfiguration
要输出 "init" 和 "join" 动作的默认值,可以使用下面的命令:
kubeadm config print init-defaults kubeadm config print join-defaults
配置文件中必须包含的配置类型列表取决于你在执行的动作(init
或 join
),
也取决于你要使用的配置选项(默认值或者高级定制)。
如果某些配置类型没有提供,或者仅部分提供,kubeadm 将使用默认值;
kubeadm 所提供的默认值在必要时也会保证其在多个组件之间是一致的
(例如控制器管理器上的 --cluster-cidr
参数和 kube-proxy 上的
clusterCIDR
)。
用户总是可以重载默认配置值,唯一的例外是一小部分与安全性相关联的配置 (例如在 API 服务器上强制实施 Node 和 RBAC 鉴权模式)。
如果用户所提供的配置类型并非你所执行的操作需要的,kubeadm 会忽略这些配置类型 并打印警告信息。
kubeadm init 配置类型
当带有 --config
选项来执行 kubeadm init 命令时,可以使用下面的配置类型:
`InitConfiguration`、`ClusterConfiguration`、`KubeProxyConfiguration`、`KubeletConfiguration`,
但 `InitConfiguration` 和 `ClusterConfiguration`
之间只有一个是必须提供的。
apiVersion: kubeadm.k8s.io/v1beta3 kind: InitConfiguration bootstrapTokens: ... nodeRegistration: ...
类型 InitConfiguration 用来配置运行时设置,就 kubeadm init 命令而言,包括 启动引导令牌以及所有与 kubeadm 所在节点相关的设置,包括:
- nodeRegistration:其中包含与向集群注册新节点相关的字段;使用这个类型来 定制节点名称、要使用的 CRI 套接字或者其他仅对当前节点起作用的设置 (例如节点 IP 地址)。
- localAPIEndpoint:代表的是要部署到此节点上的 API 服务器示例的端点; 使用这个类型可以完成定制 API 服务器公告地址这类操作。
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
networking:
...
etcd:
...
apiServer:
extraArgs:
...
extraVolumes:
...
...
类型 `ClusterConfiguration` 用来定制集群范围的设置,具体包括以下设置:
networking
:其中包含集群的网络拓扑配置。使用这一部分可以定制 Pod 的 子网或者 Service 的子网。etcd
:etcd 数据库的配置。例如使用这个部分可以定制本地 etcd 或者配置 API 服务器 使用一个外部的 etcd 集群。kube-apiserver
、kube-scheduler
、kube-controller-manager
配置:这些部分可以通过添加定制的设置或者重载 kubeadm 的默认设置来定制控制面组件。
apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration ...
KubeProxyConfiguration 类型用来更改传递给在集群中部署的 kube-proxy 实例 的配置。如果此对象没有提供,或者仅部分提供,kubeadm 使用默认值。
关于 kube-proxy 的官方文档,可参阅 https://kubernetes.io/zh/docs/reference/command-line-tools-reference/kube-proxy/ 或者 https://godoc.org/k8s.io/kube-proxy/config/v1alpha1#KubeProxyConfiguration。
apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration ...
KubeletConfiguration 类型用来更改传递给在集群中部署的 kubelet 实例的配置。 如果此对象没有提供,或者仅部分提供,kubeadm 使用默认值。
关于 kubelet 的官方文档,可参阅 https://kubernetes.io/zh/docs/reference/command-line-tools-reference/kubelet/ 或者 https://godoc.org/k8s.io/kubelet/config/v1beta1#KubeletConfiguration。
下面是一个为执行 kubeadm init
而提供的、包含多个配置类型的单一 YAML 文件,
其中填充了很多部分。
apiVersion: kubeadm.k8s.io/v1beta3 kind: InitConfiguration bootstrapTokens: - token: "9a08jv.c0izixklcxtmnze7" description: "kubeadm bootstrap token" ttl: "24h" - token: "783bde.3f89s0fje9f38fhf" description: "another bootstrap token" usages: - authentication - signing groups: - system:bootstrappers:kubeadm:default-node-token nodeRegistration: name: "ec2-10-100-0-1" criSocket: "/var/run/dockershim.sock" taints: - key: "kubeadmNode" value: "master" effect: "NoSchedule" kubeletExtraArgs: v: 4 ignorePreflightErrors: - IsPrivilegedUser imagePullPolicy: "IfNotPresent" localAPIEndpoint: advertiseAddress: "10.100.0.1" bindPort: 6443 certificateKey: "e6a2eb8581237ab72a4f494f30285ec12a9694d750b9785706a83bfcbbbd2204" skipPhases: - addon/kube-proxy --- apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration etcd: # one of local or external local: imageRepository: "k8s.gcr.io" imageTag: "3.2.24" dataDir: "/var/lib/etcd" extraArgs: listen-client-urls: "http://10.100.0.1:2379" serverCertSANs: - "ec2-10-100-0-1.compute-1.amazonaws.com" peerCertSANs: - "10.100.0.1" # external: # endpoints: # - "10.100.0.1:2379" # - "10.100.0.2:2379" # caFile: "/etcd/kubernetes/pki/etcd/etcd-ca.crt" # certFile: "/etcd/kubernetes/pki/etcd/etcd.crt" # keyFile: "/etcd/kubernetes/pki/etcd/etcd.key" networking: serviceSubnet: "10.96.0.0/16" podSubnet: "10.244.0.0/24" dnsDomain: "cluster.local" kubernetesVersion: "v1.21.0" controlPlaneEndpoint: "10.100.0.1:6443" apiServer: extraArgs: authorization-mode: "Node,RBAC" extraVolumes: - name: "some-volume" hostPath: "/etc/some-path" mountPath: "/etc/some-pod-path" readOnly: false pathType: File certSANs: - "10.100.1.1" - "ec2-10-100-0-1.compute-1.amazonaws.com" timeoutForControlPlane: 4m0s controllerManager: extraArgs: "node-cidr-mask-size": "20" extraVolumes: - name: "some-volume" hostPath: "/etc/some-path" mountPath: "/etc/some-pod-path" readOnly: false pathType: File scheduler: extraArgs: address: "10.100.0.1" extraVolumes: - name: "some-volume" hostPath: "/etc/some-path" mountPath: "/etc/some-pod-path" readOnly: false pathType: File certificatesDir: "/etc/kubernetes/pki" imageRepository: "k8s.gcr.io" clusterName: "example-cluster" --- apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration # kubelet specific options here --- apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration # kube-proxy specific options here
kubeadm join 配置类型
当带有 --config
选项来执行 kubeadm join
操作时,
需要提供 JoinConfiguration 类型。
apiVersion: kubeadm.k8s.io/v1beta3 kind: JoinConfiguration ...
JoinConfiguration 类型用来配置运行时设置,就 kubeadm join
而言包括
用来访问集群信息的发现方法,以及所有特定于 kubeadm 执行所在节点的设置,包括:
nodeRegistration
:其中包含向集群注册新节点相关的配置字段; 使用这个类型可以定制节点名称、用使用的 CRI 套接字和所有其他仅适用于当前节点的设置 (例如节点 IP 地址)。apiEndpoint
:用来代表最终要部署到此节点上的 API 服务器实例的端点。
资源类型
ClusterConfiguration
ClusterConfiguration 包含一个 kubadm 集群的集群范围配置信息。
字段 | 描述 |
---|---|
apiVersion string | kubeadm.k8s.io/v1beta3 |
kind string | ClusterConfiguration |
etcd Etcd
|
|
networking Networking
|
networking 字段包含集群的网络拓扑配置。
|
kubernetesVersion string
|
|
controlPlaneEndpoint string
|
可能的用法有:
|
apiServer APIServer
|
|
controllerManager ControlPlaneComponent
|
|
scheduler ControlPlaneComponent
|
|
dns DNS
|
|
certificatesDir string
|
|
imageRepository string
|
|
featureGates map[string]bool
|
|
clusterName string
|
集群名称。 |
InitConfiguration
InitConfiguration 包含一组特定于 "kubeadm init" 的运行时元素。
这里的字段仅用于第一次运行 kubeadm init
命令。
之后,此结构中的字段信息不会再被上传到 kubeadm upgrade
所要使用的
kubeadm-config
ConfigMap 中。
这些字段必须设置 "omitempty"
字段 | 描述 |
---|---|
apiVersion string | kubeadm.k8s.io/v1beta3 |
kind string | InitConfiguration |
bootstrapTokens []BootstrapToken
|
|
nodeRegistration NodeRegistrationOptions
|
|
localAPIEndpoint APIEndpoint
|
|
certificateKey string
|
|
skipPhases []string
|
|
patches Patches
|
|
JoinConfiguration
JoinConfiguration 包含描述特定节点的元素。
字段 | 描述 |
---|---|
apiVersion string | kubeadm.k8s.io/v1beta3 |
kind string | JoinConfiguration |
nodeRegistration NodeRegistrationOptions
|
|
caCertPath string
|
|
discovery [必需]-->[必需]Discovery
|
|
controlPlane JoinControlPlane
|
|
skipPhases []string
|
此字段包含在命令执行过程中要略过的阶段。通过 |
patches Patches
|
此字段包含 |
APIEndpoint
出现在:
APIEndpoint 结构包含某节点上部署的 API 服务器的配置元素。
字段 | 描述 |
---|---|
advertiseAddress string
|
|
bindPort int32
|
|
APIServer
出现在:
APIServer 包含集群中 API 服务器部署所必需的设置。
字段 | 描述 |
---|---|
ControlPlaneComponent [必需]-->[必需]ControlPlaneComponent
|
(ControlPlaneComponent 结构的字段被嵌入到此类型中)
无描述.
|
certSANs []string
|
|
timeoutForControlPlane meta/v1.Duration
|
|
BootstrapTokenDiscovery
出现在:
BootstrapTokenDiscovery 用来设置基于引导令牌的服务发现选项。
字段 | 描述 |
---|---|
token [必需]-->[必需]string
|
|
apiServerEndpoint string
|
|
caCertHashes []string
|
|
unsafeSkipCAVerification bool
|
|
ControlPlaneComponent
出现在:
ControlPlaneComponent 中包含对集群中所有控制面组件都适用的设置。
字段 | 描述 |
---|---|
extraArgs map[string]string
|
|
extraVolumes []HostPathMount
|
|
DNS
出现在:
DNS 结构定义要在集群中使用的 DNS 插件。
字段 | 描述 |
---|---|
ImageMeta [必需]-->[必需]ImageMeta
|
(ImageMeta 的成员被内嵌到此类型中)。
|
Discovery
出现在:
Discovery 设置 TLS 启动引导过程中 kubelet 要使用的配置选项。
字段 | 描述 |
---|---|
bootstrapToken BootstrapTokenDiscovery
|
|
file FileDiscovery
|
|
tlsBootstrapToken string
|
|
timeout meta/v1.Duration
|
|
Etcd
出现在:
Etcd 包含用来描述 etcd 配置的元素。
字段 | 描述 |
---|---|
local LocalEtcd
|
|
external ExternalEtcd
|
|
ExternalEtcd
出现在:
ExternalEtcd 描述外部 etcd 集群。 kubeadm 不清楚证书文件的存放位置,因此必须单独提供证书信息。
字段 | 描述 |
---|---|
endpoints [必需]-->[必需][]string
|
|
caFile [必需]-->[必需]string
|
|
certFile [必需]string
|
|
keyFile [必需]string
|
|
FileDiscovery
出现在:
FileDiscovery 用来指定一个文件或者 URL 路径,指向一个 kubeconfig 文件;该配置文件 可用来加载集群信息。
字段 | 描述 |
---|---|
kubeConfigPath [必需]string
|
|
HostPathMount
出现在:
HostPathMount 包含从宿主节点挂载的卷的信息。
字段 | 描述 |
---|---|
name [必需]string
|
|
hostPath [必需]string
|
|
mountPath [必需]string
|
|
readOnly bool
|
|
pathType core/v1.HostPathType
|
|
ImageMeta
出现在:
ImageMeta 用来配置来源不是 Kubernetes/kubernetes 发布过程的组件所使用的镜像。
字段 | 描述 |
---|---|
imageRepository string
|
|
imageTag string
|
|
JoinControlPlane
出现在:
JoinControlPlane 包含在正在加入集群的节点上要部署的额外的控制面组件的 设置。
字段 | 描述 |
---|---|
localAPIEndpoint APIEndpoint
|
|
certificateKey string
|
|
LocalEtcd
出现在:
LocalEtcd 描述的是 kubeadm 要使用的本地 etcd 集群。
字段 | 描述 |
---|---|
ImageMeta [必需]ImageMeta
|
(ImageMeta 结构的字段被嵌入到此类型中。)
ImageMeta 允许用户为 etcd 定制要使用的容器。 |
dataDir [必需]string
|
|
extraArgs map[string]string
|
|
serverCertSANs []string
|
|
peerCertSANs []string
|
|
Networking
出现在:
Networking 中包含描述集群网络配置的元素。
字段 | 描述 |
---|---|
serviceSubnet string
|
|
podSubnet string
|
|
dnsDomain string
|
|
NodeRegistrationOptions
出现在:
NodeRegistrationOptions 包含向集群中注册新的控制面或节点所需要的信息; 节点注册可能通过 "kubeadm init" 或 "kubeadm join" 完成。
字段 | 描述 |
---|---|
name string
|
|
criSocket string
|
|
taints [必需][]core/v1.Taint
|
|
kubeletExtraArgs map[string]string
|
|
ignorePreflightErrors []string
|
|
imagePullPolicy core/v1.PullPolicy
|
|
Patches
出现在:
Patches 包含要向 kubeadm 所部署的组件应用的补丁信息。
字段 | 描述 |
---|---|
directory string
|
|
BootstrapToken
出现在:
BootstrapToken 描述的是一个启动引导令牌,以 Secret 形式存储在集群中。
字段 | 描述 |
---|---|
token [必需]BootstrapTokenString
|
|
description string
|
|
ttl meta/v1.Duration
|
|
expires meta/v1.Time
|
|
usages []string
|
|
groups []string
|
|
BootstrapTokenString
出现在:
BootstrapTokenString 形式为 abcdef.abcdef0123456789
的一个令牌,
用来从加入集群的节点角度验证 API 服务器的身份,或者 "kubeadm join"
在节点启动引导是作为一种身份认证方法。
此令牌的生命期是短暂的,并且应该如此。
字段 | 描述 |
---|---|
id [必需]string
|
无描述 |
secret [必需]string
|
无描述 |
11 - Kubelet Configuration (v1beta1)
Resource Types
KubeletConfiguration
KubeletConfiguration contains the configuration for the Kubelet
Field | Description |
---|---|
apiVersion string | kubelet.config.k8s.io/v1beta1 |
kind string | KubeletConfiguration |
enableServer [Required]bool
|
enableServer enables Kubelet's secured server. Note: Kubelet's insecure port is controlled by the readOnlyPort option. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may disrupt components that interact with the Kubelet server. Default: true |
staticPodPath string
|
staticPodPath is the path to the directory containing local (static) pods to run, or the path to a single static pod file. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that the set of static pods specified at the new path may be different than the ones the Kubelet initially started with, and this may disrupt your node. Default: "" |
syncFrequency meta/v1.Duration
|
syncFrequency is the max period between synchronizing running containers and config. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that shortening this duration may have a negative performance impact, especially as the number of Pods on the node increases. Alternatively, increasing this duration will result in longer refresh times for ConfigMaps and Secrets. Default: "1m" |
fileCheckFrequency meta/v1.Duration
|
fileCheckFrequency is the duration between checking config files for new data Dynamic Kubelet Config (beta): If dynamically updating this field, consider that shortening the duration will cause the Kubelet to reload local Static Pod configurations more frequently, which may have a negative performance impact. Default: "20s" |
httpCheckFrequency meta/v1.Duration
|
httpCheckFrequency is the duration between checking http for new data Dynamic Kubelet Config (beta): If dynamically updating this field, consider that shortening the duration will cause the Kubelet to poll staticPodURL more frequently, which may have a negative performance impact. Default: "20s" |
staticPodURL string
|
staticPodURL is the URL for accessing static pods to run Dynamic Kubelet Config (beta): If dynamically updating this field, consider that the set of static pods specified at the new URL may be different than the ones the Kubelet initially started with, and this may disrupt your node. Default: "" |
staticPodURLHeader map[string][]string
|
staticPodURLHeader is a map of slices with HTTP headers to use when accessing the podURL Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may disrupt the ability to read the latest set of static pods from StaticPodURL. Default: nil |
address string
|
address is the IP address for the Kubelet to serve on (set to 0.0.0.0 for all interfaces). Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may disrupt components that interact with the Kubelet server. Default: "0.0.0.0" |
port int32
|
port is the port for the Kubelet to serve on. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may disrupt components that interact with the Kubelet server. Default: 10250 |
readOnlyPort int32
|
readOnlyPort is the read-only port for the Kubelet to serve on with no authentication/authorization. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may disrupt components that interact with the Kubelet server. Default: 0 (disabled) |
tlsCertFile string
|
tlsCertFile is the file containing x509 Certificate for HTTPS. (CA cert, if any, concatenated after server cert). If tlsCertFile and tlsPrivateKeyFile are not provided, a self-signed certificate and key are generated for the public address and saved to the directory passed to the Kubelet's --cert-dir flag. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may disrupt components that interact with the Kubelet server. Default: "" |
tlsPrivateKeyFile string
|
tlsPrivateKeyFile is the file containing x509 private key matching tlsCertFile Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may disrupt components that interact with the Kubelet server. Default: "" |
tlsCipherSuites []string
|
TLSCipherSuites is the list of allowed cipher suites for the server. Values are from tls package constants (https://golang.org/pkg/crypto/tls/#pkg-constants). Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may disrupt components that interact with the Kubelet server. Default: nil |
tlsMinVersion string
|
TLSMinVersion is the minimum TLS version supported. Values are from tls package constants (https://golang.org/pkg/crypto/tls/#pkg-constants). Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may disrupt components that interact with the Kubelet server. Default: "" |
rotateCertificates bool
|
rotateCertificates enables client certificate rotation. The Kubelet will request a new certificate from the certificates.k8s.io API. This requires an approver to approve the certificate signing requests. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that disabling it may disrupt the Kubelet's ability to authenticate with the API server after the current certificate expires. Default: false |
serverTLSBootstrap bool
|
serverTLSBootstrap enables server certificate bootstrap. Instead of self signing a serving certificate, the Kubelet will request a certificate from the certificates.k8s.io API. This requires an approver to approve the certificate signing requests. The RotateKubeletServerCertificate feature must be enabled. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that disabling it will stop the renewal of Kubelet server certificates, which can disrupt components that interact with the Kubelet server in the long term, due to certificate expiration. Default: false |
authentication KubeletAuthentication
|
authentication specifies how requests to the Kubelet's server are authenticated Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may disrupt components that interact with the Kubelet server. Defaults: anonymous: enabled: false webhook: enabled: true cacheTTL: "2m" |
authorization KubeletAuthorization
|
authorization specifies how requests to the Kubelet's server are authorized Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may disrupt components that interact with the Kubelet server. Defaults: mode: Webhook webhook: cacheAuthorizedTTL: "5m" cacheUnauthorizedTTL: "30s" |
registryPullQPS int32
|
registryPullQPS is the limit of registry pulls per second. Set to 0 for no limit. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may impact scalability by changing the amount of traffic produced by image pulls. Default: 5 |
registryBurst int32
|
registryBurst is the maximum size of bursty pulls, temporarily allows pulls to burst to this number, while still not exceeding registryPullQPS. Only used if registryPullQPS > 0. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may impact scalability by changing the amount of traffic produced by image pulls. Default: 10 |
eventRecordQPS int32
|
eventRecordQPS is the maximum event creations per second. If 0, there is no limit enforced. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may impact scalability by changing the amount of traffic produced by event creations. Default: 5 |
eventBurst int32
|
eventBurst is the maximum size of a burst of event creations, temporarily allows event creations to burst to this number, while still not exceeding eventRecordQPS. Only used if eventRecordQPS > 0. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may impact scalability by changing the amount of traffic produced by event creations. Default: 10 |
enableDebuggingHandlers bool
|
enableDebuggingHandlers enables server endpoints for log access and local running of containers and commands, including the exec, attach, logs, and portforward features. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that disabling it may disrupt components that interact with the Kubelet server. Default: true |
enableContentionProfiling bool
|
enableContentionProfiling enables lock contention profiling, if enableDebuggingHandlers is true. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that enabling it may carry a performance impact. Default: false |
healthzPort int32
|
healthzPort is the port of the localhost healthz endpoint (set to 0 to disable) Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may disrupt components that monitor Kubelet health. Default: 10248 |
healthzBindAddress string
|
healthzBindAddress is the IP address for the healthz server to serve on Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may disrupt components that monitor Kubelet health. Default: "127.0.0.1" |
oomScoreAdj int32
|
oomScoreAdj is The oom-score-adj value for kubelet process. Values must be within the range [-1000, 1000]. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may impact the stability of nodes under memory pressure. Default: -999 |
clusterDomain string
|
clusterDomain is the DNS domain for this cluster. If set, kubelet will configure all containers to search this domain in addition to the host's search domains. Dynamic Kubelet Config (beta): Dynamically updating this field is not recommended, as it should be kept in sync with the rest of the cluster. Default: "" |
clusterDNS []string
|
clusterDNS is a list of IP addresses for the cluster DNS server. If set, kubelet will configure all containers to use this for DNS resolution instead of the host's DNS servers. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that changes will only take effect on Pods created after the update. Draining the node is recommended before changing this field. Default: nil |
streamingConnectionIdleTimeout meta/v1.Duration
|
streamingConnectionIdleTimeout is the maximum time a streaming connection can be idle before the connection is automatically closed. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may impact components that rely on infrequent updates over streaming connections to the Kubelet server. Default: "4h" |
nodeStatusUpdateFrequency meta/v1.Duration
|
nodeStatusUpdateFrequency is the frequency that kubelet computes node status. If node lease feature is not enabled, it is also the frequency that kubelet posts node status to master. Note: When node lease feature is not enabled, be cautious when changing the constant, it must work with nodeMonitorGracePeriod in nodecontroller. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may impact node scalability, and also that the node controller's nodeMonitorGracePeriod must be set to N∗NodeStatusUpdateFrequency, where N is the number of retries before the node controller marks the node unhealthy. Default: "10s" |
nodeStatusReportFrequency meta/v1.Duration
|
nodeStatusReportFrequency is the frequency that kubelet posts node status to master if node status does not change. Kubelet will ignore this frequency and post node status immediately if any change is detected. It is only used when node lease feature is enabled. nodeStatusReportFrequency's default value is 1m. But if nodeStatusUpdateFrequency is set explicitly, nodeStatusReportFrequency's default value will be set to nodeStatusUpdateFrequency for backward compatibility. Default: "1m" |
nodeLeaseDurationSeconds int32
|
nodeLeaseDurationSeconds is the duration the Kubelet will set on its corresponding Lease, when the NodeLease feature is enabled. This feature provides an indicator of node health by having the Kubelet create and periodically renew a lease, named after the node, in the kube-node-lease namespace. If the lease expires, the node can be considered unhealthy. The lease is currently renewed every 10s, per KEP-0009. In the future, the lease renewal interval may be set based on the lease duration. Requires the NodeLease feature gate to be enabled. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that decreasing the duration may reduce tolerance for issues that temporarily prevent the Kubelet from renewing the lease (e.g. a short-lived network issue). Default: 40 |
imageMinimumGCAge meta/v1.Duration
|
imageMinimumGCAge is the minimum age for an unused image before it is garbage collected. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may trigger or delay garbage collection, and may change the image overhead on the node. Default: "2m" |
imageGCHighThresholdPercent int32
|
imageGCHighThresholdPercent is the percent of disk usage after which image garbage collection is always run. The percent is calculated as this field value out of 100. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may trigger or delay garbage collection, and may change the image overhead on the node. Default: 85 |
imageGCLowThresholdPercent int32
|
imageGCLowThresholdPercent is the percent of disk usage before which image garbage collection is never run. Lowest disk usage to garbage collect to. The percent is calculated as this field value out of 100. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may trigger or delay garbage collection, and may change the image overhead on the node. Default: 80 |
volumeStatsAggPeriod meta/v1.Duration
|
How frequently to calculate and cache volume disk usage for all pods Dynamic Kubelet Config (beta): If dynamically updating this field, consider that shortening the period may carry a performance impact. Default: "1m" |
kubeletCgroups string
|
kubeletCgroups is the absolute name of cgroups to isolate the kubelet in Dynamic Kubelet Config (beta): This field should not be updated without a full node reboot. It is safest to keep this value the same as the local config. Default: "" |
systemCgroups string
|
systemCgroups is absolute name of cgroups in which to place all non-kernel processes that are not already in a container. Empty for no container. Rolling back the flag requires a reboot. Dynamic Kubelet Config (beta): This field should not be updated without a full node reboot. It is safest to keep this value the same as the local config. Default: "" |
cgroupRoot string
|
cgroupRoot is the root cgroup to use for pods. This is handled by the container runtime on a best effort basis. Dynamic Kubelet Config (beta): This field should not be updated without a full node reboot. It is safest to keep this value the same as the local config. Default: "" |
cgroupsPerQOS bool
|
Enable QoS based Cgroup hierarchy: top level cgroups for QoS Classes And all Burstable and BestEffort pods are brought up under their specific top level QoS cgroup. Dynamic Kubelet Config (beta): This field should not be updated without a full node reboot. It is safest to keep this value the same as the local config. Default: true |
cgroupDriver string
|
driver that the kubelet uses to manipulate cgroups on the host (cgroupfs or systemd) Dynamic Kubelet Config (beta): This field should not be updated without a full node reboot. It is safest to keep this value the same as the local config. Default: "cgroupfs" |
cpuManagerPolicy string
|
CPUManagerPolicy is the name of the policy to use. Requires the CPUManager feature gate to be enabled. Dynamic Kubelet Config (beta): This field should not be updated without a full node reboot. It is safest to keep this value the same as the local config. Default: "none" |
cpuManagerReconcilePeriod meta/v1.Duration
|
CPU Manager reconciliation period. Requires the CPUManager feature gate to be enabled. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that shortening the period may carry a performance impact. Default: "10s" |
topologyManagerPolicy string
|
TopologyManagerPolicy is the name of the policy to use. Policies other than "none" require the TopologyManager feature gate to be enabled. Dynamic Kubelet Config (beta): This field should not be updated without a full node reboot. It is safest to keep this value the same as the local config. Default: "none" |
topologyManagerScope string
|
TopologyManagerScope represents the scope of topology hint generation that topology manager requests and hint providers generate. "pod" scope requires the TopologyManager feature gate to be enabled. Default: "container" |
qosReserved map[string]string
|
qosReserved is a set of resource name to percentage pairs that specify the minimum percentage of a resource reserved for exclusive use by the guaranteed QoS tier. Currently supported resources: "memory" Requires the QOSReserved feature gate to be enabled. Dynamic Kubelet Config (beta): This field should not be updated without a full node reboot. It is safest to keep this value the same as the local config. Default: nil |
runtimeRequestTimeout meta/v1.Duration
|
runtimeRequestTimeout is the timeout for all runtime requests except long running requests - pull, logs, exec and attach. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may disrupt components that interact with the Kubelet server. Default: "2m" |
hairpinMode string
|
hairpinMode specifies how the Kubelet should configure the container bridge for hairpin packets. Setting this flag allows endpoints in a Service to loadbalance back to themselves if they should try to access their own Service. Values: "promiscuous-bridge": make the container bridge promiscuous. "hairpin-veth": set the hairpin flag on container veth interfaces. "none": do nothing. Generally, one must set --hairpin-mode=hairpin-veth to achieve hairpin NAT, because promiscuous-bridge assumes the existence of a container bridge named cbr0. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may require a node reboot, depending on the network plugin. Default: "promiscuous-bridge" |
maxPods int32
|
maxPods is the number of pods that can run on this Kubelet. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that changes may cause Pods to fail admission on Kubelet restart, and may change the value reported in Node.Status.Capacity[v1.ResourcePods], thus affecting future scheduling decisions. Increasing this value may also decrease performance, as more Pods can be packed into a single node. Default: 110 |
podCIDR string
|
The CIDR to use for pod IP addresses, only used in standalone mode. In cluster mode, this is obtained from the master. Dynamic Kubelet Config (beta): This field should always be set to the empty default. It should only set for standalone Kubelets, which cannot use Dynamic Kubelet Config. Default: "" |
podPidsLimit int64
|
PodPidsLimit is the maximum number of pids in any pod. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that lowering it may prevent container processes from forking after the change. Default: -1 |
resolvConf string
|
ResolverConfig is the resolver configuration file used as the basis for the container DNS resolution configuration. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that changes will only take effect on Pods created after the update. Draining the node is recommended before changing this field. Default: "/etc/resolv.conf" |
runOnce bool
|
RunOnce causes the Kubelet to check the API server once for pods, run those in addition to the pods specified by static pod files, and exit. Default: false |
cpuCFSQuota bool
|
cpuCFSQuota enables CPU CFS quota enforcement for containers that specify CPU limits. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that disabling it may reduce node stability. Default: true |
cpuCFSQuotaPeriod meta/v1.Duration
|
CPUCFSQuotaPeriod is the CPU CFS quota period value, cpu.cfs_period_us. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that limits set for containers will result in different cpu.cfs_quota settings. This will trigger container restarts on the node being reconfigured. Default: "100ms" |
nodeStatusMaxImages int32
|
nodeStatusMaxImages caps the number of images reported in Node.Status.Images. Note: If -1 is specified, no cap will be applied. If 0 is specified, no image is returned. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that different values can be reported on node status. Default: 50 |
maxOpenFiles int64
|
maxOpenFiles is Number of files that can be opened by Kubelet process. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may impact the ability of the Kubelet to interact with the node's filesystem. Default: 1000000 |
contentType string
|
contentType is contentType of requests sent to apiserver. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may impact the ability for the Kubelet to communicate with the API server. If the Kubelet loses contact with the API server due to a change to this field, the change cannot be reverted via dynamic Kubelet config. Default: "application/vnd.kubernetes.protobuf" |
kubeAPIQPS int32
|
kubeAPIQPS is the QPS to use while talking with kubernetes apiserver Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may impact scalability by changing the amount of traffic the Kubelet sends to the API server. Default: 5 |
kubeAPIBurst int32
|
kubeAPIBurst is the burst to allow while talking with kubernetes apiserver Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may impact scalability by changing the amount of traffic the Kubelet sends to the API server. Default: 10 |
serializeImagePulls bool
|
serializeImagePulls when enabled, tells the Kubelet to pull images one at a time. We recommend ∗not∗ changing the default value on nodes that run docker daemon with version < 1.9 or an Aufs storage backend. Issue #10959 has more details. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may impact the performance of image pulls. Default: true |
evictionHard map[string]string
|
Map of signal names to quantities that defines hard eviction thresholds. For example: {"memory.available": "300Mi"}. To explicitly disable, pass a 0% or 100% threshold on an arbitrary resource. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may trigger or delay Pod evictions. Default: memory.available: "100Mi" nodefs.available: "10%" nodefs.inodesFree: "5%" imagefs.available: "15%" |
evictionSoft map[string]string
|
Map of signal names to quantities that defines soft eviction thresholds. For example: {"memory.available": "300Mi"}. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may trigger or delay Pod evictions, and may change the allocatable reported by the node. Default: nil |
evictionSoftGracePeriod map[string]string
|
Map of signal names to quantities that defines grace periods for each soft eviction signal. For example: {"memory.available": "30s"}. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may trigger or delay Pod evictions. Default: nil |
evictionPressureTransitionPeriod meta/v1.Duration
|
Duration for which the kubelet has to wait before transitioning out of an eviction pressure condition. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that lowering it may decrease the stability of the node when the node is overcommitted. Default: "5m" |
evictionMaxPodGracePeriod int32
|
Maximum allowed grace period (in seconds) to use when terminating pods in response to a soft eviction threshold being met. This value effectively caps the Pod's TerminationGracePeriodSeconds value during soft evictions. Note: Due to issue #64530, the behavior has a bug where this value currently just overrides the grace period during soft eviction, which can increase the grace period from what is set on the Pod. This bug will be fixed in a future release. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that lowering it decreases the amount of time Pods will have to gracefully clean up before being killed during a soft eviction. Default: 0 |
evictionMinimumReclaim map[string]string
|
Map of signal names to quantities that defines minimum reclaims, which describe the minimum amount of a given resource the kubelet will reclaim when performing a pod eviction while that resource is under pressure. For example: {"imagefs.available": "2Gi"} Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may change how well eviction can manage resource pressure. Default: nil |
podsPerCore int32
|
podsPerCore is the maximum number of pods per core. Cannot exceed MaxPods. If 0, this field is ignored. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that changes may cause Pods to fail admission on Kubelet restart, and may change the value reported in Node.Status.Capacity[v1.ResourcePods], thus affecting future scheduling decisions. Increasing this value may also decrease performance, as more Pods can be packed into a single node. Default: 0 |
enableControllerAttachDetach bool
|
enableControllerAttachDetach enables the Attach/Detach controller to manage attachment/detachment of volumes scheduled to this node, and disables kubelet from executing any attach/detach operations Dynamic Kubelet Config (beta): If dynamically updating this field, consider that changing which component is responsible for volume management on a live node may result in volumes refusing to detach if the node is not drained prior to the update, and if Pods are scheduled to the node before the volumes.kubernetes.io/controller-managed-attach-detach annotation is updated by the Kubelet. In general, it is safest to leave this value set the same as local config. Default: true |
protectKernelDefaults bool
|
protectKernelDefaults, if true, causes the Kubelet to error if kernel flags are not as it expects. Otherwise the Kubelet will attempt to modify kernel flags to match its expectation. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that enabling it may cause the Kubelet to crash-loop if the Kernel is not configured as Kubelet expects. Default: false |
makeIPTablesUtilChains bool
|
If true, Kubelet ensures a set of iptables rules are present on host. These rules will serve as utility rules for various components, e.g. KubeProxy. The rules will be created based on IPTablesMasqueradeBit and IPTablesDropBit. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that disabling it will prevent the Kubelet from healing locally misconfigured iptables rules. Default: true |
iptablesMasqueradeBit int32
|
iptablesMasqueradeBit is the bit of the iptables fwmark space to mark for SNAT Values must be within the range [0, 31]. Must be different from other mark bits. Warning: Please match the value of the corresponding parameter in kube-proxy. TODO: clean up IPTablesMasqueradeBit in kube-proxy Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it needs to be coordinated with other components, like kube-proxy, and the update will only be effective if MakeIPTablesUtilChains is enabled. Default: 14 |
iptablesDropBit int32
|
iptablesDropBit is the bit of the iptables fwmark space to mark for dropping packets. Values must be within the range [0, 31]. Must be different from other mark bits. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it needs to be coordinated with other components, like kube-proxy, and the update will only be effective if MakeIPTablesUtilChains is enabled. Default: 15 |
featureGates map[string]bool
|
featureGates is a map of feature names to bools that enable or disable alpha/experimental features. This field modifies piecemeal the built-in default values from "k8s.io/kubernetes/pkg/features/kube_features.go". Dynamic Kubelet Config (beta): If dynamically updating this field, consider the documentation for the features you are enabling or disabling. While we encourage feature developers to make it possible to dynamically enable and disable features, some changes may require node reboots, and some features may require careful coordination to retroactively disable. Default: nil |
failSwapOn bool
|
failSwapOn tells the Kubelet to fail to start if swap is enabled on the node. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that setting it to true will cause the Kubelet to crash-loop if swap is enabled. Default: true |
containerLogMaxSize string
|
A quantity defines the maximum size of the container log file before it is rotated. For example: "5Mi" or "256Ki". Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may trigger log rotation. Default: "10Mi" |
containerLogMaxFiles int32
|
Maximum number of container log files that can be present for a container. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that lowering it may cause log files to be deleted. Default: 5 |
configMapAndSecretChangeDetectionStrategy ResourceChangeDetectionStrategy
|
ConfigMapAndSecretChangeDetectionStrategy is a mode in which config map and secret managers are running. Default: "Watch" |
systemReserved map[string]string
|
systemReserved is a set of ResourceName=ResourceQuantity (e.g. cpu=200m,memory=150G) pairs that describe resources reserved for non-kubernetes components. Currently only cpu and memory are supported. See http://kubernetes.io/docs/user-guide/compute-resources for more detail. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may not be possible to increase the reserved resources, because this requires resizing cgroups. Always look for a NodeAllocatableEnforced event after updating this field to ensure that the update was successful. Default: nil |
kubeReserved map[string]string
|
A set of ResourceName=ResourceQuantity (e.g. cpu=200m,memory=150G) pairs that describe resources reserved for kubernetes system components. Currently cpu, memory and local storage for root file system are supported. See http://kubernetes.io/docs/user-guide/compute-resources for more detail. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may not be possible to increase the reserved resources, because this requires resizing cgroups. Always look for a NodeAllocatableEnforced event after updating this field to ensure that the update was successful. Default: nil |
reservedSystemCPUs [Required]string
|
This ReservedSystemCPUs option specifies the cpu list reserved for the host level system threads and kubernetes related threads. This provide a "static" CPU list rather than the "dynamic" list by system-reserved and kube-reserved. This option overwrites CPUs provided by system-reserved and kube-reserved. |
showHiddenMetricsForVersion string
|
The previous version for which you want to show hidden metrics.
Only the previous minor version is meaningful, other values will not be allowed.
The format is |
systemReservedCgroup string
|
This flag helps kubelet identify absolute name of top level cgroup used to enforce `SystemReserved` compute resource reservation for OS system daemons. Refer to [Node Allocatable](https://git.k8s.io/community/contributors/design-proposals/node/node-allocatable.md) doc for more information. Dynamic Kubelet Config (beta): This field should not be updated without a full node reboot. It is safest to keep this value the same as the local config. Default: "" |
kubeReservedCgroup string
|
This flag helps kubelet identify absolute name of top level cgroup used to enforce `KubeReserved` compute resource reservation for Kubernetes node system daemons. Refer to [Node Allocatable](https://git.k8s.io/community/contributors/design-proposals/node/node-allocatable.md) doc for more information. Dynamic Kubelet Config (beta): This field should not be updated without a full node reboot. It is safest to keep this value the same as the local config. Default: "" |
enforceNodeAllocatable []string
|
This flag specifies the various Node Allocatable enforcements that Kubelet needs to perform. This flag accepts a list of options. Acceptable options are `none`, `pods`, `system-reserved` & `kube-reserved`. If `none` is specified, no other options may be specified. Refer to [Node Allocatable](https://git.k8s.io/community/contributors/design-proposals/node/node-allocatable.md) doc for more information. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that removing enforcements may reduce the stability of the node. Alternatively, adding enforcements may reduce the stability of components which were using more than the reserved amount of resources; for example, enforcing kube-reserved may cause Kubelets to OOM if it uses more than the reserved resources, and enforcing system-reserved may cause system daemons to OOM if they use more than the reserved resources. Default: ["pods"] |
allowedUnsafeSysctls []string
|
A comma separated whitelist of unsafe sysctls or sysctl patterns (ending in ∗). Unsafe sysctl groups are kernel.shm∗, kernel.msg∗, kernel.sem, fs.mqueue.∗, and net.∗. These sysctls are namespaced but not allowed by default. For example: "kernel.msg∗,net.ipv4.route.min_pmtu" Default: [] |
volumePluginDir string
|
volumePluginDir is the full path of the directory in which to search for additional third party volume plugins. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that changing the volumePluginDir may disrupt workloads relying on third party volume plugins. Default: "/usr/libexec/kubernetes/kubelet-plugins/volume/exec/" |
providerID string
|
providerID, if set, sets the unique id of the instance that an external provider (i.e. cloudprovider) can use to identify a specific node. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may impact the ability of the Kubelet to interact with cloud providers. Default: "" |
kernelMemcgNotification bool
|
kernelMemcgNotification, if set, the kubelet will integrate with the kernel memcg notification to determine if memory eviction thresholds are crossed rather than polling. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may impact the way Kubelet interacts with the kernel. Default: false |
logging [Required]LoggingConfiguration
|
Logging specifies the options of logging. Refer [Logs Options](https://github.com/kubernetes/component-base/blob/master/logs/options.go) for more information. Defaults: Format: text |
enableSystemLogHandler bool
|
enableSystemLogHandler enables system logs via web interface host:port/logs/ Default: true |
shutdownGracePeriod meta/v1.Duration
|
ShutdownGracePeriod specifies the total duration that the node should delay the shutdown and total grace period for pod termination during a node shutdown. Default: "30s" |
shutdownGracePeriodCriticalPods meta/v1.Duration
|
ShutdownGracePeriodCriticalPods specifies the duration used to terminate critical pods during a node shutdown. This should be less than ShutdownGracePeriod. 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. Default: "10s" |
SerializedNodeConfigSource
SerializedNodeConfigSource allows us to serialize v1.NodeConfigSource. This type is used internally by the Kubelet for tracking checkpointed dynamic configs. It exists in the kubeletconfig API group because it is classified as a versioned input to the Kubelet.
Field | Description |
---|---|
apiVersion string | kubelet.config.k8s.io/v1beta1 |
kind string | SerializedNodeConfigSource |
source core/v1.NodeConfigSource
|
Source is the source that we are serializing |
HairpinMode
(Alias of string
)
HairpinMode denotes how the kubelet should configure networking to handle hairpin packets.
KubeletAnonymousAuthentication
Appears in:
Field | Description |
---|---|
enabled bool
|
enabled allows anonymous requests to the kubelet server. Requests that are not rejected by another authentication method are treated as anonymous requests. Anonymous requests have a username of system:anonymous, and a group name of system:unauthenticated. |
KubeletAuthentication
Appears in:
Field | Description |
---|---|
x509 KubeletX509Authentication
|
x509 contains settings related to x509 client certificate authentication |
webhook KubeletWebhookAuthentication
|
webhook contains settings related to webhook bearer token authentication |
anonymous KubeletAnonymousAuthentication
|
anonymous contains settings related to anonymous authentication |
KubeletAuthorization
Appears in:
Field | Description |
---|---|
mode KubeletAuthorizationMode
|
mode is the authorization mode to apply to requests to the kubelet server. Valid values are AlwaysAllow and Webhook. Webhook mode uses the SubjectAccessReview API to determine authorization. |
webhook KubeletWebhookAuthorization
|
webhook contains settings related to Webhook authorization. |
KubeletAuthorizationMode
(Alias of string
)
Appears in:
KubeletWebhookAuthentication
Appears in:
Field | Description |
---|---|
enabled bool
|
enabled allows bearer token authentication backed by the tokenreviews.authentication.k8s.io API |
cacheTTL meta/v1.Duration
|
cacheTTL enables caching of authentication results |
KubeletWebhookAuthorization
Appears in:
Field | Description |
---|---|
cacheAuthorizedTTL meta/v1.Duration
|
cacheAuthorizedTTL is the duration to cache 'authorized' responses from the webhook authorizer. |
cacheUnauthorizedTTL meta/v1.Duration
|
cacheUnauthorizedTTL is the duration to cache 'unauthorized' responses from the webhook authorizer. |
KubeletX509Authentication
Appears in:
Field | Description |
---|---|
clientCAFile string
|
clientCAFile is the path to a PEM-encoded certificate bundle. If set, any request presenting a client certificate signed by one of the authorities in the bundle is authenticated with a username corresponding to the CommonName, and groups corresponding to the Organization in the client certificate. |
ResourceChangeDetectionStrategy
(Alias of string
)
Appears in:
ResourceChangeDetectionStrategy denotes a mode in which internal managers (secret, configmap) are discovering object changes.
LoggingConfiguration
Appears in:
LoggingConfiguration contains logging options Refer Logs Options for more information.
Field | Description |
---|---|
format [Required]string
|
Format Flag specifies the structure of log messages. default value of format is `text` |
sanitization [Required]bool
|
[Experimental] When enabled prevents logging of fields tagged as sensitive (passwords, keys, tokens). Runtime log sanitization may introduce significant computation overhead and therefore should not be enabled in production.`) |
12 - Kubelet 配置 (v1alpha1)
资源类型
FormatOptions
出现在:
FormatOptions 包含为不同类型日志格式提供的选项。
字段 | 描述 |
---|---|
json [必需]JSONOptions
|
[试验特性] json 中包含 "json" 日志格式的选项。
|
JSONOptions
出现在:
JSONOptions 包含用于 "json" 日志格式的选项。
字段 | 描述 |
---|---|
splitStream [必需]bool
|
[试验特性] splitStream 将错误信息重定向到标准错误输出(stderr),
将提示信息重定向到标准输出(stdout),并为二者提供缓存。默认配置是将两类信息都写出到标准输出,
并且不提供缓存。
|
infoBufferSize [必需]k8s.io/apimachinery/pkg/api/resource.QuantityValue
|
[试验特性] infoBufferSize 设置使用分离数据流时信息数据流的大小。
默认值是 0,意味着禁止缓存。
|
VModuleConfiguration
([]k8s.io/component-base/config/v1alpha1.VModuleItem
的别名)
出现在:
VModuleConfiguration 是一个集合,其中包含一个个的文件名(或者文件名模式) 及对应的详细程度阈值。
CredentialProviderConfig
CredentialProviderConfig 包含有关每个 exec 凭据提供者的配置信息。 Kubelet 从磁盘上读取这些配置信息,并根据 CredentialProvider 类型启用各个提供者。
字段 | 描述 |
---|---|
apiVersion string | kubelet.config.k8s.io/v1alpha1 |
kind string | CredentialProviderConfig |
providers [必需][]CredentialProvider
|
providers 是一组凭据提供者插件,这些插件会被 kubelet 启用。
多个提供者可以匹配到同一镜像上,这时,来自所有提供者的凭据信息都会返回给 kubelet。
如果针对同一镜像调用了多个提供者,则结果会被组合起来。如果提供者返回的认证主键有重复,
列表中先出现的提供者所返回的值将被使用。
|
CredentialProvider
出现在:
CredentialProvider 代表的是要被 kubelet 调用的一个 exec 插件。
这一插件只会在所拉取的镜像与该插件所处理的镜像匹配时才会被调用(参见 matchImages
)。
字段 | 描述 |
---|---|
name [必需]string
|
name 是凭据提供者的名称(必需)。此名称必须与 kubelet
所看到的提供者可执行文件的名称匹配。可执行文件必须位于 kubelet 的
bin 目录(通过 --image-credential-provider-bin-dir 设置)下。
|
matchImages [必需][]string
|
对类似 'app∗.k8s.io' 这类部分子域名的匹配也是支持的。 每个通配符只能用来匹配一个子域名段,所以 '∗.io' 不会匹配 '∗.k8s.io'。 镜像与
|
defaultCacheDuration [必需]meta/v1.Duration
|
defaultCacheDuration 是插件在内存中缓存凭据的默认时长,
在插件响应中没有给出缓存时长时,使用这里设置的值。此字段是必需的。
|
apiVersion [必需]string
|
要求 exec 插件 CredentialProviderRequest 请求的输入版本。 所返回的 CredentialProviderResponse 必须使用与输入相同的编码版本。当前支持的值有:
|
args []string
|
在执行插件可执行文件时要传递给命令的参数。 |
env []ExecEnvVar
|
env 定义要提供给插件进程的额外的环境变量。
这些环境变量会与主机上的其他环境变量以及 client-go 所使用的环境变量组合起来,
一起传递给插件。
|
ExecEnvVar
出现在:
ExecEnvVar 用来在执行基于 exec 的凭据插件时设置环境变量。
字段 | 描述 |
---|---|
name [必需]string
|
环境变量名称。 |
value [必需]string
|
环境变量取值。 |
13 - WebhookAdmission 配置 (v1)
此 API 的版本是 v1。
资源类型
WebhookAdmission
WebhookAdmission 为 Webhook 准入控制器提供配置信息。
字段 | 描述 |
---|---|
apiVersion string | apiserver.config.k8s.io/v1 |
kind string | WebhookAdmission |
kubeConfigFile [必需]string
|
字段 kubeConfigFile 包含指向 kubeconfig 文件的路径。 |
14 - 客户端身份认证(Client Authentication) (v1)
资源类型
ExecCredential
ExecCredential 由基于 exec 的插件使用,与 HTTP 传输组件沟通凭据信息。
字段 | 描述 |
---|---|
apiVersion string | client.authentication.k8s.io/v1 |
kind string | ExecCredential |
spec [必需]ExecCredentialSpec
|
字段 spec 包含由 HTTP 传输组件传递给插件的信息。 |
status ExecCredentialStatus
|
字段 status 由插件填充,包含传输组件与 API 服务器连接时需要提供的凭据。 |
Cluster
出现在:
Cluster 中包含允许 exec 插件与 Kubernetes 集群进行通信身份认证时所需 的信息。
字段 | 描述 |
---|---|
server [必需]string
|
字段 server 是 Kubernetes 集群的地址(https://hostname:port)。 |
tls-server-name string
|
tls-server-name 是用来提供给服务器用作 SNI 解析的,客户端以此检查服务器的证书。 如此字段为空,则使用链接服务器时使用的主机名。 |
insecure-skip-tls-verify bool
|
设置此字段之后,会令客户端跳过对服务器端证书的合法性检查。 这会使得你的 HTTPS 链接不再安全。 |
certificate-authority-data []byte
|
此字段包含 PEM 编码的证书机构(CA)证书。 如果为空,则使用系统的根证书。 |
proxy-url string
|
此字段用来设置向集群发送所有请求时要使用的代理服务器。 |
config k8s.io/apimachinery/pkg/runtime.RawExtension
|
在某些环境中,用户配置可能对很多集群而言都完全一样(即调用同一个 exec 插件), 只是针对不同集群会有一些细节上的差异,例如 audience。 此字段使得特定于集群的配置可以直接使用集群信息来设置。 不建议使用此字段来保存 Secret 数据,因为 exec 插件的主要优势之一是不需要在 kubeconfig 中保存 Secret 数据。 |
ExecCredentialSpec
出现在:
ExecCredentialSpec 保存传输组件所提供的特定于请求和运行时的信息。
字段 | 描述 |
---|---|
cluster Cluster
|
此字段中包含的信息使得 exec 插件能够与要访问的 Kubernetes 集群通信。 注意,cluster 字段只有在 exec 驱动的配置中 provideClusterInfo (即:ExecConfig.ProvideClusterInfo)被设置为 true 时才不能为空。 |
interactive [必需]bool
|
此字段用来标明标准输出信息是否已传递给 exec 插件。 |
ExecCredentialStatus
ExecCredentialStatus 中包含传输组件要使用的凭据。
字段 token 和 clientKeyData 都是敏感字段。此数据只能在 客户端与 exec 插件进程之间使用内存来传递。exec 插件本身至少 应通过文件访问许可来实施保护。
》字段 | 描述 |
---|---|
expirationTimestamp meta/v1.Time
|
给出所提供的凭据到期的时间。 |
token [必需]string
|
客户端用做请求身份认证的持有者令牌。 |
clientCertificateData [必需]string
|
PEM 编码的客户端 TLS 证书(如果有临时证书,也会包含)。 |
clientKeyData [必需]string
|
与上述证书对应的、PEM 编码的私钥。 |