配置 API
- 1: Event Rate Limit Configuration (v1alpha1)
- 2: Image Policy API (v1alpha1)
- 3: kube-apiserver Audit 配置 (v1)
- 4: kube-apiserver 加密配置 (v1)
- 5: kube-apiserver 配置 (v1)
- 6: kube-apiserver 配置 (v1alpha1)
- 7: kube-proxy 配置 (v1alpha1)
- 8: kube-scheduler 配置 (v1)
- 9: kube-scheduler 配置 (v1beta2)
- 10: kube-scheduler 配置 (v1beta3)
- 11: kubeadm 配置 (v1beta2)
- 12: kubeadm 配置 (v1beta3)
- 13: Kubelet CredentialProvider (v1)
- 14: Kubelet CredentialProvider (v1alpha1)
- 15: Kubelet CredentialProvider (v1beta1)
- 16: Kubelet 配置 (v1alpha1)
- 17: Kubelet 配置 (v1beta1)
- 18: WebhookAdmission 配置 (v1)
- 19: 客户端身份认证(Client Authentication) (v1)
- 20: 客户端身份认证(Client Authentication)(v1beta1)
1 - Event Rate Limit Configuration (v1alpha1)
资源类型
Configuration
Configuration 为 EventRateLimit 准入控制器提供配置数据。
字段 | 描述 |
---|---|
apiVersion string | eventratelimit.admission.k8s.io/v1alpha1 |
kind string | Configuration |
limits [Required][]Limit | limits 是为所接收到的事件查询设置的限制。可以针对服务器端接收到的事件设置限制, 按逐个名字空间、逐个用户、或逐个来源+对象组合的方式均可以。 至少需要设置一种限制。 |
Limit
出现在:
Limit 是为特定限制类型提供的配置数据。
字段 | 描述 |
---|---|
type [必需]LimitType | type 是此配置所适用的限制的类型。 |
qps [必需]int32 | qps 是针对此类型的限制每秒钟所允许的事件查询次数。qps 和 burst 字段一起用来确定是否特定的事件查询会被接受。qps 确定的是当超出查询数量的 burst 值时可以接受的查询个数。 |
burst [必需]int32 | burst 是针对此类型限制的突发事件查询数量。qps 和 burst 字段一起使用可用来确定特定的事件查询是否被接受。 burst 字段确定针对特定的事件桶(bucket)可以接受的规模上限。 例如,如果 burst 是 10,qps 是 3,那么准入控制器会在接收 10 个查询之后阻塞所有查询。 每秒钟可以额外允许 3 个查询。如果这一限额未被用尽,则剩余的限额会被顺延到下一秒钟, 直到再次达到 10 个限额的上限。 |
cacheSize int32 | cacheSize 是此类型限制的 LRU 缓存的规模。如果某个事件桶(bucket)被从缓存中剔除, 该事件桶所对应的限额也会被重置。如果后来再次收到针对某个已被剔除的事件桶的查询, 则该事件桶会重新以干净的状态进入缓存,因而获得全量的突发查询配额。 默认的缓存大小是 4096。 如果 limitType 是 “server”,则 cacheSize 设置会被忽略。 |
LimitType
(string
类型的别名)
出现在:
LimitType 是限制类型(例如:per-namespace)。
2 - Image Policy API (v1alpha1)
资源类型
ImageReview
ImageReview 检查某个 Pod 中是否可以使用某些镜像。
字段 | 描述 |
---|---|
apiVersion string | imagepolicy.k8s.io/v1alpha1 |
kind string | ImageReview |
metadata meta/v1.ObjectMeta | 标准的对象元数据。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata 参阅 Kubernetes API 文档了解metadata 字段的内容。 |
spec [必需]ImageReviewSpec | spec 中包含与被评估的 Pod 相关的信息。 |
status ImageReviewStatus | status 由后台负责填充,用来标明 Pod 是否会被准入。 |
ImageReviewContainerSpec
出现在:
ImageReviewContainerSpec 是对 Pod 创建请求中的某容器的描述。
字段 | 描述 |
---|---|
image string | 此字段的格式可以是 image:tag 或 image@SHA:012345679abcdef。 |
ImageReviewSpec
出现在:
ImageReviewSpec 是对 Pod 创建请求的描述。
字段 | 描述 |
---|---|
containers []ImageReviewContainerSpec | containers 是一个列表,其中包含正被创建的 Pod 中各容器的信息子集。 |
annotations map[string]string | annotations 是一个键值对列表,内容抽取自 Pod 的注解(annotations)。
其中仅包含与模式 |
namespace string | namespace 是 Pod 创建所针对的名字空间。 |
ImageReviewStatus
出现在:
ImageReviewStatus 是针对 Pod 创建请求所作的评估结果。
字段 | 描述 |
---|---|
allowed [必需]bool | allowed 表明所有镜像都可以被运行。 |
reason string | 若 |
auditAnnotations map[string]string | auditAnnotations 会被通过 |
3 - 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 地址。 源 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 字段的详细信息。 |
rules [必需][]PolicyRule | 字段 rules 设置请求要被记录的审计级别(level)。 每个请求可能会与多条规则相匹配;发生这种状况时遵从第一条匹配规则。 默认的审计级别是 None,不过可以在列表的末尾使用一条全抓(catch-all)规则 重载其设置。 列表中的规则(PolicyRule)是严格有序的。 |
omitStages []Stage | 字段 omitStages 是一个阶段(Stage)列表,其中包含无须生成事件的阶段。 注意这一选项也可以通过每条规则来设置。 审计组件最终会忽略出现在 omitStages 中阶段,也会忽略规则中的阶段。 |
omitManagedFields bool | omitManagedFields 标明将请求和响应主体写入 API 审计日志时,是否省略其托管字段。 此字段值用作全局默认值 - 'true' 值将省略托管字段,否则托管字段将包含在 API 审计日志中。 请注意,也可以按规则指定此值,在这种情况下,规则中指定的值将覆盖全局默认值。 |
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 是此规则所适用的资源的列表。 例如: 如果存在通配符,则合法性检查逻辑会确保 resources 中的条目不会彼此重叠。 空的列表意味着规则适用于该 API 组中的所有资源及其子资源。 |
resourceNames []string | 字段 resourceNames 是策略将匹配的资源实例名称列表。
使用此字段时, |
Level
string
数据类型的别名。
出现在:
Level 定义的是审计过程中在日志内记录的信息量。
ObjectReference
出现在:
ObjectReference 包含的是用来检查或修改所引用对象时将需要的全部信息。
字段 | 描述 |
---|---|
resource string | 资源类别。 |
namespace string | 资源对象所在名字空间。 |
name string | 资源对象名称。 |
uid k8s.io/apimachinery/pkg/types.UID | 资源对象的唯一标识(UID)。 |
apiGroup string | 字段 apiGroup 给出包含所引用对象的 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 路径。
允许使用 ∗,但只能作为路径中最后一个完整分段。 |
omitStages []Stage | 字段 omitStages 是一个阶段(Stage)列表,针对所列的阶段服务器不会生成审计事件。 注意这一选项也可以在策略(Policy)级别指定。服务器审计组件会忽略 omitStages 中给出的阶段,也会忽略策略中给出的阶段。 空列表意味着不对阶段作任何限制。 |
omitManagedFields bool | omitManagedFields 决定将请求和响应主体写入 API 审计日志时,是否省略其托管字段。
|
Stage
string
数据类型的别名。
出现在:
Stage 定义在请求处理过程中可以生成审计事件的阶段。
4 - 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 的封套转换器的名称、缓存大小以及配置文件路径信息。
字段 | 描述 |
---|---|
apiVersion string | KeyManagementService 的 apiVersion |
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 |
|
5 - 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 |
|
6 - 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 |
|
7 - kube-proxy 配置 (v1alpha1)
资源类型
KubeProxyConfiguration
KubeProxyConfiguration 包含用来配置 Kubernetes 代理服务器的所有配置信息。
字段 | 描述 |
---|---|
apiVersion string | kubeproxy.config.k8s.io/v1alpha1 |
kind string | KubeProxyConfiguration |
featureGates [必需]map[string]bool |
|
bindAddress [必需]string |
|
healthzBindAddress [必需]string |
|
metricsBindAddress [必需]string |
|
bindAddressHardFail [必需]bool |
|
enableProfiling [必需]bool |
|
clusterCIDR [必需]string |
|
hostnameOverride [必需]string |
|
clientConnection [必需]ClientConnectionConfiguration |
|
iptables [必需]KubeProxyIPTablesConfiguration |
|
ipvs [必需]KubeProxyIPVSConfiguration |
|
oomScoreAdj [必需]int32 |
|
mode [必需]ProxyMode |
|
portRange [必需]string |
|
conntrack [必需]KubeProxyConntrackConfiguration |
|
configSyncPeriod [必需]meta/v1.Duration |
|
nodePortAddresses [必需][]string |
|
winkernel [必需]KubeProxyWinkernelConfiguration |
|
showHiddenMetricsForVersion [必需]string |
|
detectLocalMode [必需]LocalMode |
|
detectLocal [必需]DetectLocalConfiguration |
|
DetectLocalConfiguration
出现在:
DetectLocalConfiguration 包含与 DetectLocalMode 选项相关的可选设置。
字段 | 描述 |
---|---|
bridgeInterface [必需]string |
|
interfaceNamePrefix [必需]string |
|
KubeProxyConntrackConfiguration
出现在:
KubeProxyConntrackConfiguration 包含为 Kubernetes 代理服务器提供的 conntrack 设置。
字段 | 描述 |
---|---|
maxPerCore [必需]int32 |
|
min [必需]int32 |
|
tcpEstablishedTimeout [必需]meta/v1.Duration |
|
tcpCloseWaitTimeout [必需]meta/v1.Duration |
|
KubeProxyIPTablesConfiguration
出现在:
KubeProxyIPTablesConfiguration 包含用于 Kubernetes 代理服务器的、与 iptables 相关的配置细节。
字段 | 描述 |
---|---|
masqueradeBit [必需]int32 |
|
masqueradeAll [必需]bool |
|
localhostNodePorts [必需]bool | localhostNodePorts 告知 kube-proxy 允许通过 localhost 访问服务 NodePorts(仅 iptables 模式) |
syncPeriod [必需]meta/v1.Duration |
|
minSyncPeriod [必需]meta/v1.Duration |
|
KubeProxyIPVSConfiguration
出现在:
KubeProxyIPVSConfiguration 包含用于 Kubernetes 代理服务器的、与 ipvs 相关的配置细节。
字段 | 描述 |
---|---|
syncPeriod [必需]meta/v1.Duration |
|
minSyncPeriod [必需]meta/v1.Duration |
|
scheduler [必需]string | IPVS 调度器。 |
excludeCIDRs [必需][]string |
|
strictARP [必需]bool |
|
tcpTimeout [必需]meta/v1.Duration |
|
tcpFinTimeout [必需]meta/v1.Duration |
|
udpTimeout [必需]meta/v1.Duration |
|
KubeProxyWinkernelConfiguration
出现在:
KubeProxyWinkernelConfiguration 包含 Kubernetes 代理服务器的 Windows/HNS 设置。
字段 | 描述 |
---|---|
networkName [必需]string |
|
sourceVip [必需]string |
|
enableDSR [必需]bool |
|
rootHnsEndpointName [必需]string |
|
forwardHealthCheckVip [必需]bool |
|
LocalMode
(string
类型的别名)
出现在:
LocalMode 代表的是对节点上本地流量进行检测的模式。
ProxyMode
(string
类型的别名)
出现在:
ProxyMode 表示的是 Kubernetes 代理服务器所使用的模式。
目前 Linux 平台上有两种可用的代理模式:'iptables' 和 'ipvs'。 在 Windows 平台上可用的一种代理模式是:'kernelspace'。
如果代理模式未被指定,将使用最佳可用的代理模式(目前在 Linux 上是 iptables
,在 Windows 上是 kernelspace
)。
如果不能使用选定的代理模式(由于缺少内核支持、缺少用户空间组件等),则 kube-proxy 将出错并退出。
ClientConnectionConfiguration
出现在:
ClientConnectionConfiguration 包含构造客户端所需要的细节信息。
字段 | 描述 |
---|---|
kubeconfig [必需]string |
|
acceptContentTypes [必需]string |
|
contentType [必需]string |
|
qps [必需]float32 |
|
burst [必需]int32 |
|
DebuggingConfiguration
出现在:
DebuggingConfiguration 包含调试相关功能的配置。
字段 | 描述 |
---|---|
enableProfiling [Required]bool |
|
enableContentionProfiling [Required]bool |
|
LeaderElectionConfiguration
出现在:
LeaderElectionConfiguration 为能够支持领导者选举的组件定义其领导者选举客户端的配置。
字段 | 描述 |
---|---|
leaderElect [必需]bool |
|
leaseDuration [必需]meta/v1.Duration |
|
renewDeadline [必需]meta/v1.Duration |
|
retryPeriod [必需]meta/v1.Duration |
|
resourceLock [必需]string |
|
resourceName [必需]string |
|
resourceNamespace [必需]string |
|
8 - kube-scheduler 配置 (v1)
资源类型
- DefaultPreemptionArgs
- InterPodAffinityArgs
- KubeSchedulerConfiguration
- NodeAffinityArgs
- NodeResourcesBalancedAllocationArgs
- NodeResourcesFitArgs
- PodTopologySpreadArgs
- VolumeBindingArgs
DefaultPreemptionArgs
DefaultPreemptionArgs 包含用来配置 DefaultPreemption 插件的参数。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1 |
kind string | DefaultPreemptionArgs |
minCandidateNodesPercentage [必需]int32 |
|
minCandidateNodesAbsolute [必需]int32 |
|
InterPodAffinityArgs
InterPodAffinityArgs 包含用来配置 InterPodAffinity 插件的参数。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1 |
kind string | InterPodAffinityArgs |
hardPodAffinityWeight [必需]int32 |
|
KubeSchedulerConfiguration
KubeSchedulerConfiguration 用来配置调度器。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1 |
kind string | KubeSchedulerConfiguration |
parallelism [必需]int32 |
|
leaderElection [必需]LeaderElectionConfiguration | LeaderElection 字段用来定义领导者选举客户端的配置。 |
clientConnection [必需]ClientConnectionConfiguration |
|
DebuggingConfiguration [必需]DebuggingConfiguration | (DebuggingConfiguration 的成员被内嵌到此类型中)
|
percentageOfNodesToScore [必需]int32 |
|
podInitialBackoffSeconds [必需]int64 |
|
podMaxBackoffSeconds [必需]int64 |
|
profiles [必需][]KubeSchedulerProfile |
|
extenders [必需][]Extender |
|
NodeAffinityArgs
NodeAffinityArgs 中包含配置 NodeAffinity 插件的参数。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1 |
kind string | NodeAffinityArgs |
addedAffinity core/v1.NodeAffinity |
|
NodeResourcesBalancedAllocationArgs
NodeResourcesBalancedAllocationArgs 包含用来配置 NodeResourcesBalancedAllocation 插件的参数。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1 |
kind string | NodeResourcesBalancedAllocationArgs |
resources [必需][]ResourceSpec | 要管理的资源;如果未设置,则默认值为 "cpu" 和 "memory"。 |
NodeResourcesFitArgs
NodeResourcesFitArgs 包含用来配置 NodeResourcesFit 插件的参数。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1 |
kind string | NodeResourcesFitArgs |
ignoredResources [必需][]string |
|
ignoredResourceGroups [必需][]string |
|
scoringStrategy [必需]ScoringStrategy |
|
PodTopologySpreadArgs
PodTopologySpreadArgs 包含用来配置 PodTopologySpread 插件的参数。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1 |
kind string | PodTopologySpreadArgs |
defaultConstraints []core/v1.TopologySpreadConstraint |
|
defaultingType PodTopologySpreadConstraintsDefaulting |
默认值为 "System"。 |
VolumeBindingArgs
VolumeBindingArgs 包含用来配置 VolumeBinding 插件的参数。
字段 | 描述 |
---|---|
apiVersion string | kubescheduler.config.k8s.io/v1 |
kind string | VolumeBindingArgs |
bindTimeoutSeconds [必需]int64 |
|
shape []UtilizationShapePoint |
默认的曲线计分点为:
所有计分点必须按利用率值的升序来排序。 |
Extender
出现在:
Extender 包含与扩展模块(Extender)通信所用的参数。 如果未指定 verb 或者 verb 为空,则假定对应的扩展模块选择不提供该扩展功能。
字段 | 描述 |
---|---|
urlPrefix [必需]string | 用来访问扩展模块的 URL 前缀。 |
filterVerb [必需]string | filter 调用所使用的动词,如果不支持过滤操作则为空。 此动词会在向扩展模块发送 filter 调用时追加到 urlPrefix 后面。 |
preemptVerb [必需]string | preempt 调用所使用的动词,如果不支持 preempt 操作则为空。 此动词会在向扩展模块发送 preempt 调用时追加到 urlPrefix 后面。 |
prioritizeVerb [必需]string | prioritize 调用所使用的动词,如果不支持 prioritize 操作则为空。 此动词会在向扩展模块发送 prioritize 调用时追加到 urlPrefix 后面。 |
weight [必需]int64 | 针对 prioritize 调用所生成的节点分数要使用的数值系数。 weight 值必须是正整数。 |
bindVerb [必需]string | bind 调用所使用的动词,如果不支持 bind 操作则为空。 此动词会在向扩展模块发送 bind 调用时追加到 urlPrefix 后面。 如果扩展模块实现了此方法,扩展模块要负责将 Pod 绑定到 API 服务器。 只有一个扩展模块可以实现此函数。 |
enableHTTPS [必需]bool |
|
tlsConfig [Required]ExtenderTLSConfig |
|
httpTimeout [必需]meta/v1.Duration |
|
nodeCacheCapable [必需]bool |
|
managedResources []ExtenderManagedResource |
|
ignorable [必需]bool |
|
ExtenderManagedResource
出现在:
ExtenderManagedResource 描述某扩展模块所管理的扩展资源的参数。
字段 | 描述 |
---|---|
name [必需]string | 扩展资源的名称。 |
ignoredByScheduler [必需]bool |
|
ExtenderTLSConfig
出现在:
ExtenderTLSConfig 包含启用与扩展模块间 TLS 传输所需的配置参数。
字段 | 描述 |
---|---|
insecure [必需]bool | 访问服务器时不需要检查 TLS 证书。此配置仅针对测试用途。 |
serverName [必需]string |
|
certFile [必需]string | 服务器端所要求的 TLS 客户端证书认证。 |
keyFile [必需]string | 服务器端所要求的 TLS 客户端秘钥认证。 |
caFile [必需]string | 服务器端被信任的根证书。 |
certData [必需][]byte |
|
keyData [必需][]byte |
|
caData [必需][]byte |
|
KubeSchedulerProfile
出现在:
KubeSchedulerProfile 是一个调度方案。
字段 | 描述 |
---|---|
schedulerName [必需]string |
|
percentageOfNodesToScore [必需]int32 | percentageOfNodesToScore 是已发现可运行 Pod 的节点与所有节点的百分比, 调度器所发现的可行节点到达此阈值时,将停止在集群中继续搜索可行节点。 这有助于提高调度器的性能。无论此标志的值是多少,调度器总是尝试至少找到 “minFeasibleNodesToFind” 个可行的节点。 例如:如果集群大小为 500 个节点并且此标志的值为 30,则调度器在找到 150 个可行节点后将停止寻找更多可行的节点。 当值为 0 时,默认百分比(根据集群大小为 5% - 50%)的节点将被评分。此设置值将覆盖全局的 PercentageOfNodesToScore 值。 如果为空,将使用全局 PercentageOfNodesToScore。 |
plugins [必需]Plugins |
如果针对某个扩展点没有设置被启用或被禁止的插件,
则使用该扩展点的默认插件(如果有的话)。如果设置了 QueueSort 插件,
则同一个 QueueSort 插件和 |
pluginConfig [必需][]PluginConfig |
|
Plugin
出现在:
Plugin 指定插件的名称及其权重(如果适用的话)。权重仅用于评分(Score)插件。
字段 | 描述 |
---|---|
name [必需]string | 插件的名称。 |
weight [必需]int32 | 插件的权重;仅适用于评分(Score)插件。 |
PluginConfig
出现在:
PluginConfig 给出初始化阶段要传递给插件的参数。 在多个扩展点被调用的插件仅会被初始化一次。 参数可以是任意结构。插件负责处理这里所传的参数。
字段 | 描述 |
---|---|
name [必需]string |
|
args [必需]k8s.io/apimachinery/pkg/runtime.RawExtension |
|
PluginSet
出现在:
PluginSet 为某扩展点设置要启用或禁用的插件。 如果数组为空,或者取值为 null,则使用该扩展点的默认插件集合。
字段 | 描述 |
---|---|
enabled [必需][]Plugin |
|
disabled [必需][]Plugin |
|
Plugins
出现在:
Plugins 结构中包含多个扩展点。当此结构被设置时, 针对特定扩展点所启用的所有插件都在这一列表中。 如果配置中不包含某个扩展点,则使用该扩展点的默认插件集合。 被启用的插件的调用顺序与这里指定的顺序相同,都在默认插件之后调用。 如果它们需要在默认插件之前调用,则需要先行禁止默认插件, 之后在这里按期望的顺序重新启用。
字段 | 描述 |
---|---|
preEnqueue [必需]PluginSet | preEnqueue 是在将 Pod 添加到调度队列之前应调用的插件的列表。 |
queueSort [必需]PluginSet |
|
preFilter [必需]PluginSet |
|
filter [必需]PluginSet |
|
postFilter [必需]PluginSet |
|
preScore [必需]PluginSet |
|
score [必需]PluginSet |
|
reserve [必需]PluginSet |
|
permit [必需]PluginSet |
|
preBind [必需]PluginSet |
|
bind [必需]PluginSet |
|
postBind [必需]PluginSet |
|
multiPoint [必需]PluginSet |
就优先序而言,插件配置遵从以下基本层次:
这意味着优先序较高的插件会先被运行,并且覆盖 用户显式配置的插件也会比默认插件优先序高。 在这样的层次结构设计之下, |
PodTopologySpreadConstraintsDefaulting
(string
类型的别名)
出现在:
PodTopologySpreadConstraintsDefaulting 定义如何为 PodTopologySpread 插件设置默认的约束。
RequestedToCapacityRatioParam
出现在:
RequestedToCapacityRatioParam 结构定义 RequestedToCapacityRatio 的参数。
字段 | 描述 |
---|---|
shape [必需][]UtilizationShapePoint |
|
ResourceSpec
出现在:
ResourceSpec 用来代表某个资源。
字段 | 描述 |
---|---|
name [必需]string | 资源名称。 |
weight [必需]int64 | 资源权重。 |
ScoringStrategy
出现在:
ScoringStrategy 为节点资源插件定义 ScoringStrategyType。
字段 | 描述 |
---|---|
type [必需]ScoringStrategyType |
|
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 |
|
ClientConnectionConfiguration
出现在:
ClientConnectionConfiguration 中包含用来构造客户端所需的细节。
字段 | 描述 |
---|---|
kubeconfig [必需]string |
|
acceptContentTypes [必需]string |
|
contentType [必需]string |
|
qps [必需]float32 |
|
burst [必需]int32 |
|
DebuggingConfiguration
出现在:
DebuggingConfiguration 保存与调试功能相关的配置。
字段 | 描述 |
---|---|
enableProfiling [必需]bool |
|
enableContentionProfiling [必需]bool |
|
LeaderElectionConfiguration
出现在:
LeaderElectionConfiguration 为能够支持领导者选举的组件定义其领导者选举客户端的配置。
字段 | 描述 |
---|---|
leaderElect [必需]bool |
|
leaseDuration [必需]meta/v1.Duration |
|
renewDeadline [必需]meta/v1.Duration |
|
retryPeriod [Required[必需]meta/v1.Duration |
|
resourceLock [必需]string |
|
resourceName [必需]string |
|
resourceNamespace [必需]string |
|
9 - 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 |
|
metricsBindAddress [必需]string |
|
DebuggingConfiguration [必需]DebuggingConfiguration | (DebuggingConfiguration 的成员被内嵌到此类型中)此字段设置与调试相关功能特性的配置。 TODO:我们可能想把它做成一个子结构,像调试 component-base/config/v1alpha1.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 |
|
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 | 此字段针对未定义 |
defaultingType PodTopologySpreadConstraintsDefaulting |
默认值为 "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 |
|
certFile [必需]string | 服务器端所要求的 TLS 客户端证书认证。 |
keyFile [必需]string | 服务器端所要求的 TLS 客户端秘钥认证。 |
caFile [必需]string | 服务器端可信任的根证书。 |
certData [必需][]byte |
|
keyData [必需][]byte |
|
caData [必需][]byte |
|
KubeSchedulerProfile
出现在:
KubeSchedulerProfile 是一个调度方案。
字段 | 描述 |
---|---|
schedulerName [必需]string |
|
plugins [必需]Plugins |
如果针对某个扩展点没有设置被启用或被禁止的插件,
则使用该扩展点的默认插件(如果有的话)。如果设置了 QueueSort 插件,则同一个 QueueSort
插件和 |
pluginConfig [必需][]PluginConfig |
|
Plugin
出现在:
Plugin 指定插件的名称及其权重(如果适用的话)。权重仅用于评分(Score)插件。
字段 | 描述 |
---|---|
name [必需]string | 插件的名称。 |
weight [必需]int32 | 插件的权重;仅适用于评分(Score)插件。 |
PluginConfig
出现在:
PluginConfig 给出初始化阶段要传递给插件的参数。 在多个扩展点被调用的插件仅会被初始化一次。 参数可以是任意结构。插件负责处理这里所传的参数。
字段 | 描述 |
---|---|
name [必需]string |
|
args [必需]k8s.io/apimachinery/pkg/runtime.RawExtension |
|
PluginSet
出现在:
PluginSet 为某扩展点设置要启用或禁用的插件。 如果数组为空,或者取值为 null,则使用该扩展点的默认插件集合。
字段 | 描述 |
---|---|
enabled [必需][]Plugin |
|
disabled [必需][]Plugin |
|
Plugins
出现在:
Plugins 结构中包含多个扩展点。当此结构被设置时,针对特定扩展点所启用的所有插件都在这一列表中。 如果配置中不包含某个扩展点,则使用该扩展点的默认插件集合。 被启用的插件的调用顺序与这里指定的顺序相同,都在默认插件之后调用。 如果它们需要在默认插件之前调用,则需要先行禁止默认插件,之后在这里按期望的顺序重新启用。
字段 | 描述 |
---|---|
preEnqueue [Required]PluginSet | PreEnqueue 是在将 Pod 添加到调度队列之前应该调用的插件列表。 |
queueSort [必需]PluginSet |
|
preFilter [必需]PluginSet |
|
filter [必需]PluginSet |
|
postFilter [必需]PluginSet |
|
preScore [必需]PluginSet |
|
score [必需]PluginSet |
|
reserve [必需]PluginSet |
|
permit [必需]PluginSet |
|
preBind [必需]PluginSet |
|
bind [必需]PluginSet |
|
postBind [必需]PluginSet |
|
multiPoint [必需]PluginSet |
|
PodTopologySpreadConstraintsDefaulting
(string
类型的别名)
出现在:
PodTopologySpreadConstraintsDefaulting 定义如何为 PodTopologySpread 插件设置默认的约束。
RequestedToCapacityRatioParam
出现在:
RequestedToCapacityRatioParam 定义 RequestedToCapacityRatio 的参数。
字段 | 描述 |
---|---|
shape [必需][]UtilizationShapePoint |
|
ResourceSpec
出现在:
ResourceSpec 用来代表某个资源。
字段 | 描述 |
---|---|
name [必需]string | 资源名称。 |
weight [必需]int64 | 资源权重。 |
ScoringStrategy
出现在:
ScoringStrategy 为节点资源插件定义 ScoringStrategyType。
字段 | 描述 |
---|---|
type [必需]ScoringStrategyType |
|
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 |
|
contentType [必需]string |
|
qps [必需]float32 |
|
burst [必需]int32 |
|
DebuggingConfiguration
出现在:
DebuggingConfiguration 保存与调试功能相关的配置。
字段 | 描述 |
---|---|
enableProfiling [必需]bool | 此字段允许通过 Web 接口 host:port/debug/pprof/ 执行性能分析。 |
enableContentionProfiling [必需]bool | 此字段在 |
LeaderElectionConfiguration
出现在:
LeaderElectionConfiguration 为能够支持领导者选举的组件定义其领导者选举客户端的配置。
字段 | 描述 |
---|---|
leaderElect [必需]bool |
|
leaseDuration [必需]meta/v1.Duration |
|
renewDeadline [必需]meta/v1.Duration |
|
retryPeriod [必需]meta/v1.Duration |
|
resourceLock [必需]string | 此字段给出在领导者选举期间要作为锁来使用的资源对象类型。 |
resourceName [必需]string | 此字段给出在领导者选举期间要作为锁来使用的资源对象名称。 |
resourceNamespace [必需]string | 此字段给出在领导者选举期间要作为锁来使用的资源对象所在名字空间。 |
10 - 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 中候选节点的绝对下限。
用于试运行抢占而列举的候选节点个数近似于通过下面的公式计算的: |
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 的成员被内嵌到此类型中)此字段设置与调试相关功能特性的配置。 TODO:我们可能想把它做成一个子结构,像调试 component-base/config/v1alpha1.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 |
|
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 | 此字段针对未定义 |
defaultingType PodTopologySpreadConstraintsDefaulting |
默认值为 "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 |
|
certFile [必需]string | 服务器端所要求的 TLS 客户端证书认证。 |
keyFile [必需]string | 服务器端所要求的 TLS 客户端秘钥认证。 |
caFile [必需]string | 服务器端被信任的根证书。 |
certData [必需][]byte |
|
keyData [必需][]byte |
|
caData [必需][]byte |
|
KubeSchedulerProfile
出现在:
KubeSchedulerProfile 是一个调度方案。
字段 | 描述 |
---|---|
schedulerName [必需]string |
|
plugins [必需]Plugins |
如果针对某个扩展点没有设置被启用或被禁止的插件,
则使用该扩展点的默认插件(如果有的话)。如果设置了 QueueSort 插件,
则同一个 QueueSort 插件和 |
pluginConfig [必需][]PluginConfig |
|
Plugin
出现在:
Plugin 指定插件的名称及其权重(如果适用的话)。权重仅用于评分(Score)插件。
字段 | 描述 |
---|---|
name [必需]string | 插件的名称。 |
weight [必需]int32 | 插件的权重;仅适用于评分(Score)插件。 |
PluginConfig
出现在:
PluginConfig 给出初始化阶段要传递给插件的参数。 在多个扩展点被调用的插件仅会被初始化一次。 参数可以是任意结构。插件负责处理这里所传的参数。
字段 | 描述 |
---|---|
name [必需]string |
|
args [必需]k8s.io/apimachinery/pkg/runtime.RawExtension |
|
PluginSet
出现在:
PluginSet 为某扩展点设置要启用或禁用的插件。 如果数组为空,或者取值为 null,则使用该扩展点的默认插件集合。
字段 | 描述 |
---|---|
enabled [必需][]Plugin |
|
disabled [必需][]Plugin |
|
Plugins
出现在:
Plugins 结构中包含多个扩展点。当此结构被设置时, 针对特定扩展点所启用的所有插件都在这一列表中。 如果配置中不包含某个扩展点,则使用该扩展点的默认插件集合。 被启用的插件的调用顺序与这里指定的顺序相同,都在默认插件之后调用。 如果它们需要在默认插件之前调用,则需要先行禁止默认插件, 之后在这里按期望的顺序重新启用。
字段 | 描述 |
---|---|
preEnqueue [必需]PluginSet | PreEnqueue 是一个在将 Pod 添加到调度队列之前应该调用的插件列表。 |
queueSort [必需]PluginSet |
|
preFilter [必需]PluginSet |
|
filter [必需]PluginSet |
|
postFilter [必需]PluginSet |
|
preScore [必需]PluginSet |
|
score [必需]PluginSet |
|
reserve [必需]PluginSet |
|
permit [必需]PluginSet |
|
preBind [必需]PluginSet |
|
bind [必需]PluginSet |
|
postBind [必需]PluginSet |
|
multiPoint [必需]PluginSet |
就优先序而言,插件配置遵从以下基本层次:
这意味着优先序较高的插件会先被运行,并且覆盖 用户显式配置的插件也会比默认插件优先序高。 在这样的层次结构设计之下, |
PodTopologySpreadConstraintsDefaulting
(string
类型的别名)
出现在:
PodTopologySpreadConstraintsDefaulting 定义如何为 PodTopologySpread 插件设置默认的约束。
RequestedToCapacityRatioParam
出现在:
RequestedToCapacityRatioParam 结构定义 RequestedToCapacityRatio 的参数。
字段 | 描述 |
---|---|
shape [必需][]UtilizationShapePoint |
|
ResourceSpec
出现在:
ResourceSpec 用来代表某个资源。
字段 | 描述 |
---|---|
name [必需]string | 资源名称。 |
weight [必需]int64 | 资源权重。 |
ScoringStrategy
出现在:
ScoringStrategy 为节点资源插件定义 ScoringStrategyType。
字段 | 描述 |
---|---|
type [必需]ScoringStrategyType |
|
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 |
|
contentType [必需]string |
|
qps [必需]float32 |
|
burst [必需]int32 |
|
DebuggingConfiguration
出现在:
DebuggingConfiguration 保存与调试功能相关的配置。
字段 | 描述 |
---|---|
enableProfiling [必需]bool | 此字段允许通过 Web 接口 host:port/debug/pprof/ 执行性能分析。 |
enableContentionProfiling [必需]bool | 此字段在 |
LeaderElectionConfiguration
出现在:
LeaderElectionConfiguration 为能够支持领导者选举的组件定义其领导者选举客户端的配置。
字段 | 描述 |
---|---|
leaderElect [必需]bool |
|
leaseDuration [必需]meta/v1.Duration |
|
renewDeadline [必需]meta/v1.Duration |
|
retryPeriod [必需]meta/v1.Duration |
|
resourceLock [必需]string | resourceLock 给出在领导者选举期间要作为锁来使用的资源对象类型。 |
resourceName [必需]string | resourceName 给出在领导者选举期间要作为锁来使用的资源对象名称。 |
resourceNamespace [必需]string | resourceNamespace 给出在领导者选举期间要作为锁来使用的资源对象所在名字空间。 |
11 - kubeadm 配置 (v1beta2)
概述
包 v1beta2 已被 v1beta3 所弃用。
包 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 地址)。localAPIEndpoint
:代表的是要部署到此节点上的 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-cn/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-cn/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: "someValue" 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: "registry.k8s.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: "registry.k8s.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]github.com/tengqm/kubeconfig/config/kubeadm/v1beta2.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 |
|
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 |
|
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 |
|
12 - 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://pkg.go.dev/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://pkg.go.dev/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: "someValue" 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: "registry.k8s.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: "registry.k8s.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 服务器实例的端点。
资源类型
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"
在节点启动引导是作为一种身份认证方法。
此令牌的生命期是短暂的,并且应该如此。
字段 | 描述 |
---|---|
- [必需]string | 无描述。 |
- [必需]string | 无描述。 |
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 |
|
13 - Kubelet CredentialProvider (v1)
资源类型
CredentialProviderRequest
CredentialProviderRequest 包含 kubelet 需要通过身份验证才能访问的镜像。 kubelet 将此请求对象通过 stdin 传递到插件。 通常,插件应优先使用所收到的 apiVersion 作出响应。
字段 | 描述 |
---|---|
apiVersion string | credentialprovider.kubelet.k8s.io/v1 |
kind string | CredentialProviderRequest |
image [必需]string | image 是作为凭据提供程序插件请求的一部分所拉取的容器镜像。 这些插件可以选择解析镜像以提取获取凭据所需的任何信息。 |
CredentialProviderResponse
CredentialProviderResponse 中包含 kubelet 应针对原始请求中所给镜像来使用的凭据。 kubelet 将通过 stdout 读取来自插件的响应。 此响应应被设置为与 CredentialProviderRequest 相同的 apiVersion。
字段 | 描述 |
---|---|
apiVersion string | credentialprovider.kubelet.k8s.io/v1 |
kind string | CredentialProviderResponse |
cacheKeyType [必需]PluginCacheKeyType | cacheKeyType 标示了基于请求中提供的镜像要使用的缓存键的类型。 缓存键类型有三个有效值:Image、Registry 和 Global。 如果所指定的值无效,则此响应不会被 kubelet 使用。 |
cacheDuration meta/v1.Duration | cacheDuration 标示所提供的凭据可被缓存的持续期。 kubelet 将使用此字段为 AuthConfig 中的凭据设置内存中缓存持续期。 如果为空,kubelet 将使用 CredentialProviderConfig 中提供的 defaultCacheDuration。 如果设置为 0,kubelet 将不再缓存提供的 AuthConfig。 |
auth map[string]k8s.io/kubelet/pkg/apis/credentialprovider/v1.AuthConfig | auth 是一个映射,包含传递给 kubelet 的身份验证信息。 映射中每个键都是一个匹配镜像字符串(更多内容见下文)。 相应的 authConfig 值应该对匹配此键的所有镜像有效。 如果无法为请求的镜像返回有效凭据,则插件应将此字段设置为空。 映射中的每个主键都可以包含端口和路径。 域名中可以使用 Glob 通配,但不能在端口或路径中使用 Glob。 Glob 支持类似 “\*.k8s.io” 或 “k8s.\*.io” 这类子域以及 “k8s.\*” 这类顶级域。 也支持匹配的部分子域,例如 “app\*.k8s.io”。 每个 Glob 只能匹配一个子域段,因此 *.io 与 *.k8s.io 不匹配。 当满足以下所有条件时,kubelet 将根据主键来匹配镜像:
当返回多个主键时,kubelet 将以相反的顺序遍历所有主键,以便:
对于任一给定的匹配项,kubelet 将尝试用提供的凭据拉取镜像,并在第一次成功通过身份验证的拉取之后停止。 示例键:
|
AuthConfig
出现在:
AuthConfig 包含针对容器镜像仓库的身份验证信息。 目前仅支持基于用户名/密码的身份验证,但未来可能添加更多的身份验证机制。
字段 | 描述 |
---|---|
username [必需]string | username 是对容器镜像仓库身份验证所用的用户名。 空白用户名是有效的。 |
password [必需]string | password 是对容器镜像仓库身份验证所用的密码。 空白密码是有效的。 |
PluginCacheKeyType
(string
的别名)
出现在:
14 - Kubelet CredentialProvider (v1alpha1)
资源类型
CredentialProviderRequest
CredentialProviderRequest 包含 kubelet 需要进行身份验证的镜像。 Kubelet 会通过标准输入将此请求对象传递给插件。一般来说,插件倾向于用它们所收到的相同的 apiVersion 来响应。
字段 | 描述 |
---|---|
apiVersion string | credentialprovider.kubelet.k8s.io/v1alpha1 |
kind string | CredentialProviderRequest |
image [必需]string |
|
CredentialProviderResponse
CredentialProviderResponse 持有 kubelet 应用于原始请求中提供的指定镜像的凭据。 kubelet 将通过标准输出读取插件的响应。此响应的 apiVersion 值应设置为与 CredentialProviderRequest 中 apiVersion 值相同。
字段 | 描述 |
---|---|
apiVersion string | credentialprovider.kubelet.k8s.io/v1alpha1 |
kind string | CredentialProviderResponse |
cacheKeyType [必需]PluginCacheKeyType |
|
cacheDuration meta/v1.Duration |
|
auth map[string]k8s.io/kubelet/pkg/apis/credentialprovider/v1alpha1.AuthConfig |
映射中每个键值都是一个正则表达式,可以选择包含端口和路径。
域名部分可以包含通配符,但在端口或路径中不能使用通配符。
支持通配符作为子域,如 当满足以下所有条件时,kubelet 会将镜像与键值匹配:
当返回多个键(key)时,kubelet 会倒序遍历所有键,这样:
对于任何给定的匹配,kubelet 将尝试使用提供的凭据进行镜像拉取,并在第一次成功验证后停止拉取。 键值示例:
|
AuthConfig
出现在:
AuthConfig 包含容器仓库的身份验证信息。目前仅支持基于用户名/密码的身份验证,但未来可能会添加更多身份验证机制。
字段 | 描述 |
---|---|
username [必需]string |
|
password [必需]string |
|
PluginCacheKeyType
(string
数据类型的别名)
出现在:
15 - Kubelet CredentialProvider (v1beta1)
资源类型
CredentialProviderRequest
CredentialProviderRequest 包含 kubelet 需要进行身份验证的镜像。 Kubelet 会通过标准输入将此请求对象传递给插件。一般来说,插件倾向于用它们所收到的相同的 apiVersion 来响应。
字段 | 描述 |
---|---|
apiVersion string | credentialprovider.kubelet.k8s.io/v1beta1 |
kind string | CredentialProviderRequest |
image [必需]string |
|
CredentialProviderResponse
CredentialProviderResponse 持有 kubelet 应用于原始请求中提供的指定镜像的凭据。 kubelet 将通过标准输出读取插件的响应。此响应的 apiVersion 值应设置为与 CredentialProviderRequest 中 apiVersion 值相同。
字段 | 描述 |
---|---|
apiVersion string | credentialprovider.kubelet.k8s.io/v1beta1 |
kind string | CredentialProviderResponse |
cacheKeyType [必需]PluginCacheKeyType |
|
cacheDuration meta/v1.Duration |
|
auth map[string]k8s.io/kubelet/pkg/apis/credentialprovider/v1beta1.AuthConfig |
映射中每个键值都是一个正则表达式,可以选择包含端口和路径。
域名部分可以包含通配符,但在端口或路径中不能使用通配符。
支持通配符作为子域,如 当满足以下所有条件时,kubelet 会将镜像与键值匹配:
当返回多个键(key)时,kubelet 会倒序遍历所有键,这样:
对于任何给定的匹配,kubelet 将尝试使用提供的凭据进行镜像拉取,并在第一次成功验证后停止拉取。 键值示例:
|
AuthConfig
出现在:
AuthConfig 包含容器仓库的身份验证信息。目前仅支持基于用户名/密码的身份验证,但未来可能会添加更多身份验证机制。
字段 | 描述 |
---|---|
username [必需]string |
|
password [必需]string |
|
PluginCacheKeyType
(string
数据类型的别名)
出现在:
16 - Kubelet 配置 (v1alpha1)
资源类型
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 |
对类似 镜像与
|
defaultCacheDuration [必需]meta/v1.Duration | defaultCacheDuration 是插件在内存中缓存凭据的默认时长,
在插件响应中没有给出缓存时长时,使用这里设置的值。此字段是必需的。 |
apiVersion [必需]string | 要求 exec 插件 CredentialProviderRequest 请求的输入版本。 所返回的 CredentialProviderResponse 必须使用与输入相同的编码版本。当前支持的值有:
|
args []string | 在执行插件可执行文件时要传递给命令的参数。 |
env []ExecEnvVar | env 定义要提供给插件进程的额外的环境变量。
这些环境变量会与主机上的其他环境变量以及 client-go 所使用的环境变量组合起来,
一起传递给插件。 |
ExecEnvVar
出现在:
ExecEnvVar 用来在执行基于 exec 的凭据插件时设置环境变量。
字段 | 描述 |
---|---|
name [必需]string | 环境变量名称。 |
value [必需]string | 环境变量取值。 |
17 - Kubelet 配置 (v1beta1)
资源类型
CredentialProviderConfig
CredentialProviderConfig 包含有关每个 exec 凭据提供者的配置信息。 Kubelet 从磁盘上读取这些配置信息,并根据 CredentialProvider 类型启用各个提供者。
字段 | 描述 |
---|---|
apiVersion string | kubelet.config.k8s.io/v1beta1 |
kind string | CredentialProviderConfig |
providers [必需][]CredentialProvider |
|
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" |
topologyManagerPolicyOptions map[string]string | TopologyManagerPolicyOptions 是一组 key=value 键值映射,容许设置额外的选项来微调拓扑管理器策略的行为。需要同时启用 "TopologyManager" 和 "TopologyManagerPolicyOptions" 特性门控。 默认值:nil |
qosReserved map[string]string |
默认值:nil |
runtimeRequestTimeout meta/v1.Duration |
默认值:"2m" |
hairpinMode string |
一般而言,用户必须设置 默认值:"promiscuous-bridge" |
maxPods int32 |
默认值:110 |
podCIDR string |
默认值:"" |
podPidsLimit int64 |
默认值:-1 |
resolvConf string |
如果此值设置为空字符串,则会覆盖 DNS 解析的默认配置, 本质上相当于禁用了 DNS 查询。 默认值:"/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 |
注意:kubelet 不支持挂接 CSI 卷和解除挂接, 因此对于该用例,此选项必须为 true。 默认值: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 和内存。更多细节可参见 https://kubernetes.io/zh-cn/docs/concepts/configuration/manage-resources-containers/ 。 默认值: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 限制值,从而增大回收压力;反之, 增大此系数会降低回收压力。更多细节参见 https://kep.k8s.io/2570。 默认值:0.8 |
registerWithTaints []core/v1.Taint |
默认值:nil |
registerNode bool |
默认值:true |
tracing TracingConfiguration | tracing 为 OpenTelemetry 追踪客户端设置版本化的配置信息。 参阅 https://kep.k8s.io/2832 了解更多细节。 |
localStorageCapacityIsolation bool | localStorageCapacityIsolation 启用本地临时存储隔离特性。默认设置为 true。 此特性允许用户为容器的临时存储设置请求/限制,并以类似的方式管理 cpu 和 memory 的请求/限制。 此特性还允许为 emptyDir 卷设置 sizeLimit,如果卷所用的磁盘超过此限制将触发 Pod 驱逐。 此特性取决于准确测定根文件系统磁盘用量的能力。对于 kind rootless 这类系统, 如果不支持此能力,则 LocalStorageCapacityIsolation 特性应被禁用。 一旦禁用,用户不应该为容器的临时存储设置请求/限制,也不应该为 emptyDir 设置 sizeLimit。 默认值:true |
SerializedNodeConfigSource
SerializedNodeConfigSource 允许对 v1.NodeConfigSource
执行序列化操作。
这一类型供 kubelet 内部使用,以便跟踪动态配置的检查点。
此资源存在于 kubeletconfig API 组是因为它被当做是对 kubelet 的一种版本化输入。
字段 | 描述 |
---|---|
apiVersion string | kubelet.config.k8s.io/v1beta1 |
kind string | SerializedNodeConfigSource |
source core/v1.NodeConfigSource |
|
CredentialProvider
出现在:
CredentialProvider 代表的是要被 kubelet 调用的一个 exec 插件。
这一插件只会在所拉取的镜像与该插件所处理的镜像匹配时才会被调用(参见 matchImages
)。
字段 | 描述 |
---|---|
name [必需]string |
|
matchImages [必需][]string |
对类似 'app*.k8s.io' 这类部分子域名的匹配也是支持的。 每个通配符只能用来匹配一个子域名段,所以 '*.io' 不会匹配 '*.k8s.io'。 镜像与
|
defaultCacheDuration [必需]meta/v1.Duration |
|
apiVersion [必需]string | 要求 exec 插件 CredentialProviderRequest 请求的输入版本。 所返回的 CredentialProviderResponse 必须使用与输入相同的编码版本。当前支持的值有:
|
args []string | 在执行插件可执行文件时要传递给命令的参数。 |
env []ExecEnvVar |
|
ExecEnvVar
出现在:
ExecEnvVar 用来在执行基于 exec 的凭据插件时设置环境变量。
字段 | 描述 |
---|---|
name [必需]string | 无描述 |
value [必需]string | 无描述 |
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 | [Alpha] JSON 包含记录 "json" 格式日志的选项。 只有 LoggingAlphaOptions 特性门控被启用时才可用。 |
JSONOptions
出现在:
JSONOptions 包含为 "json" 日志格式提供的选项。
字段 | 描述 |
---|---|
splitStream [必需]bool | [Alpha] |
infoBufferSize [必需]k8s.io/apimachinery/pkg/api/resource.QuantityValue | [Alpha] |
LogFormatFactory
LogFormatFactory 提供了对某些附加的、非默认的日志格式的支持。
LoggingConfiguration
出现在:
LoggingConfiguration 包含日志选项。
字段 | 描述 |
---|---|
format [必需]string |
|
flushFrequency [必需]time.Duration | 对日志进行清洗的最大间隔纳秒数(例如,1s = 1000000000)。 如果所选的日志后端在写入日志消息时不提供缓存,则此配置会被忽略。 |
verbosity [必需]VerbosityLevel |
|
vmodule [必需]VModuleConfiguration |
|
options [必需]FormatOptions | [Alpha] |
TracingConfiguration
出现在:
TracingConfiguration 为 OpenTelemetry 追踪客户端提供版本化的配置信息。
字段 | 描述 |
---|---|
endpoint string | 采集器的 endpoint,此组件将向其报告追踪链路。 此连接不安全,目前不支持 TLS。推荐不设置,endpoint 是 otlp grpc 默认值,localhost:4317。 |
samplingRatePerMillion int32 | samplingRatePerMillion 是每百万 span 要采集的样本数。推荐不设置。 如果不设置,则采样器优先使用其父级 span 的采样率,否则不采样。 |
VModuleConfiguration
([]k8s.io/component-base/logs/api/v1.VModuleItem
的别名)
出现在:
VModuleConfiguration 是一个集合,其中包含一个个文件名(或文件名模式) 及其对应的详细程度阈值。
VerbosityLevel
(uint32
的别名)
出现在:
VerbosityLevel 表示 klog 或 logr 的详细程度(verbosity)阈值。
18 - WebhookAdmission 配置 (v1)
此 API 的版本是 v1。
资源类型
WebhookAdmission
WebhookAdmission 为 Webhook 准入控制器提供配置信息。
字段 | 描述 |
---|---|
apiVersion string | apiserver.config.k8s.io/v1 |
kind string | WebhookAdmission |
kubeConfigFile [必需]string | 字段 kubeConfigFile 包含指向 kubeconfig 文件的路径。 |
19 - 客户端身份认证(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 | 此字段用来设置向集群发送所有请求时要使用的代理服务器。 |
disable-compression bool | disable-compression 允许客户端针对到服务器的所有请求选择取消响应压缩。 当客户端服务器网络带宽充足时,这有助于通过节省压缩(服务器端)和解压缩(客户端)时间来加快请求(特别是列表)的速度: https://github.com/kubernetes/kubernetes/issues/112296。 |
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 编码的私钥。 |
20 - 客户端身份认证(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 | 此字段用来设置向集群发送所有请求时要使用的代理服务器。 |
disable-compression bool | disable-compression 允许客户端针对到服务器的所有请求选择取消响应压缩。 当客户端服务器网络带宽充足时,这有助于通过节省压缩(服务器端)和解压缩(客户端)时间来加快请求(特别是列表)的速度: https://github.com/kubernetes/kubernetes/issues/112296。 |
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 编码的私钥。 |