配置 API
- 1: kube-apiserver Audit 配置 (v1)
- 2: kube-apiserver 加密配置 (v1)
- 3: kube-apiserver 配置 (v1)
- 4: kube-apiserver 配置 (v1alpha1)
- 5: kube-proxy 配置 (v1alpha1)
- 6: kube-scheduler 配置 (v1beta2)
- 7: kube-scheduler 配置 (v1beta3)
- 8: kubeadm 配置 (v1beta2)
- 9: kubeadm 配置 (v1beta3)
- 10: Kubelet 配置 (v1alpha1)
- 11: Kubelet 配置 (v1beta1)
- 12: WebhookAdmission 配置 (v1)
- 13: 客户端身份认证(Client Authentication) (v1)
- 14: 客户端身份认证(Client Authentication)(v1beta1)
1 - 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 定义在请求处理过程中可以生成审计事件的阶段。
2 - 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
|
|
3 - 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
|
|
4 - 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
|
|
5 - 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 是一组文件名或文件名模式,及其对应的日志详尽程度阈值配置。
6 - 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 是一组文件名(通配符)及其对应的日志详尽程度阈值。
7 - 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 是一组文件名(通配符)及其对应的日志详尽程度阈值。
8 - 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
|
|
9 - 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
|
|
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
|
无描述 |
10 - 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
|
环境变量取值。 |
11 - Kubelet 配置 (v1beta1)
资源类型
KubeletConfiguration
KubeletConfiguration 中包含 Kubelet 的配置。
字段 | 描述 |
---|---|
apiVersion string | kubelet.config.k8s.io/v1beta1 |
kind string | KubeletConfiguration |
enableServer [必需]bool
|
注意:kubelet 的不安全端口由 当 默认值: |
staticPodPath string
|
当 默认值:"" |
syncFrequency meta/v1.Duration
|
当 默认值:"1m" |
fileCheckFrequency meta/v1.Duration
|
当 默认值:"20s" |
httpCheckFrequency meta/v1.Duration
|
当 默认值:"20s" |
staticPodURL string
|
当 默认值:"" |
staticPodURLHeader map[string][]string
|
当 默认值:nil |
address string
|
当 默认值:"0.0.0.0" |
port int32
|
当 默认值:10250 |
readOnlyPort int32
|
当 默认值:0(禁用) |
tlsCertFile string
|
当 默认值:"" |
tlsPrivateKeyFile string
|
当 默认值:"" |
tlsCipherSuites []string
|
当 默认值:nil |
tlsMinVersion string
|
当 默认值:"" |
rotateCertificates bool
|
当 默认值:false |
serverTLSBootstrap bool
|
当 默认值:false |
authentication KubeletAuthentication
|
当 默认值:
|
authorization KubeletAuthorization
|
当 默认值:
|
registryPullQPS int32
|
当 默认值:5 |
registryBurst int32
|
当 默认值:10 |
eventRecordQPS int32
|
当 默认值:5 |
eventBurst int32
|
当 默认值:10 |
enableDebuggingHandlers bool
|
当 默认值:true |
enableContentionProfiling bool
|
当 默认值:false |
healthzPort int32
|
当 默认值:10248 |
healthzBindAddress string
|
当 默认值:"127.0.0.1" |
oomScoreAdj int32
|
当 默认值:-999 |
clusterDomain string
|
默认值:"" |
clusterDNS []string
|
当 默认值:nil |
streamingConnectionIdleTimeout meta/v1.Duration
|
当 默认值:"4h" |
nodeStatusUpdateFrequency meta/v1.Duration
|
注意:如果节点租约特性未被启用,更改此参数设置时要非常小心,
所设置的参数值必须与节点控制器的 当 默认值:"10s" |
nodeStatusReportFrequency meta/v1.Duration
|
此字段仅当启用了节点租约特性时才被使用。 默认值:"5m" |
nodeLeaseDurationSeconds int32
|
如果租约过期,则节点可被视作不健康。根据 KEP-0009 约定,目前的租约每 10 秒钟续约一次。 在将来,租约的续约时间间隔可能会根据租约的时长来设置。 此字段的取值必须大于零。 当 默认值:40 |
imageMinimumGCAge meta/v1.Duration
|
当 默认值:"2m" |
imageGCHighThresholdPercent int32
|
当 默认值:85 |
imageGCLowThresholdPercent int32
|
当 默认值:80 |
volumeStatsAggPeriod meta/v1.Duration
|
当 默认值:"1m" |
kubeletCgroups string
|
默认值:"" |
systemCgroups string
|
默认值:"" |
cgroupRoot string
|
默认值:"" |
cgroupsPerQOS bool
|
默认值:true |
cgroupDriver string
|
默认值:"cgroupfs" |
cpuManagerPolicy string
|
默认值:"None" |
cpuManagerPolicyOptions map[string]string
|
默认值:nil |
cpuManagerReconcilePeriod meta/v1.Duration
|
当 默认值:"10s" |
memoryManagerPolicy string
|
默认值:"none" |
topologyManagerPolicy string
|
如果策略不是 "none",则要求启用
默认值:"none" |
topologyManagerScope string
|
"pod" 范围要求启用 默认值:"container" |
qosReserved map[string]string
|
默认值:nil |
runtimeRequestTimeout meta/v1.Duration
|
当 默认值:"2m" |
hairpinMode string
|
一般而言,用户必须设置 当 默认值:"promiscuous-bridge" |
maxPods int32
|
当 默认值:110 |
podCIDR string
|
默认值:"" |
podPidsLimit int64
|
当 默认值:-1 |
resolvConf string
|
当 默认值:"/etc/resolv.conf" |
runOnce bool
|
默认值:false |
cpuCFSQuota bool
|
当 默认值:true |
cpuCFSQuotaPeriod meta/v1.Duration
|
当 默认值:"100ms" |
nodeStatusMaxImages int32
|
注意:如果设置为 -1,则不会对镜像数量做限制;如果设置为 0,则不会返回任何镜像。 当 默认值:50 |
maxOpenFiles int64
|
当 默认值:1000000 |
contentType string
|
当 默认值:"application/vnd.kubernetes.protobuf" |
kubeAPIQPS int32
|
当 默认值:5 |
kubeAPIBurst int32
|
当 默认值:10 |
serializeImagePulls bool
|
当 默认值:true |
evictionHard map[string]string
|
当 默认值:
|
evictionSoft map[string]string
|
当 默认值:nil |
evictionSoftGracePeriod map[string]string
|
当 默认值:nil |
evictionPressureTransitionPeriod meta/v1.Duration
|
当 默认值:"5m" |
evictionMaxPodGracePeriod int32
|
注意:由于 Issue #64530 的原因,系统中存在一个缺陷,即此处所设置的值会在软性逐出时覆盖 Pod 的宽限期设置,从而有可能增加 Pod 上原本设置的宽限期限时长。 这个缺陷会在未来版本中修复。 当 默认值:0 |
evictionMinimumReclaim map[string]string
|
当 默认值:nil |
podsPerCore int32
|
当 默认值:0 |
enableControllerAttachDetach bool
|
当 默认值:true |
protectKernelDefaults bool
|
当 默认值:false |
makeIPTablesUtilChains bool
|
当 默认值:true |
iptablesMasqueradeBit int32
|
警告:请确保此值设置与 kube-proxy 中对应的参数设置取值相同。 当 默认值:14 |
iptablesDropBit int32
|
当 默认值:15 |
featureGates map[string]bool
|
当 默认值:nil |
failSwapOn bool
|
当 默认值:true |
memorySwap MemorySwapConfiguration
|
|
containerLogMaxSize string
|
当 默认值:"10Mi" |
containerLogMaxFiles int32
|
当 默认值:"5" |
configMapAndSecretChangeDetectionStrategy ResourceChangeDetectionStrategy
|
默认值:"Watch" |
systemReserved map[string]string
|
目前仅支持 CPU 和内存。更多细节可参见 http://kubernetes.io/zh/docs/user-guide/compute-resources。 当 默认值:Nil |
kubeReserved map[string]string
|
当 默认值:Nil |
reservedSystemCPUs [必需]string
|
|
showHiddenMetricsForVersion string
|
默认值:"" |
systemReservedCgroup string
|
默认值:"" |
kubeReservedCgroup string
|
默认值:"" |
enforceNodeAllocatable []string
|
此标志设置 kubelet 需要执行的各类节点可分配资源策略。此字段接受一组选项列表。
可接受的选项有 如果设置了 如果列表中包含 如果列表中包含 这个字段只有在 参阅Node Allocatable 了解进一步的信息。 当 默认值:["pods"] |
allowedUnsafeSysctls []string
|
用逗号分隔的白名单列表,其中包含不安全的 sysctl 或 sysctl 模式(以 不安全的 sysctl 组有 例如:" 默认值:[] |
volumePluginDir string
|
当 默认值:"/usr/libexec/kubernetes/kubelet-plugins/volume/exec/" |
providerID string
|
当 默认值:"" |
kernelMemcgNotification bool
|
当 默认值:false |
logging [必需]LoggingConfiguration
|
默认值:
|
enableSystemLogHandler bool
|
默认值:true |
shutdownGracePeriod meta/v1.Duration
|
默认值:"0s" |
shutdownGracePeriodCriticalPods meta/v1.Duration
|
默认值:"0s" |
shutdownGracePeriodByPodPriority []ShutdownGracePeriodByPodPriority
|
数组中的每个表项代表的是节点关闭时 Pod 的体面终止时间;这里的 Pod 的优先级类介于列表中当前优先级类值和下一个表项的优先级类值之间。 例如,要赋予关键 Pod 10 秒钟时间来关闭,赋予优先级>=10000 Pod 20 秒钟时间来关闭, 赋予其余的 Pod 30 秒钟来关闭。 shutdownGracePeriodByPodPriority:
在退出之前,kubelet 要等待的时间上限为节点上所有优先级类的
当 默认值:nil |
reservedMemory []MemoryReservation
|
此参数仅在内存管理器功能特性语境下有意义。内存管理器不会为容器负载分配预留内存。
例如,如果你的 NUMA0 节点内存为 10Gi, 你可以设置不同数量的 NUMA 节点和内存类型。你也可以完全忽略这个字段,不过你要清楚, 所有 NUMA 节点上预留内存的总量要等于通过 node allocatable 设置的内存量。 如果至少有一个节点可分配参数设置值非零,则你需要设置至少一个 NUMA 节点。 此外,避免如下设置:
默认值:nil |
enableProfilingHandler bool
|
默认值:true |
enableDebugFlagsHandler bool
|
默认值:true |
seccompDefault bool
|
默认值:false |
memoryThrottlingFactor float64
|
当设置 cgroupv2 减小此系数会为容器控制组设置较低的 high 限制值,从而增大回收压力;反之, 增大此系数会降低回收压力。更多细节参见 http://kep.k8s.io/2570。 默认值:0.8 |
registerWithTaints []core/v1.Taint
|
默认值:nil |
registerNode bool
|
默认值:true |
SerializedNodeConfigSource
SerializedNodeConfigSource 允许对 v1.NodeConfigSource
执行序列化操作。
这一类型供 kubelet 内部使用,以便跟踪动态配置的检查点。
此资源存在于 kubeletconfig API 组是因为它被当做是对 kubelet 的一种版本化输入。
字段 | 描述 |
---|---|
apiVersion string | kubelet.config.k8s.io/v1beta1 |
kind string | SerializedNodeConfigSource |
source core/v1.NodeConfigSource
|
|
KubeletAnonymousAuthentication
出现在:
字段 | 描述 |
---|---|
enabled bool
|
|
KubeletAuthentication
出现在:
字段 | 描述 |
---|---|
x509 KubeletX509Authentication
|
|
webhook KubeletWebhookAuthentication
|
|
anonymous KubeletAnonymousAuthentication
|
|
KubeletAuthorization
出现在:
字段 | 描述 |
---|---|
mode KubeletAuthorizationMode
|
|
webhook KubeletWebhookAuthorization
|
|
KubeletAuthorizationMode
(string
类型的别名)
出现在:
KubeletWebhookAuthentication
出现在:
字段 | 描述 |
---|---|
enabled bool
|
|
cacheTTL meta/v1.Duration
|
|
KubeletWebhookAuthorization
出现在:
字段 | 描述 |
---|---|
cacheAuthorizedTTL meta/v1.Duration
|
|
cacheUnauthorizedTTL meta/v1.Duration
|
|
KubeletX509Authentication
出现在:
字段 | 描述 |
---|---|
clientCAFile string
|
|
MemoryReservation
出现在:
MemoryReservation 为每个 NUMA 节点设置不同类型的内存预留。
字段 | 描述 |
---|---|
numaNode [必需]int32
|
NUMA 节点 |
limits [必需]core/v1.ResourceList
|
资源列表 |
MemorySwapConfiguration
出现在:
字段 | 描述 |
---|---|
swapBehavior string
|
|
ResourceChangeDetectionStrategy
(string
类型的别名)
出现在:
ResourceChangeDetectionStrategy 给出的是内部管理器(ConfigMap、Secret) 用来发现对象变化的模式。
ShutdownGracePeriodByPodPriority
出现在:
ShutdownGracePeriodByPodPriority 基于 Pod 关联的优先级类数值来为其设置关闭宽限时间。
字段 | 描述 |
---|---|
priority [必需]int32
|
|
shutdownGracePeriodSeconds [必需]int64
|
|
FormatOptions
出现在:
FormatOptions 包含为不同日志格式提供的选项。
字段 | 描述 |
---|---|
json [必需]JSONOptions
|
[试验功能] |
JSONOptions
出现在:
JSONOptions 包含为 "json" 日志格式提供的选项。
字段 | 描述 |
---|---|
splitStream [必需]bool
|
[试验功能] |
infoBufferSize [必需]k8s.io/apimachinery/pkg/api/resource.QuantityValue
|
[试验功能] |
LoggingConfiguration
出现在:
LoggingConfiguration 包含日志选项。 参考 Logs Options 以了解更多信息。
字段 | 描述 |
---|---|
format [必需]string
|
|
flushFrequency [必需]time.Duration
|
对日志进行清洗的最大间隔秒数。如果所选的日志后端在写入日志消息时不提供缓存, 则此配置会被忽略。 |
verbosity [必需]uint32
|
|
vmodule [必需]VModuleConfiguration
|
|
sanitization [必需]bool
|
[试验功能] 当启用此选项时,被标记为敏感的字段(密码、秘钥、令牌)不会被日志记录。 运行时日志过滤功能可能会引入非常大的计算开销,因此在生产环境中不应启用。 |
options [必需]FormatOptions
|
[试验功能] |
VModuleConfiguration
([]k8s.io/component-base/config/v1alpha1.VModuleItem
类型的别名)
出现在:
VModuleConfiguration 是一个集合,其中包含一个个文件名(或文件名模式) 及其对应的详细程度阈值。
12 - WebhookAdmission 配置 (v1)
此 API 的版本是 v1。
资源类型
WebhookAdmission
WebhookAdmission 为 Webhook 准入控制器提供配置信息。
字段 | 描述 |
---|---|
apiVersion string | apiserver.config.k8s.io/v1 |
kind string | WebhookAdmission |
kubeConfigFile [必需]string
|
字段 kubeConfigFile 包含指向 kubeconfig 文件的路径。 |
13 - 客户端身份认证(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 集群进行通信身份认证时所需 的信息。
为了确保该结构体包含需要与 Kubernetes 集群进行通信的所有内容(就像通过 Kubeconfig 一样), 除了证书授权之外,该字段应该映射到 "k8s.io/client-go/tools/clientcmd/api/v1".cluster, 由于 CA 数据将始终以字节形式传递给插件。
字段 | 描述 |
---|---|
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 编码的私钥。 |
14 - 客户端身份认证(Client Authentication)(v1beta1)
资源类型
ExecCredential
ExecCredential 由基于 exec 的插件使用,与 HTTP 传输组件沟通凭据信息。
字段 | 描述 |
---|---|
apiVersion string | client.authentication.k8s.io/v1beta1 |
kind string | ExecCredential |
spec [必需]ExecCredentialSpec
|
字段 spec 包含由 HTTP 传输组件传递给插件的信息。 |
status ExecCredentialStatus
|
字段 status 由插件填充,包含传输组件与 API 服务器连接时需要提供的凭据。 |
Cluster
出现在:
Cluster 中包含允许 exec 插件与 Kubernetes 集群进行通信身份认证时所需 的信息。
为了确保该结构体包含需要与 Kubernetes 集群进行通信的所有内容(就像通过 Kubeconfig 一样), 该字段应该映射到 "k8s.io/client-go/tools/clientcmd/api/v1".cluster, 除了证书授权之外,由于 CA 数据将始终以字节形式传递给插件。
字段 | 描述 |
---|---|
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 时才不能为空。 |
ExecCredentialStatus
出现在:
ExecCredentialStatus 中包含传输组件要使用的凭据。
字段 token 和 clientKeyData 都是敏感字段。 此数据只能在客户端与 exec 插件进程之间使用内存来传递。 exec 插件本身至少应通过文件访问许可来实施保护。
字段 | 描述 |
---|---|
expirationTimestamp meta/v1.Time
|
给出所提供的凭据到期的时间。 |
token [必需]string
|
客户端用做请求身份认证的持有者令牌。 |
clientCertificateData [必需]string
|
PEM 编码的客户端 TLS 证书(如果有临时证书,也会包含)。 |
clientKeyData [必需]string
|
与上述证书对应的、PEM 编码的私钥。 |