配置 API
- 1: Event Rate Limit Configuration (v1alpha1)
- 2: Image Policy API (v1alpha1)
- 3: kube 配置 (v1)
- 4: kube-apiserver Admission (v1)
- 5: kube-apiserver Audit 配置 (v1)
- 6: kube-apiserver 加密配置(v1)
- 7: kube-apiserver 配置 (v1)
- 8: kube-apiserver 配置 (v1alpha1)
- 9: kube-apiserver 配置 (v1beta1)
- 10: kube-proxy 配置 (v1alpha1)
- 11: kube-scheduler 配置 (v1)
- 12: kubeadm 配置 (v1beta3)
- 13: kubeadm 配置 (v1beta4)
- 14: Kubelet CredentialProvider (v1)
- 15: Kubelet 配置 (v1)
- 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 配置 (v1)
资源类型
Config
Config 保存以给定用户身份构建连接到远程 Kubernetes 集群所需的信息
字段 | 描述 |
---|---|
apiVersion string | /v1 |
kind string | Config |
kind string
|
来自 pkg/api/types.go TypeMeta 的遗留字段。 |
apiVersion string
|
来自 pkg/api/types.go TypeMeta 的遗留字段。 |
preferences [必需]Preferences
|
|
clusters [必需][]NamedCluster
|
|
users [必需][]NamedAuthInfo
|
|
contexts [必需][]NamedContext
|
|
current-context [必需]string
|
|
extensions []NamedExtension
|
|
AuthInfo
出现在:
AuthInfo 包含描述身份信息的信息。这一信息用来告诉 kubernetes 集群你是谁。
字段 | 描述 |
---|---|
client-certificate string
|
|
client-certificate-data []byte
|
|
client-key string
|
|
client-key-data []byte
|
|
token string
|
|
tokenFile string
|
|
as string
|
|
as-uid string
|
|
as-groups []string
|
|
as-user-extra map[string][]string
|
|
username string
|
|
password string
|
|
auth-provider AuthProviderConfig
|
|
exec ExecConfig
|
|
extensions []NamedExtension
|
|
AuthProviderConfig
出现在:
AuthProviderConfig 保存特定于某认证提供机制的配置。
字段 | 描述 |
---|---|
name [必需]string
|
配置选项名称。 |
config [必需]map[string]string
|
配置选项取值映射。 |
Cluster
出现在:
Cluster 包含有关如何与 Kubernetes 集群通信的信息。
字段 | 描述 |
---|---|
server [必需]string
|
|
tls-server-name string
|
|
insecure-skip-tls-verify bool
|
|
certificate-authority string
|
|
certificate-authority-data []byte
|
|
proxy-url string
|
|
disable-compression bool
|
|
extensions []NamedExtension
|
|
Context
出现在:
Context 是一个元组,包含对集群 (我如何与某 Kubernetes 集群通信)、用户 (我如何标识自己) 和名字空间(我想要使用哪些资源子集)的引用。
字段 | 描述 |
---|---|
cluster [必需]string
|
|
user [必需]string
|
|
namespace string
|
|
extensions []NamedExtension
|
|
ExecConfig
出现在:
ExecConfig
指定提供客户端凭证的命令。这个命令被执行(以 exec 方式)
并输出结构化的标准输出(stdout
),其中包含了凭据。
查看 client.authentication.k8s.io
API
组以获取输入和输出的确切格式规范。
字段 | 描述 |
---|---|
command [必需]string
|
command 是要执行的命令。 |
args []string
|
|
env []ExecEnvVar
|
|
apiVersion [必需]string
|
|
installHint [必需]string
|
当似乎找不到可执行文件时,将向用户显示此文本。
例如,对于在 Mac OS 系统上安装 |
provideClusterInfo [必需]bool
|
|
interactiveMode ExecInteractiveMode
|
查看 如果 |
ExecEnvVar
出现在:
ExecEnvVar
用于在执行基于 exec
的凭据插件时要设置的环境变量。
字段 | 描述 |
---|---|
name [必需] string
|
环境变量名称。 |
value [必需]
string
|
环境变量取值。 |
ExecInteractiveMode
(string
的别名)
出现在:
ExecInteractiveMode 是一个描述 exec 插件与标准输入间关系的字符串。
NamedAuthInfo
出现在:
NamedAuthInfo
将昵称与身份认证信息关联起来。
字段 | 描述 |
---|---|
name [必需]
string
|
|
user [必需]AuthInfo
|
|
NamedCluster
出现在:
NamedCluster
将昵称与集群信息关联起来。
字段 | 描述 |
---|---|
name [必需]string
|
|
cluster [必需] Cluster
|
|
NamedContext
出现在:
NamedContext
将昵称与上下文信息关联起来。
字段 | 描述 |
---|---|
name [必需]string
|
|
context [必需] Context
|
|
NamedExtension
出现在:
NamedExtension 将昵称与扩展信息关联起来。
字段 | 描述 |
---|---|
name [必需]string
|
|
extension [必需]k8s.io/apimachinery/pkg/runtime.RawExtension
|
|
Preferences
出现在:
字段 | 描述 |
---|---|
colors bool
|
是否采用彩色字符编码。 |
extensions []NamedExtension
|
|
4 - kube-apiserver Admission (v1)
资源类型
AdmissionReview
AdmissionReview
描述准入评审请求/响应。
字段 | 描述 |
---|---|
apiVersion string | admission.k8s.io/v1 |
kind string | AdmissionReview |
request AdmissionRequest
|
|
response AdmissionResponse
|
|
AdmissionRequest
出现在:
AdmissionRequest
描述准入请求的 admission.Attributes。
字段 | 描述 |
---|---|
uid [必需]k8s.io/apimachinery/pkg/types.UID
|
|
kind [必需]meta/v1.GroupVersionKind
|
|
resource [必需]meta/v1.GroupVersionResource
|
|
subResource string
|
|
requestKind meta/v1.GroupVersionKind
|
例如,如果 Deployment 可以通过 apps/v1 和 apps/v1beta1 进行修改,并且 Webhook 注册了
参阅文档了解 Webhook 配置类型中 "matchPolicy" 字段的更多细节。 |
requestResource meta/v1.GroupVersionResource
|
例如,如果 Deployment 可以通过 apps/v1 和 apps/v1beta1 修改,并且 Webhook 注册了
参阅文档了解 Webhook 配置类型中 "matchPolicy" 字段的更多细节。 |
requestSubResource string
|
|
name string
|
|
namespace string
|
|
operation [必需]Operation
|
|
userInfo [必需]authentication/v1.UserInfo
|
|
object k8s.io/apimachinery/pkg/runtime.RawExtension
|
|
oldObject k8s.io/apimachinery/pkg/runtime.RawExtension
|
|
dryRun bool
|
|
options k8s.io/apimachinery/pkg/runtime.RawExtension
|
|
AdmissionResponse
出现在:
AdmissionResponse
描述准入响应。
字段 | 描述 |
---|---|
uid [必需]k8s.io/apimachinery/pkg/types.UID
|
|
allowed [必需]bool
|
|
status meta/v1.Status
|
|
patch []byte
|
|
patchType PatchType
|
|
auditAnnotations map[string]string
|
|
warnings []string
|
|
Operation
(string
的别名)
出现在:
Operation
是正在检查准入控制时资源操作的类型。
PatchType
(string
的别名)
出现在:
PatchType
是用于表示所变更对象的补丁类型。
5 - 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 格式呈现。responseObject 是在被转换为外部类型 并序列化为 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 中的条目不会彼此重叠。 空的列表意味着规则适用于该 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 定义在请求处理过程中可以生成审计事件的阶段。
6 - kube-apiserver 加密配置(v1)
包 v1 是 API 的 v1 版本。
资源类型
EncryptionConfiguration
EncryptionConfiguration 为加密驱动保存完整的配置信息。
它还允许使用通配符指定应加密的资源。
使用 *.<group>
加密组内的所有资源,或使用 *.*
加密所有资源。
*.
可用于加密核心组内的所有资源。
*.*
将加密所有资源,甚至是 API 服务器启动后添加的自定义资源。
不允许在同一资源列表内或跨多个条目中使用重叠的通配符,因为部分配置将无效。
按顺序处理资源列表,列在前面的被优先处理。
例如:
kind: EncryptionConfiguration
apiVersion: apiserver.config.k8s.io/v1
resources:
- resources:
- events
providers:
- identity: {} # do not encrypt events even though *.* is specified below
- resources:
- secrets
- configmaps
- pandas.awesome.bears.example
providers:
- aescbc:
keys:
- name: key1
secret: c2VjcmV0IGlzIHNlY3VyZQ==
- resources:
- '*.apps'
providers:
- aescbc:
keys:
- name: key2
secret: c2VjcmV0IGlzIHNlY3VyZSwgb3IgaXMgaXQ/Cg==
- resources:
- '*.*'
providers:
- aescbc:
keys:
- name: key3
secret: c2VjcmV0IGlzIHNlY3VyZSwgSSB0aGluaw==
字段 | 描述 |
---|---|
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
|
|
7 - 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
|
|
8 - kube-apiserver 配置 (v1alpha1)
包 v1alpha1 包含 API 的 v1alpha1 版本。
资源类型
TracingConfiguration
出现在:
TracingConfiguration 为 OpenTelemetry 跟踪客户端提供了不同版本的配置。
字段 | 描述 |
---|---|
endpoint string
|
采集器的端点,此组件将向其报告跟踪信息。 连接不安全,目前不支持 TLS。 推荐不设置,端点为 otlp grpc 默认值 localhost:4317。 |
samplingRatePerMillion int32
|
SamplingRatePerMillion 是每百万 span 中采集的样本数。 推荐不设置。如果不设置,采集器将继承其父级 span 的采样率,否则不进行采样。 |
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 |
TracingConfiguration [必需]TracingConfiguration
|
(TracingConfiguration 的成员嵌入到这种类型中。)
嵌入组件配置中的跟踪配置结构体。 |
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
|
|
9 - kube-apiserver 配置 (v1beta1)
v1beta1 包是 v1beta1 版本的 API。
资源类型
EgressSelectorConfiguration
EgressSelectorConfiguration 为 Egress 选择算符客户端提供版本化的配置选项。
字段 | 描述 |
---|---|
apiVersion string | apiserver.k8s.io/v1beta1 |
kind string | EgressSelectorConfiguration |
egressSelections [必需][]EgressSelection
|
connectionServices 包含一组 Egress 选择算符客户端配置选项。 |
TracingConfiguration
出现在:
TracingConfiguration 为 OpenTelemetry 跟踪客户端提供版本化的配置。
字段 | 描述 |
---|---|
endpoint string
|
采集器的端点,此组件将向其报告跟踪信息。 连接不安全,目前不支持 TLS。 推荐不设置,端点为 otlp grpc 默认值 localhost:4317。 |
samplingRatePerMillion int32
|
samplingRatePerMillion 是每百万 span 中采集的样本数。 推荐不设置。如果不设置,采集器将继承其父级 span 的采样率,否则不进行采样。 |
TracingConfiguration
TracingConfiguration 为跟踪客户端提供版本化的配置信息。
字段 | 描述 |
---|---|
apiVersion string | apiserver.k8s.io/v1beta1 |
kind string | TracingConfiguration |
TracingConfiguration [必需]TracingConfiguration
|
(TracingConfiguration 的成员嵌入到这种类型中。)
嵌入组件配置中的跟踪配置结构体。 |
Connection
出现在:
Connection 提供某个 Egress 选择客户端的配置信息。
字段 | 描述 |
---|---|
proxyProtocol [必需]ProtocolType
|
proxyProtocol 是客户端连接到 konnectivity 服务器所使用的协议。 |
transport Transport
|
transport 定义的是传输层的配置。我们使用这个配置来联系 konnectivity 服务器。 当 proxyProtocol 是 HTTPConnect 或 GRPC 时需要设置此字段。 |
EgressSelection
出现在:
EgressSelection 为某个 Egress 选择客户端提供配置信息。
字段 | 描述 |
---|---|
name [必需]string
|
name 是 Egress 选择算符的名称。当前支持的取值有 "controlplane", "master","etcd" 和 "cluster"。 "master" Egress 选择算符已被弃用,推荐使用 "controlplane"。 |
connection [必需]Connection
|
connection 是用来配置 Egress 选择算符的配置信息。 |
ProtocolType
(string
类型的别名)
出现在:
ProtocolType 是 connection.protocolType 的合法值集合。
TCPTransport
出现在:
TCPTransport 提供使用 TCP 连接 konnectivity 服务器时需要的信息。
字段 | 描述 |
---|---|
url [必需]string
|
url 是要连接的 konnectivity 服务器的位置。例如 "https://127.0.0.1:8131"。 |
tlsConfig TLSConfig
|
tlsConfig 是使用 TLS 来连接 konnectivity 服务器时需要的信息。 |
TLSConfig
出现在:
TLSConfig 为连接 konnectivity 服务器提供身份认证信息。仅用于 TCPTransport。
字段 | 描述 |
---|---|
caBundle string
|
caBundle 是指向用来确定与 konnectivity 服务器间信任关系的 CA 证书包的文件位置。 如果 TCPTransport.URL 前缀为 "http://" 时必须不设置,或者设置为空。 如果 TCPTransport.URL 前缀为 "https://" 并且此字段未设置,则默认使用系统的信任根。 |
clientKey string
|
clientKey 是与 konnectivity 服务器进行 mtls 握手时使用的客户端秘钥文件位置。 如果 TCPTransport.URL 前缀为 http://,必须不指定或者为空; 如果 TCPTransport.URL 前缀为 https://,必须设置。 |
clientCert string
|
|
Transport
出现在:
Transport 定义联系 konnectivity 服务器时要使用的传输层配置。
字段 | 描述 |
---|---|
tcp TCPTransport
|
tcp 包含通过 TCP 与 konnectivity 服务器通信时使用的 TCP 配置。 目前使用 TCP 传输时不支持 GRPC 的 proxyProtocol。 tcp 和 uds 二者至少设置一个。 |
uds UDSTransport
|
uds 包含通过 UDS 与 konnectivity 服务器通信时使用的 UDS 配置。 tcp 和 uds 二者至少设置一个。 |
UDSTransport
出现在:
UDSTransport 设置通过 UDS 连接 konnectivity 服务器时需要的信息。
字段 | 描述 |
---|---|
udsName [必需]string
|
udsName 是与 konnectivity 服务器连接时使用的 UNIX 域套接字名称。 字段取值不要求包含 unix:// 前缀。 (例如:/etc/srv/kubernetes/konnectivity-server/konnectivity-server.socket) |
10 - kube-proxy 配置 (v1alpha1)
资源类型
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
|
|
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
|
|
logging [必需]LoggingConfiguration
|
|
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 将出错并退出。
11 - kube-scheduler 配置 (v1)
资源类型
- DefaultPreemptionArgs
- InterPodAffinityArgs
- KubeSchedulerConfiguration
- NodeAffinityArgs
- NodeResourcesBalancedAllocationArgs
- NodeResourcesFitArgs
- PodTopologySpreadArgs
- VolumeBindingArgs
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
|
|
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
|
|
ignorePreferredTermsOfExistingPods [必需]bool
|
ignorePreferredTermsOfExistingPods 配置调度器在为候选节点评分时忽略现有 Pod 的优选亲和性规则, 除非传入的 Pod 具有 Pod 间的亲和性。 |
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
|
|
delayCacheUntilActive [Required]bool
|
DelayCacheUntilActive 指定何时开始缓存。如果字段设置为 true 并且启用了领导者选举, 则调度程序将等待填充通知者缓存,直到它成为领导者,这样做会减慢故障转移速度, 并在等待成为领导者时降低内存开销。 默认为 false。 |
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
|
|
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: bind-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 - kubeadm 配置 (v1beta4)
概述
v1beta4 包定义 v1beta4 版本的 kubeadm 配置文件格式。 此版本改进了 v1beta3 的格式,修复了一些小问题并添加了一些新的字段。
从 v1beta3 版本以来的变更列表:
- TODO https://github.com/kubernetes/kubeadm/issues/2890
- 使用
APIServer.ExtraEnvs
、ControllerManager.ExtraEnvs
、Scheduler.ExtraEnvs
、Etcd.Local.ExtraEnvs
。 支持在ClusterConfiguration
下控制平面组件中的定制环境变量。 ResetConfiguration
API 类型在 v1beta4 中已得到支持。 用户可以为kubeadm reset
指定--config
文件来重置节点。
kubeadm 配置版本迁移
- kubeadm v1.15.x 及更高版本可用于从 v1beta1 迁移到 v1beta2。
- kubeadm v1.22.x 及更高版本不再支持 v1beta1 和更早的 API,但可用于从 v1beta2 迁移到 v1beta3。
- kubeadm v1.27.x 及更高版本不再支持 v1beta2 和更早的 API。
- TODO: https://github.com/kubernetes/kubeadm/issues/2890 添加可用于转换到 v1beta4 的版本
基础知识
配置 kubeadm 的推荐方式是使用 --config
选项向其传递一个 YAML 配置文件。
kubeadm 配置文件中定义的某些配置选项也可以作为命令行标志来使用,
不过这种方法所支持的都是一些最常见的、最简单的使用场景。
一个 kubeadm 配置文件中可以包含多个配置类型,使用三根横线(---
)作为分隔符。
kubeadm 支持以下配置类型:
apiVersion: kubeadm.k8s.io/v1beta4
kind: InitConfiguration
apiVersion: kubeadm.k8s.io/v1beta4
kind: ClusterConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
apiVersion: kubeadm.k8s.io/v1beta4
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/v1beta4 kind: InitConfiguration bootstrapTokens: ... nodeRegistration: ...
InitConfiguration 类型用来配置运行时设置,就 kubeadm init 命令而言, 包括启动引导令牌以及所有与 kubeadm 所在节点相关的设置,包括:
- nodeRegistration:其中包含与向集群注册新节点相关的字段; 使用这个类型来定制节点名称、要使用的 CRI 套接字或者其他仅对当前节点起作用的设置(例如节点 IP 地址)。
- localAPIEndpoint:代表的是要部署到此节点上的 API 服务器实例的端点; 使用这个类型可以完成定制 API 服务器公告地址这类操作。
apiVersion: kubeadm.k8s.io/v1beta4 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://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-cn/docs/reference/command-line-tools-reference/kubelet/ 或者 https://pkg.go.dev/k8s.io/kubelet/config/v1beta1#KubeletConfiguration。
下面是一个为执行 kubeadm init
而提供的、包含多个配置类型的单一 YAML 文件,
其中填充了很多部分。
apiVersion: kubeadm.k8s.io/v1beta4 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: "unix:///var/run/containerd/containerd.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/v1beta4 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/v1beta4 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
|
令牌的 ID。 |
- [必需]string
|
令牌的私密数据。 |
ClusterConfiguration
ClusterConfiguration 包含一个 kubeadm 集群的集群范围配置信息。
字段 | 描述 |
---|---|
apiVersion string | kubeadm.k8s.io/v1beta4 |
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" 的运行时元素。
字段 | 描述 |
---|---|
apiVersion string | kubeadm.k8s.io/v1beta4 |
kind string | InitConfiguration |
bootstrapTokens []BootstrapToken
|
|
nodeRegistration NodeRegistrationOptions
|
|
localAPIEndpoint APIEndpoint
|
|
certificateKey string
|
|
skipPhases []string
|
|
patches Patches
|
|
JoinConfiguration
JoinConfiguration 包含描述特定节点的元素。
字段 | 描述 |
---|---|
apiVersion string | kubeadm.k8s.io/v1beta4 |
kind string | JoinConfiguration |
nodeRegistration NodeRegistrationOptions
|
|
caCertPath string
|
|
discovery [必需]Discovery
|
|
controlPlane JoinControlPlane
|
|
skipPhases []string
|
|
patches Patches
|
此字段包含 |
ResetConfiguration
ResetConfiguration
包含一个字段列表,这些字段是特定于 "kubeadm reset" 的运行时元素。
字段 | 描述 |
---|---|
apiVersion string | kubeadm.k8s.io/v1beta4 |
kind string | ResetConfiguration |
cleanupTmpDir bool
|
|
certificatesDir string
|
|
criSocket string
|
|
dryRun bool
|
|
force bool
|
|
ignorePreflightErrors []string
|
|
skipPhases []string
|
|
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
|
|
extraEnvs []core/v1.EnvVar
|
|
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
|
|
extraEnvs []core/v1.EnvVar
|
|
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
|
|
14 - 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 支持类似 当满足以下所有条件时,kubelet 将根据主键来匹配镜像:
当返回多个主键时,kubelet 将以相反的顺序遍历所有主键,以便:
对于任一给定的匹配项,kubelet 将尝试用提供的凭据拉取镜像,并在第一次成功通过身份验证的拉取之后停止。 示例键:
|
AuthConfig
出现在:
AuthConfig 包含针对容器镜像仓库的身份验证信息。 目前仅支持基于用户名/密码的身份验证,但未来可能添加更多的身份验证机制。
字段 | 描述 |
---|---|
username [必需]string
|
username 是对容器镜像仓库身份验证所用的用户名。 空白用户名是有效的。 |
password [必需]string
|
password 是对容器镜像仓库身份验证所用的密码。 空白密码是有效的。 |
PluginCacheKeyType
(string
的别名)
出现在:
15 - Kubelet 配置 (v1)
资源类型
CredentialProviderConfig
CredentialProviderConfig 包含有关每个 exec 凭据提供程序的配置信息。 Kubelet 从磁盘上读取这些配置信息,并根据 CredentialProvider 类型启用各个提供程序。
字段 | 描述 |
---|---|
apiVersion string | kubelet.config.k8s.io/v1 |
kind string | CredentialProviderConfig |
providers [必需][]CredentialProvider
|
|
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
|
环境变量取值 |
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)
资源类型
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 [必需]TimeOrMetaDuration
|
日志清洗之间的最大时间间隔。 如果是字符串,则解析为持续时间(例如 "1s")。 如果是整数,则表示为最大纳秒数(例如 1s = 1000000000)。 如果所选的日志后端在写入日志消息时未缓冲,则被忽略。 |
verbosity [必需]VerbosityLevel
|
|
vmodule [必需]VModuleConfiguration
|
|
options [必需]FormatOptions
|
[Alpha] |
LoggingOptions
LoggingOptions
可以与 ValidateAndApplyWithOptions
一起使用,以覆盖某些全局默认值。
字段 | 描述 |
---|---|
ErrorStream [必需]io.Writer
|
|
InfoStream [必需]io.Writer
|
|
TimeOrMetaDuration
出现在:
TimeOrMetaDuration
仅出于向后兼容 flushFrequency
字段而存在,
新字段应使用
metav1.Duration
。
字段 | 描述 |
---|---|
Duration [必需]meta/v1.Duration
|
|
- [必需]bool
|
|
TracingConfiguration
出现在:
TracingConfiguration 为 OpenTelemetry 追踪客户端提供版本化的配置信息。
字段 | 描述 |
---|---|
endpoint string
|
采集器的端点,此组件将向其报告追踪链路。 此连接不安全,目前不支持 TLS。推荐不设置,端点是 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)阈值。
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
|
默认值:50 |
eventBurst int32
|
默认值:100 |
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
|
|
memoryManagerPolicy string
|
默认值:"none" |
topologyManagerPolicy string
|
默认值:"none" |
topologyManagerScope string
|
默认值:"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
|
默认值:50 |
kubeAPIBurst int32
|
默认值:100 |
serializeImagePulls bool
|
默认值:true |
maxParallelImagePulls int32
|
maxParallelImagePulls 设置并行拉取镜像的最大数量。 如果 serializeImagePulls 为 true,则无法设置此字段。 把它设置为 nil 意味着没有限制。 默认值: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
|
已弃用:不再有任何效果。 默认值: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 |
enableSystemLogQuery bool
|
默认值:false |
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 |
containerRuntimeEndpoint [必需]string
|
containerRuntimeEndpoint 是容器运行时的端点。 Linux 支持 UNIX 域套接字,而 Windows 支持命名管道和 TCP 端点。 示例:'unix:///path/to/runtime.sock', 'npipe:////./pipe/runtime'。 |
imageServiceEndpoint string
|
imageServiceEndpoint 是容器镜像服务的端点。 Linux 支持 UNIX 域套接字,而 Windows 支持命名管道和 TCP 端点。 示例:'unix:///path/to/runtime.sock'、'npipe:////./pipe/runtime'。 如果未指定,则使用 containerRuntimeEndpoint 中的值。 |
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
|
对类似 镜像与
|
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 给出的是内部管理器(Secret、ConfigMap) 用来发现对象变化的模式。
ShutdownGracePeriodByPodPriority
出现在:
ShutdownGracePeriodByPodPriority 基于 Pod 关联的优先级类数值来为其设置关闭宽限时间。
字段 | 描述 |
---|---|
priority [必需]int32
|
|
shutdownGracePeriodSeconds [必需]int64
|
|
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 编码的私钥。 |