配置 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 配置 (v1alpha1)
- 8: kube-apiserver 配置 (v1beta1)
- 9: kube-controller-manager Configuration (v1alpha1)
- 10: kube-proxy 配置 (v1alpha1)
- 11: kube-scheduler 配置 (v1)
- 12: kubeadm 配置 (v1beta4)
- 13: kubeadm 配置(v1beta3)
- 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 |
|
omitStages []Stage | 字段 omitStages 是一个阶段(Stage)列表,针对所列的阶段服务器不会生成审计事件。 注意这一选项也可以在策略(Policy)级别指定。服务器审计组件会忽略 omitStages 中给出的阶段,也会忽略策略中给出的阶段。 空列表意味着不对阶段作任何限制。 |
omitManagedFields bool |
|
Stage
string
数据类型的别名。
出现在:
Stage 定义在请求处理过程中可以生成审计事件的阶段。
6 - kube-apiserver 配置 (v1)
v1 包中包含 API 的 v1 版本。
资源类型
AdmissionConfiguration
AdmissionConfiguration 为准入控制器提供版本化的配置。
字段 | 描述 |
---|---|
apiVersion string | apiserver.config.k8s.io/v1 |
kind string | AdmissionConfiguration |
plugins []AdmissionPluginConfiguration |
|
EncryptionConfiguration
EncryptionConfiguration 存储加密驱动的完整配置。它还允许使用通配符来指定应该被加密的资源。 使用 “*.<group>” 以加密组内的所有资源,或使用 “*.*” 以加密所有资源。 “*.” 可用于加密核心组中的所有资源。“*.*” 将加密所有资源,包括在 API 服务器启动后添加的自定义资源。 由于部分配置可能无效,所以不允许在同一资源列表中或跨多个条目使用重叠的通配符。 资源列表被按顺序处理,会优先处理较早的列表。
示例:
kind: EncryptionConfiguration
apiVersion: apiserver.config.k8s.io/v1
resources:
- resources:
- events
providers:
- identity: {} # 即使以下 *.* 被指定,也不会对事件加密
- 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 | resources 是一个包含资源及其对应加密驱动的列表。 |
AESConfiguration
出现在:
AESConfiguration 包含针对 AES 转换器的 API 配置。
字段 | 描述 |
---|---|
keys [必需][]Key | keys 是一个用于创建 AES 转换器的密钥列表。 对于 AES-CBC,每个密钥的长度必须是 32 字节; 对于 AES-GCM,每个密钥的长度可以是 16、24 或 32 字节。 |
AdmissionPluginConfiguration
出现在:
AdmissionPluginConfiguration 为某个插件提供配置信息。
字段 | 描述 |
---|---|
name [必需]string |
|
path string |
|
configuration k8s.io/apimachinery/pkg/runtime.Unknown |
|
IdentityConfiguration
出现在:
IdentityConfiguration 是一个空结构体,允许在驱动配置中使用身份转换器。
KMSConfiguration
出现在:
KMSConfiguration 包含 KMS 型信封转换器所用的配置文件的名称、缓存大小和路径。
字段 | 描述 |
---|---|
apiVersion string | KeyManagementService 的 apiVersion |
name [必需]string | name 是要使用的 KMS 插件的名称。 |
cachesize int32 | cachesize 是内存中缓存的最大 Secret 数量。默认值为 1000。 设置为负值将禁用缓存。此字段仅允许用于 KMS v1 驱动。 |
endpoint [必需]string | endpoint 是 gRPC 服务器的监听地址,例如 "unix:///var/run/kms-provider.sock"。 |
timeout meta/v1.Duration | timeout 是 gRPC 调用到 KMS 插件的超时时间(例如 5s)。默认值为 3 秒。 |
Key
出现在:
Key 包含为转换器所提供的密钥的名称和 Secret。
字段 | 描述 |
---|---|
name [必需]string | name 是在将数据存储到磁盘时所使用的密钥名称。 |
secret [必需]string | secret 是实际的密钥,以 base64 编码。 |
ProviderConfiguration
出现在:
ProviderConfiguration 存储为加密驱动提供的配置。
字段 | 描述 |
---|---|
aesgcm [必需]AESConfiguration | aesgcm 是 AES-GCM 转换器的配置。 |
aescbc [必需]AESConfiguration | aescbc 是 AES-CBC 转换器的配置。 |
secretbox [必需]SecretboxConfiguration | secretbox 是基于 Secretbox 的转换器的配置。 |
identity [必需]IdentityConfiguration | identity 是身份转换器的(空)配置。 |
kms [必需]KMSConfiguration | kms 包含 KMS 型信封转换器所用的配置文件的名称、缓存大小和路径。 |
ResourceConfiguration
出现在:
ResourceConfiguration 存储每个资源的配置。
字段 | 描述 |
---|---|
resources [必需][]string | resources 是一个需要加密的 Kubernetes 资源列表。
资源名称来源于组/版本/资源的 “ |
providers [必需][]ProviderConfiguration | providers 是从磁盘读取资源和写入资源到磁盘要使用的转换器的列表。 例如:aesgcm、aescbc、secretbox、identity、kms。 |
SecretboxConfiguration
出现在:
SecretboxConfiguration 包含 Secretbox 转换器的 API 配置。
字段 | 描述 |
---|---|
keys [必需][]Key | keys 是一个用于创建 Secretbox 转换器的密钥列表。每个密钥的长度必须为 32 字节。 |
7 - kube-apiserver 配置 (v1alpha1)
包 v1alpha1 包含 API 的 v1alpha1 版本。
资源类型
- AdmissionConfiguration
- AuthenticationConfiguration
- AuthorizationConfiguration
- EgressSelectorConfiguration
- TracingConfiguration
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 |
|
AuthenticationConfiguration
AuthenticationConfiguration 为身份认证提供版本化的配置。
字段 | 描述 |
---|---|
apiVersion string | apiserver.k8s.io/v1alpha1 |
kind string | AuthenticationConfiguration |
jwt [必需][]JWTAuthenticator | jwt 是一个身份认证器列表,用于对使用符合 JWT 的令牌的 Kubernetes 用户进行身份认证。 身份认证器将尝试解析原始 ID 令牌,验证其是否由配置的发放者签名。用于验证签名的公钥是通过 OIDC 发现从颁发者的公开端点获取的。对于传入的令牌,将按照此列表中指定的顺序尝试每个 JWT 身份认证器。但是请注意,其他身份认证器可能会在 JWT 身份认证器之前或之后运行。JWT 身份认证器相对于其他身份认证器的具体位置在不同版本中既未定义也不稳定。由于每个 JWT 身份认证器必须具有唯一的颁发者 URL,因此最多只有一个 JWT 身份认证器会尝试基于密码学方法对对令牌进行合法性检查。 最小有效 JWT 负载必须包含以下声明: { "iss": "https://issuer.example.com", "aud": ["audience"], "exp": 1234567890, "<username claim>": "username" } |
anonymous [必需]AnonymousAuthConfig | 如果设置了此字段,则不得设置 |
AuthorizationConfiguration
字段 | 描述 |
---|---|
apiVersion string | apiserver.k8s.io/v1alpha1 |
kind string | AuthorizationConfiguration |
authorizers [必需][]AuthorizerConfiguration | authorizers 是一个有序的鉴权器列表,用于对请求进行鉴权。
这类似于 kube-apiserver |
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 |
|
AnonymousAuthCondition
出现在:
AnonymousAuthCondition 描述了应启用匿名身份认证的条件。
字段 | 描述 |
---|---|
path [必需]string | 启用匿名身份认证的路径。 |
AnonymousAuthConfig
出现在:
AnonymousAuthConfig 为匿名身份认证器提供配置信息。
字段 | 描述 |
---|---|
enabled [必需]bool | |
conditions [必需][]AnonymousAuthCondition | 如果设置,只有在请求满足其中一个条件时才允许匿名身份认证。 |
AudienceMatchPolicyType
(string
类型的别名)
出现在:
AudienceMatchPolicyType 是 issuer.audienceMatchPolicy 合法值的集合
AuthorizerConfiguration
出现在:
字段 | 描述 |
---|---|
type [必需]string | type 指的是鉴权器的类型。 通用 API 服务器支持 "Webhook"。 其他 API 服务器可能支持其他授权者类型,如 Node、RBAC、ABAC 等。 |
name [必需]string | name 是用于描述 webhook 的名称。
此字段专为监控机制中的指标提供。
注意:name 值必须是 DNS1123 标签,如 |
webhook [必需]WebhookConfiguration | webhook 定义 Webhook 鉴权器的配置。 当 type=Webhook 时必须定义。 当 type!=Webhook 时不得定义。 |
ClaimMappings
出现在:
ClaimMappings 为声明映射提供配置信息
字段 | 描述 |
---|---|
username [必需]PrefixedClaimOrExpression | username 表示用户名属性的一个选项。
声明的值必须是单一字符串。
与 在基于标志的方法中,--oidc-username-claim 和 --oidc-username-prefix 是可选的。如果未设置 --oidc-username-claim,默认值为 "sub"。 对于身份认证配置,声明或前缀都没有默认值。声明和前缀必须显式设置。 对于声明,如果在传统标志方法中未设置 --oidc-username-claim, 请在身份认证配置中配置 username.claim="sub"。 对于前缀: (1) --oidc-username-prefix="-", 未添加前缀到用户名。要实现相同的行为,请在身份认证配置中设置 username.prefix="" (2) --oidc-username-prefix="" 并且 --oidc-username-claim != "email", 前缀为 "<--oidc-issuer-url 的值>#"。要实现相同的行为,请在身份认证配置中设置 username.prefix="<issuer.url 的值>#"。 (3) --oidc-username-prefix="<value>"。要实现相同的行为,请在身份认证配置中设置 username.prefix="<value>"。 |
groups PrefixedClaimOrExpression | groups 表示 groups 属性的一个选项。 其中 claim 字段的值必须是字符串或字符串数组。 如果设置了 groups.claim,则必须指定 prefix 字段(可以是空字符串)。 如果设置了 groups.expression,则该表达式必须生成一个字符串或字符串数组值。 ""、[] 和 null 值被视为不存在组映射。 |
uid ClaimOrExpression | uid 表示 uid 属性的一个选项。 其中的 claim 字段必须是一个字符串。 如果设置了 uid.expression,则该表达式必须生成一个字符串值。 |
extra []ExtraMapping | extra 表示 extra 属性的一个选项。 expression 必须生成一个字符串或字符串数组值。 如果值为空,则不会存在 extra 映射。 硬编码的额外 key/value - key: "foo" valueExpression: "'bar'"这将导致一个额外的属性 - foo: ["bar"] 硬编码 key,value 从声明的值复制 - key: "foo" valueExpression: "claims.some_claim" 结果会是一个 extra 属性 - foo: [some_claim 的值] 硬编码 key,value 从声明的值派生 - key: "admin" valueExpression: '(has(claims.is_admin) && claims.is_admin) ? "true":""' 这将导致:
|
ClaimOrExpression
出现在:
ClaimOrExpression 为单个声明或表达式提供配置信息。
字段 | 描述 |
---|---|
claim string | claim 是要使用的 JWT 声明。 claim 或 expression 必须设置一个。 与 expression 互斥。 |
expression string | expression 表示将由 CEL 求值的表达式。 CEL 表达式可以访问令牌声明的内容,这些内容被组织成 CEL 变量:
关于 CEL 的文档:https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ 与 claim 互斥。 |
ClaimValidationRule
出现在:
ClaimValidationRule 为单个声明验证规则提供配置信息。
字段 | 描述 |
---|---|
claim string | claim 是所需要的声明的名称。 与 --oidc-required-claim 标志相同。 仅支持用字符串声明键。 与 expression 和 message 互斥。 |
requiredValue string | requiredValue 是声明中必须包含的值。 与 --oidc-required-claim 标志相同。 仅支持用字符串声明值。 如果设置了 claim 而未设置 requiredValue,则 claim 必须存在且值必须设置为空字符串。 与 expression 和 message 互斥。 |
expression string | expression 表示将由 CEL 求值的表达式。 必须生成一个布尔值。 CEL 表达式可以访问令牌声明的内容,这些内容被组织成 CEL 变量:
关于 CEL 的文档:https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ 与 claim 和 requiredValue 互斥。 |
message string | message 自定义当 expression 返回 false 时的错误消息。 message 是一个文本字符串。 与 claim 和 requiredValue 互斥。 |
Connection
出现在:
Connection 提供某个出站选择客户端的配置信息。
字段 | 描述 |
---|---|
proxyProtocol [必需]ProtocolType |
|
transport Transport |
|
EgressSelection
出现在:
EgressSelection 为某个出站选择客户端提供配置信息。
字段 | 描述 |
---|---|
name [必需]string |
|
connection [必需]Connection |
|
ExtraMapping
出现在:
ExtraMapping 为单个 extra 映射提供配置信息。
字段 | 描述 |
---|---|
key [必需]string | key 是用作 extra 属性键的字符串。 key 必须是域前缀路径(例如 example.org/foo)。第一个 "/" 之前的所有字符必须是符合 RFC 1123 定义的有效子域名。第一个 "/" 之后的所有字符必须是符合 RFC 3986 定义的有效 HTTP 路径字符。 key 必须是小写。必须是唯一的。 |
valueExpression [必需]string | valueExpression 是一个 CEL 表达式,用于提取 extra 中的属性值。 valueExpression 必须生成一个字符串或字符串数组值。 ""、[] 和 null 值被视为不存在 extra 映射。 字符串数组中包含的空字符串值将被过滤掉。 CEL 表达式可以访问令牌声明的内容,这些内容被组织成 CEL 变量:
关于 CEL 的文档:https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ |
Issuer
出现在:
Issuer 为外部提供者的特定设置提供配置。
字段 | 描述 |
---|---|
url [必需]string | url 指向颁发者 URL,格式为 https://url 或 https://url/path。 此 URL 必须与所提供的 JWT 中的 "iss" 声明以及从发现中返回的颁发者匹配。 与 --oidc-issuer-url 标志的值相同。 除非被 discoveryURL 覆盖,否则发现信息将从 "{url}/.well-known/openid-configuration" 获取。 在所有 JWT 身份认证器中必须唯一。 请注意,此网络连接不使用出站流量选择配置。 |
discoveryURL string | discoveryURL(如果指定)会覆盖用于获取发现信息的 URL,而不是使用 "{url}/.well-known/openid-configuration"。 使用指定的确切值,因此如果需要,必须在 discoveryURL 中包含 "/.well-known/openid-configuration"。 所获取的发现信息中的 "issuer" 字段必须与 AuthenticationConfiguration 中的 "issuer.url" 字段匹配,并将用于检验所提供的 JWT 中的 "iss" 声明。 这适用于 well-known 和 jwks 端点托管在与颁发者不同的位置(例如在集群中本地托管)的场景。 示例: 发现 URL 是通过 Kubernetes 在命名空间 'oidc-namespace' 中的服务 'oidc' 公布的, 而访问 '/.well-known/openid-configuration' 可以获得发现信息。 discoveryURL: "https://oidc.oidc-namespace/.well-known/openid-configuration" certificateAuthority 用于验证 TLS 连接,叶证书上的主机名必须设置为 'oidc.oidc-namespace'。
discoveryURL 必须与 url 不同。 在所有 JWT 身份认证器中必须唯一。 请注意,此网络连接不使用出站流量选择配置。 |
certificateAuthority string | certificateAuthority 包含 PEM 编码的证书颁发机构证书, 用于在获取发现信息时验证连接。 如果未设置,则使用系统验证器。 与 --oidc-ca-file 标志引用的文件内容相同。 |
audiences [必需][]string | audiences 是 JWT 必须签发给的可接受受众集。 所提供的 JWT 中的 "aud" 声明必须至少与其中一个条目匹配。 与 --oidc-client-id 标志的值相同(尽管此字段支持数组)。 必须为非空。 |
audienceMatchPolicy AudienceMatchPolicyType | audienceMatchPolicy 定义了如何使用 "audiences" 字段来匹配所提供的 JWT 中的 "aud" 声明。 允许的值有:
对于更精细的受众验证,请使用 claimValidationRules。 示例:claimValidationRule[].expression: 'sets.equivalent(claims.aud, ["bar", "foo", "baz"])' 以要求精确匹配。 |
JWTAuthenticator
出现在:
JWTAuthenticator 为单个 JWT 身份认证器提供配置信息。
字段 | 描述 |
---|---|
issuer [必需]Issuer | issuer 包含基本的 OIDC 提供者连接选项。 |
claimValidationRules []ClaimValidationRule | claimValidationRules 是用于验证令牌声明以认证用户的规则。 |
claimMappings [必需]ClaimMappings | claimMappings 指向要视为用户属性的令牌声明。 |
userValidationRules []UserValidationRule | userValidationRules 是在完成身份认证之前应用于最终用户的规则。
这些规则允许将不变量应用于传入的身份,例如禁止使用 Kubernetes 组件常用的 |
PrefixedClaimOrExpression
出现在:
PrefixedClaimOrExpression 为单个带前缀的声明或表达式提供配置。
字段 | 描述 |
---|---|
claim string | claim 是要使用的 JWT 声明。与 expression 互斥。 |
prefix string | prefix 是添加到声明值前面的前缀,以防止与现有名称冲突。 如果设置了 claim,则需要设置 prefix,并且可以是空字符串。 与 expression 互斥。 |
expression string | expression 表示将由 CEL 评估的表达式。 CEL 表达式可以访问令牌声明的内容,这些内容被组织成 CEL 变量:
关于 CEL 的文档:https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ 与 claim 和 prefix 互斥。 |
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 |
|
UserValidationRule
出现在:
UserValidationRule 为单个用户信息验证规则提供配置信息。
字段 | 描述 |
---|---|
expression [必需]string | expression 表示将由 CEL 求值的表达式。 验证通过时必须返回 true。 CEL 表达式可以访问 UserInfo 的内容,这些内容被组织成 CEL 变量:
关于 CEL 的文档:https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ |
message string | message 自定义当规则返回 false 时的错误消息。 message 是一个文本字符串。 |
WebhookConfiguration
出现在:
字段 | 描述 |
---|---|
authorizedTTL [必需]meta/v1.Duration | 对来自 Webhook 鉴权组件的 “authorized” 响应的缓存时长。
与设置 |
unauthorizedTTL [Required]meta/v1.Duration | 对来自 Webhook 鉴权组件的 “unauthorized” 响应的缓存时长。
与设置 |
timeout [必需]meta/v1.Duration | Webhook 请求超时时间。允许的最大时间为 30 秒。 必需,没有默认值。 |
subjectAccessReviewVersion [必需]string | 要发送到 Webhook 并期望从 Webhook 获得的 authorization.k8s.io SubjectAccessReview 的 API 版本。
与设置 |
matchConditionSubjectAccessReviewVersion [必需]string | matchConditionSubjectAccessReviewVersion 指定对 CEL 表达式求值时使用的 SubjectAccessReview 版本。 有效值:v1。必需,无默认值。 |
failurePolicy [必需]string | 控制当 Webhook 请求无法完成或返回格式错误的响应或计算 matchConditions 出现错误时的鉴权决定。 有效值:
|
connectionInfo [必需]WebhookConnectionInfo | connectionInfo 定义 Webhook 如何与服务器通信。 |
matchConditions [必需][]WebhookMatchCondition | matchConditions 是将请求发送到此 Webhook 必须满足的条件列表。matchConditions 为空列表表示匹配所有请求。 最多允许 64 个匹配条件。 精确匹配逻辑如下(按顺序):
|
WebhookConnectionInfo
出现在:
字段 | 描述 |
---|---|
type [必需]string | 控制 Webhook 如何与服务器通信。有效值:
|
kubeConfigFile [必需]string | 包含连接信息的 KubeConfig 文件的路径。 如果 connectionInfo.type 是 KubeConfig,则为必需项。 |
WebhookMatchCondition
出现在:
字段 | 描述 |
---|---|
expression [必需]string | 表达式表示将由 CEL 求值的表达式。求值结果必须为布尔值。 CEL 表达式可以访问 v1 版本中的 SubjectAccessReview 的内容。 如果请求变量中 subjectAccessReviewVersion 指定的版本是 v1beta1, 在计算 CEL 表达式之前,内容将被转换为 v1 版本。
关于 CEL 文档:https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ |
8 - kube-apiserver 配置 (v1beta1)
v1beta1 包是 v1beta1 版本的 API。
资源类型
- AuthenticationConfiguration
- AuthorizationConfiguration
- EgressSelectorConfiguration
- TracingConfiguration
TracingConfiguration
出现在:
TracingConfiguration 为 OpenTelemetry 跟踪客户端提供版本化的配置。
字段 | 描述 |
---|---|
endpoint string | 采集器的端点,此组件将向其报告跟踪信息。 连接不安全,目前不支持 TLS。 推荐不设置,端点为 otlp grpc 默认值 localhost:4317。 |
samplingRatePerMillion int32 | samplingRatePerMillion 是每百万 span 中采集的样本数。 推荐不设置。如果不设置,采集器将继承其父级 span 的采样率,否则不进行采样。 |
AuthenticationConfiguration
AuthenticationConfiguration 为身份认证提供版本化的配置。
字段 | 描述 |
---|---|
apiVersion string | apiserver.k8s.io/v1beta1 |
kind string | AuthenticationConfiguration |
jwt [必需][]JWTAuthenticator | jwt 是一个身份认证器列表,用于对使用符合 JWT 的令牌的 Kubernetes 用户进行身份认证。 身份认证器将尝试解析原始 ID 令牌,验证其是否由配置的发放者签名。用于验证签名的公钥是通过 OIDC 发现从颁发者的公开端点获取的。对于传入的令牌,将按照此列表中指定的顺序尝试每个 JWT 身份认证器。但是请注意,其他身份认证器可能会在 JWT 身份认证器之前或之后运行。JWT 身份认证器相对于其他身份认证器的具体位置在不同版本中既未定义也不稳定。由于每个 JWT 身份认证器必须具有唯一的颁发者 URL,因此最多只有一个 JWT 身份认证器会尝试基于密码学方法对令牌进行合法性检查。 最小有效 JWT 负载必须包含以下声明: { "iss": "https://issuer.example.com", "aud": ["audience"], "exp": 1234567890, "<username claim>": "username" } |
anonymous [必需]AnonymousAuthConfig | 如果设置了此字段,则不得设置 |
AuthorizationConfiguration
字段 | 描述 |
---|---|
apiVersion string | apiserver.k8s.io/v1beta1 |
kind string | AuthorizationConfiguration |
authorizers [必需][]AuthorizerConfiguration | authorizers 是一个有序的鉴权器列表,用于对请求进行鉴权。
这类似于 kube-apiserver |
EgressSelectorConfiguration
EgressSelectorConfiguration 为出站流量选择器客户端(Egress Selector Client)提供版本化的配置选项。
字段 | 描述 |
---|---|
apiVersion string | apiserver.k8s.io/v1beta1 |
kind string | EgressSelectorConfiguration |
egressSelections [必需][]EgressSelection | connectionServices 包含一组出站流量选择器客户端(Egress Selector Client)配置选项。 |
TracingConfiguration
TracingConfiguration 为跟踪客户端提供版本化的配置信息。
字段 | 描述 |
---|---|
apiVersion string | apiserver.k8s.io/v1beta1 |
kind string | TracingConfiguration |
TracingConfiguration [必需]TracingConfiguration | (TracingConfiguration 的成员嵌入到这种类型中。)嵌入组件配置中的跟踪配置结构体。 |
AnonymousAuthCondition
出现在:
AnonymousAuthCondition 描述了应启用匿名身份认证的条件。
字段 | 描述 |
---|---|
path [必需]string | 启用匿名身份认证的路径。 |
AnonymousAuthConfig
出现在:
AnonymousAuthConfig 为匿名身份认证器提供配置信息。
字段 | 描述 |
---|---|
enabled [必需]bool | |
conditions [必需][]AnonymousAuthCondition | 如果设置,只有在请求满足其中一个条件时才允许匿名身份认证。 |
AudienceMatchPolicyType
(string
类型的别名)
出现在:
AudienceMatchPolicyType 是 issuer.audienceMatchPolicy 合法值的集合
AuthorizerConfiguration
出现在:
字段 | 描述 |
---|---|
type [必需]string | type 指的是鉴权器的类型。 通用 API 服务器支持 "Webhook"。 其他 API 服务器可能支持其他鉴权器类型,如 Node、RBAC、ABAC 等。 |
name [必需]string | name 是用于描述 webhook 的名称。
此字段专为监控机制中的指标提供。
注意:name 值必须是 DNS1123 标签,如 |
webhook [必需]WebhookConfiguration | webhook 定义 Webhook 鉴权器的配置。 当 type=Webhook 时必须定义。 当 type!=Webhook 时不得定义。 |
ClaimMappings
出现在:
ClaimMappings 为声明映射提供配置信息
字段 | 描述 |
---|---|
username [必需]PrefixedClaimOrExpression | username 表示用户名属性的一个选项。
声明的值必须是单一字符串。
与 在基于标志的方法中,--oidc-username-claim 和 --oidc-username-prefix 是可选的。如果未设置 --oidc-username-claim,默认值为 "sub"。 对于身份认证配置,声明或前缀都没有默认值。声明和前缀必须显式设置。 对于声明,如果在传统标志方法中未设置 --oidc-username-claim, 请在身份认证配置中配置 username.claim="sub"。 对于前缀: (1) --oidc-username-prefix="-", 未添加前缀到用户名。要实现相同的行为,请在身份认证配置中设置 username.prefix="" (2) --oidc-username-prefix="" 并且 --oidc-username-claim != "email", 前缀为 "<--oidc-issuer-url 的值>#"。要实现相同的行为,请在身份认证配置中设置 username.prefix="<issuer.url 的值>#"。 (3) --oidc-username-prefix="<value>"。要实现相同的行为,请在身份认证配置中设置 username.prefix="<value>"。 |
groups PrefixedClaimOrExpression | groups 表示 groups 属性的一个选项。 其中 claim 字段的值必须是字符串或字符串数组。 如果设置了 groups.claim,则必须指定 prefix 字段(可以是空字符串)。 如果设置了 groups.expression,则该表达式必须生成一个字符串或字符串数组值。 ""、[] 和 null 值被视为不存在组映射。 |
uid ClaimOrExpression | uid 表示 uid 属性的一个选项。 其中的 claim 字段必须是一个字符串。 如果设置了 uid.expression,则该表达式必须生成一个字符串值。 |
extra []ExtraMapping | extra 表示 extra 属性的一个选项。 expression 必须生成一个字符串或字符串数组值。 如果值为空,则不会存在 extra 映射。 硬编码的额外 key/value - key: "foo" valueExpression: "'bar'"这将导致一个额外的属性 - foo: ["bar"] 硬编码 key,value 从声明的值复制 - key: "foo" valueExpression: "claims.some_claim" 结果会是一个 extra 属性 - foo: [some_claim 的值] 硬编码 key,value 从声明的值派生 - key: "admin" valueExpression: '(has(claims.is_admin) && claims.is_admin) ? "true":""' 这将导致:
|
ClaimOrExpression
出现在:
ClaimOrExpression 为单个声明或表达式提供配置信息。
字段 | 描述 |
---|---|
claim string | claim 是要使用的 JWT 声明。 claim 或 expression 必须设置一个。 与 expression 互斥。 |
expression string | expression 表示将由 CEL 求值的表达式。 CEL 表达式可以访问令牌声明的内容,这些内容被组织成 CEL 变量:
关于 CEL 的文档:https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ 与 claim 互斥。 |
ClaimValidationRule
出现在:
ClaimValidationRule 为单个声明验证规则提供配置信息。
字段 | 描述 |
---|---|
claim string | claim 是所需要的声明的名称。 与 --oidc-required-claim 标志相同。 仅支持用字符串声明键。 与 expression 和 message 互斥。 |
requiredValue string | requiredValue 是声明中必须包含的值。 与 --oidc-required-claim 标志相同。 仅支持用字符串声明值。 如果设置了 claim 而未设置 requiredValue,则 claim 必须存在且值必须设置为空字符串。 与 expression 和 message 互斥。 |
expression string | expression 表示将由 CEL 求值的表达式。 必须生成一个布尔值。 CEL 表达式可以访问令牌声明的内容,这些内容被组织成 CEL 变量:
关于 CEL 的文档:https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ 与 claim 和 requiredValue 互斥。 |
message string | message 自定义当 expression 返回 false 时的错误消息。 message 是一个字符串文字。 与 claim 和 requiredValue 互斥。 |
Connection
出现在:
Connection 提供某个出站流量选择器客户端(Egress Selector Client)的配置信息。
字段 | 描述 |
---|---|
proxyProtocol [必需]ProtocolType | proxyProtocol 是客户端连接到 konnectivity 服务器所使用的协议。 |
transport Transport | transport 定义的是传输层的配置。我们使用这个配置来联系 konnectivity 服务器。 当 proxyProtocol 是 HTTPConnect 或 GRPC 时需要设置此字段。 |
EgressSelection
出现在:
EgressSelection 为某个出站流量选择器客户端(Egress Selector Client)提供配置信息。
字段 | 描述 |
---|---|
name [必需]string | name 是出站流量选择(egress selection)的名称。当前支持的取值有 "controlplane", "master","etcd" 和 "cluster"。 "master" 出站流量选择(egress selection)已被弃用,推荐使用 "controlplane"。 |
connection [必需]Connection | connection 是用来配置出站流量选择(egress selection)的确切信息。 |
ExtraMapping
出现在:
ExtraMapping 为单个 extra 映射提供配置信息。
字段 | 描述 |
---|---|
key [必需]string | key 是用作 extra 属性键的字符串。 key 必须是域前缀路径(例如 example.org/foo)。第一个 "/" 之前的所有字符必须是符合 RFC 1123 定义的有效子域名。第一个 "/" 之后的所有字符必须是符合 RFC 3986 定义的有效 HTTP 路径字符。 key 必须是小写。 必须是唯一的。 |
valueExpression [必需]string | valueExpression 是一个 CEL 表达式,用于提取 extra 中的属性值。 valueExpression 必须生成一个字符串或字符串数组值。 ""、[] 和 null 值被视为不存在 extra 映射。 字符串数组中包含的空字符串值将被过滤掉。 CEL 表达式可以访问令牌声明的内容,这些内容被组织成 CEL 变量:
关于 CEL 的文档:https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ |
Issuer
出现在:
Issuer 为外部提供者的特定设置提供配置。
字段 | 描述 |
---|---|
url [必需]string | url 指向颁发者 URL,格式为 https://url 或 https://url/path。 此 URL 必须与所提供的 JWT 中的 "iss" 声明以及从发现中返回的颁发者匹配。 与 --oidc-issuer-url 标志的值相同。 除非被 discoveryURL 覆盖,否则发现信息将从 "{url}/.well-known/openid-configuration" 获取。 在所有 JWT 身份认证器中必须唯一。 请注意,此网络连接不使用出站流量选择配置。 |
discoveryURL string | discoveryURL(如果指定)会覆盖用于获取发现信息的 URL,而不是使用 "{url}/.well-known/openid-configuration"。 使用指定的确切值,因此如果需要,必须在 discoveryURL 中包含 "/.well-known/openid-configuration"。 所获取的发现信息中的 "issuer" 字段必须与 AuthenticationConfiguration 中的 "issuer.url" 字段匹配,并将用于检验所提供的 JWT 中的 "iss" 声明。 这适用于 well-known 和 jwks 端点托管在与颁发者不同的位置(例如在集群中本地托管)的场景。 示例: 发现 URL 是通过 Kubernetes 在命名空间 'oidc-namespace' 中的服务 'oidc' 公布的, 而访问 '/.well-known/openid-configuration' 可以获得发现信息。 discoveryURL: "https://oidc.oidc-namespace/.well-known/openid-configuration" certificateAuthority 用于验证 TLS 连接,叶证书上的主机名必须设置为 'oidc.oidc-namespace'。
discoveryURL 必须与 url 不同。 在所有 JWT 身份认证器中必须唯一。 请注意,此网络连接不使用出站流量选择配置。 |
certificateAuthority string | certificateAuthority 包含 PEM 编码的证书颁发机构证书, 用于在获取发现信息时验证连接。 如果未设置,则使用系统验证器。 与 --oidc-ca-file 标志引用的文件内容相同。 |
audiences [必需][]string | audiences 是 JWT 必须签发给的可接受受众集。 所提供的 JWT 中的 "aud" 声明必须至少与其中一个条目匹配。 与 --oidc-client-id 标志的值相同(尽管此字段支持数组)。 必须为非空。 |
audienceMatchPolicy AudienceMatchPolicyType | audienceMatchPolicy 定义了如何使用 "audiences" 字段来匹配所提供的 JWT 中的 "aud" 声明。 允许的值有:
对于更精细的受众验证,请使用 claimValidationRules。 示例:claimValidationRule[].expression: 'sets.equivalent(claims.aud, ["bar", "foo", "baz"])' 以要求精确匹配。 |
JWTAuthenticator
出现在:
JWTAuthenticator 为单个 JWT 身份认证器提供配置信息。
字段 | 描述 |
---|---|
issuer [必需]Issuer | issuer 包含基本的 OIDC 提供者连接选项。 |
claimValidationRules []ClaimValidationRule | claimValidationRules 是用于验证令牌声明以认证用户的规则。 |
claimMappings [必需]ClaimMappings | claimMappings 指向要视为用户属性的令牌声明。 |
userValidationRules []UserValidationRule | userValidationRules 是在完成身份认证之前应用于最终用户的规则。
这些规则允许将不变量应用于传入的身份,例如禁止使用 Kubernetes 组件常用的 |
PrefixedClaimOrExpression
出现在:
PrefixedClaimOrExpression 为单个带前缀的声明或表达式提供配置。
字段 | 描述 |
---|---|
claim string | claim 是要使用的 JWT 声明。 与 expression 互斥。 |
prefix string | prefix 是添加到声明值前面的前缀,以防止与现有名称冲突。 如果设置了 claim,则需要设置 prefix,并且可以是空字符串。 与 expression 互斥。 |
expression string | expression 表示将由 CEL 评估的表达式。 CEL 表达式可以访问令牌声明的内容,这些内容被组织成 CEL 变量:
关于 CEL 的文档:https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ 与 claim 和 prefix 互斥。 |
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) |
UserValidationRule
出现在:
UserValidationRule 为单个用户信息验证规则提供配置信息。
字段 | 描述 |
---|---|
expression [必需]string | expression 表示将由 CEL 求值的表达式。 验证通过时必须返回 true。 CEL 表达式可以访问 UserInfo 的内容,这些内容被组织成 CEL 变量:
关于 CEL 的文档:https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ |
message string | message 自定义当规则返回 false 时的错误消息。 message 是一个字符串文字。 |
WebhookConfiguration
出现在:
字段 | 描述 |
---|---|
authorizedTTL [必需]meta/v1.Duration | 对来自 Webhook 鉴权组件的 “authorized” 响应的缓存时长。
与设置 |
unauthorizedTTL [Required]meta/v1.Duration | 对来自 Webhook 鉴权组件的 “unauthorized” 响应的缓存时长。
与设置 |
timeout [必需]meta/v1.Duration | Webhook 请求超时时间。 允许的最大时间为 30 秒。 必需,没有默认值。 |
subjectAccessReviewVersion [必需]string | 要发送到 Webhook 并期望从 Webhook 获得的 authorization.k8s.io SubjectAccessReview 的 API 版本。
与设置 |
matchConditionSubjectAccessReviewVersion [必需]string | matchConditionSubjectAccessReviewVersion 指定对 CEL 表达式求值时使用的 SubjectAccessReview 版本。 有效值:v1。必需,无默认值。 |
failurePolicy [必需]string | 控制当 Webhook 请求无法完成或返回格式错误的响应或计算 matchConditions 出现错误时的鉴权决定。 有效值:
|
connectionInfo [必需]WebhookConnectionInfo | ConnectionInfo 定义 Webhook 如何与服务器通信。 |
matchConditions [必需][]WebhookMatchCondition | matchConditions 是将请求发送到此 Webhook 必须满足的条件列表。matchConditions 为空列表表示匹配所有请求。 最多允许 64 个匹配条件。 精确匹配逻辑如下(按顺序):
|
WebhookConnectionInfo
出现在:
字段 | 描述 |
---|---|
type [必需]string | 控制 Webhook 如何与服务器通信。 有效值:
|
kubeConfigFile [必需]string | 包含连接信息的 KubeConfig 文件的路径。 如果 connectionInfo.type 是 KubeConfig,则为必需项。 |
WebhookMatchCondition
出现在:
字段 | 描述 |
---|---|
expression [必需]string | expression 表示将由 CEL 求值的表达式。求值结果必须为布尔值。 CEL 表达式可以访问 v1 版本中的 SubjectAccessReview 的内容。 如果请求变量中 subjectAccessReviewVersion 指定的版本是 v1beta1, 在计算 CEL 表达式之前,内容将被转换为 v1 版本。 关于 CEL 文档: https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ |
9 - kube-controller-manager Configuration (v1alpha1)
资源类型
NodeControllerConfiguration
出现在:
NodeControllerConfiguration 包含描述 NodeController 的元素。
字段 | 描述 |
---|---|
ConcurrentNodeSyncs [必需]int32 | ConcurrentNodeSyncs 是并发执行以进行节点同步的工作程序的数量。 |
ServiceControllerConfiguration
出现在:
ServiceControllerConfiguration 包含描述 ServiceController 的元素。
字段 | 描述 |
---|---|
ConcurrentServiceSyncs [必需]int32 | concurrentServiceSyncs 是允许同时同步的服务数。 数量越大表示服务管理响应越快,但 CPU(和网络)负载也越高。 |
CloudControllerManagerConfiguration
CloudControllerManagerConfiguration 包含描述云控制器管理器的元素。
字段 | 描述 |
---|---|
apiVersion string | cloudcontrollermanager.config.k8s.io/v1alpha1 |
kind string | CloudControllerManagerConfiguration |
Generic [必需]GenericControllerManagerConfiguration | Generic 包含通用控制器管理器的配置。 |
KubeCloudShared [必需]KubeCloudSharedConfiguration | KubeCloudSharedConfiguration 保存被云控制器管理器和 kube-controller 管理器共享的相关特性的配置。 |
NodeController [必需]NodeControllerConfiguration | NodeController 保存与节点控制器相关的特性的配置。 |
ServiceController [必需]ServiceControllerConfiguration | ServiceControllerConfiguration 保存 ServiceController 相关的特性的配置。 |
NodeStatusUpdateFrequency [必需]meta/v1.Duration | NodeStatusUpdateFrequency 是控制器更新节点状态的频率。 |
Webhook [必需]WebhookConfiguration | Webhook 是云控制器管理器托管的 webhook 的配置。 |
CloudProviderConfiguration
出现在:
CloudProviderConfiguration 包含有关云提供商的一些基本元素。
字段 | 描述 |
---|---|
Name [必需]string | Name 是云服务的提供商。 |
CloudConfigFile [必需]string | cloudConfigFile 是云提供程序配置文件的路径。 |
KubeCloudSharedConfiguration
出现在:
KubeCloudSharedConfiguration 包含 kube-controller 管理器和云控制器管理器共享的元素,但不包含通用配置。
字段 | 描述 |
---|---|
CloudProvider [必需]CloudProviderConfiguration | CloudProviderConfiguration 保存 CloudProvider 相关特性的配置。 |
ExternalCloudVolumePlugin [必需]string | 当 cloudProvider 为 "external" 时,externalCloudVolumePlugin 用于指定插件。 它目前被仓库内的云驱动用于处理 KCM 中的节点和卷控制。 |
UseServiceAccountCredentials [必需]bool | useServiceAccountCredentials 指出控制器是否应使用独立的服务帐户凭据运行。 |
AllowUntaggedCloud [必需]bool | 使用未标记的云实例运行。 |
RouteReconciliationPeriod [必需]meta/v1.Duration | routeReconciliationPeriod 是云驱动商为节点创建的路由的调和周期。 |
NodeMonitorPeriod [必需]meta/v1.Duration | nodeMonitorPeriod 是 NodeController 同步 NodeStatus 的周期。 |
ClusterName [必需]string | clusterName 是集群的实例前缀。 |
ClusterCIDR [必需]string | clusterCIDR 是集群中 Pod CIDR 的范围。 |
AllocateNodeCIDRs [必需]bool | AllocateNodeCIDRs 允许为 Pod 分配 CIDR, 如果 ConfigureCloudRoutes 为 true,则允许在对云驱动商设置 CIDR。 |
CIDRAllocatorType [必需]string | CIDRAllocatorType 决定使用哪种类型的 Pod CIDR 分配器。 |
ConfigureCloudRoutes [必需]bool | configureCloudRoutes 使通过 allocateNodeCIDRs 分配的 CIDR 能够在云提供商上配置。 |
NodeSyncPeriod [必需]meta/v1.Duration | nodeSyncPeriod 从云平台同步节点的周期。 周期较长时,调用云平台的次数减少, 但向集群添加新节点可能会延迟。 |
WebhookConfiguration
出现在:
WebhookConfiguration 包含与云控制器管理器托管的 webhook 相关的配置。
字段 | 描述 |
---|---|
Webhooks [必需][]string | Webhooks 是要启用或者禁用的 Webhook 的列表。 '*' 表示"所有默认启用的 webhook ", 'foo' 表示"启用 'foo'", '-foo' 表示"禁用 'foo'", 特定名称的首个项有效。 |
LeaderMigrationConfiguration
出现在:
LeaderMigrationConfiguration 为所有迁移中的领导者锁提供了版本化配置。
字段 | 描述 |
---|---|
apiVersion string | controllermanager.config.k8s.io/v1alpha1 |
kind string | LeaderMigrationConfiguration |
leaderName [必需]string | LeaderName 是保护迁移的领导者选举资源的名称,例如:1-20-KCM-to-1-21-CCM。 |
resourceLock [必需]string | ResourceLock 表示将被用于加锁的资源对象类型, 应该是 "leases" 或者是 "endpoints"。 |
controllerLeaders [必需][]ControllerLeaderConfiguration | ControllerLeaders 包含迁移领导者锁配置列表。 |
ControllerLeaderConfiguration
出现在:
ControllerLeaderConfiguration 提供迁移中领导者锁的配置。
字段 | 描述 |
---|---|
name [必需]string | Name 是正被迁移的控制器的名称,例如:service-controller、route-controller、cloud-node-controller 等等 |
component [必需]string | Component 是控制器运行所处的组件的名称。 例如,kube-controller-manager、cloud-controller-manager 等。 或者 “*” 表示控制器可以在任何正在参与迁移的组件中运行。 |
GenericControllerManagerConfiguration
出现在:
GenericControllerManagerConfiguration 保存通用控制器管理器的配置。
字段 | 描述 |
---|---|
Port [必需]int32 | port 是控制器管理器运行 HTTP 服务运行的端口。 |
Address [必需]string | address 是提供服务所用的 IP 地址(所有接口设置为 0.0.0.0)。 |
MinResyncPeriod [必需]meta/v1.Duration | minResyncPeriod 是反射器的重新同步周期;大小是在 minResyncPeriod 和 2*minResyncPeriod 范围内的随机数。 |
ClientConnection [必需]ClientConnectionConfiguration | ClientConnection 指定代理服务器在与 API 服务器通信时使用的 kubeconfig 文件和客户端连接设置。 |
ControllerStartInterval [必需]meta/v1.Duration | 两次启动控制器管理器之间的间隔时间。 |
LeaderElection [必需]LeaderElectionConfiguration | leaderElection 定义领导者选举客户端的配置。 |
Controllers [必需][]string | Controllers 是要启用或者禁用的控制器列表。 '*' 表示"所有默认启用的控制器", 'foo' 表示"启用 'foo'", '-foo' 表示"禁用 'foo'", 特定名称的首个项有效。 |
Debugging [必需]DebuggingConfiguration | DebuggingConfiguration 保存调试相关特性的配置。 |
LeaderMigrationEnabled [必需]bool | LeaderMigrationEnabled 指示是否应为控制器管理器启用领导者迁移(Leader Migration)。 |
LeaderMigration [必需]LeaderMigrationConfiguration | LeaderMigration 保存领导者迁移的配置。 |
KubeControllerManagerConfiguration
KubeControllerManagerConfiguration 包含描述 kube-controller 管理器的元素。
字段 | 描述 |
---|---|
apiVersion string | kubecontrollermanager.config.k8s.io/v1alpha1 |
kind string | KubeControllerManagerConfiguration |
Generic [必需]GenericControllerManagerConfiguration | Generic 保存通用控制器管理器的配置。 |
KubeCloudShared [必需]KubeCloudSharedConfiguration | KubeCloudSharedConfiguration 保存云控制器管理器和 kube-controller 管理器间共享的相关特性的配置。 |
AttachDetachController [必需]AttachDetachControllerConfiguration | AttachDetachControllerConfiguration 包含 AttachDetachController 相关特性的配置。 |
CSRSigningController [必需]CSRSigningControllerConfiguration | CSRSigningControllerConfiguration 包含 CSRSigningController 相关特性的配置。 |
DaemonSetController [必需]DaemonSetControllerConfiguration | DaemonSetControllerConfiguration 包含 DaemonSetController 相关特性的配置。 |
DeploymentController [必需]DeploymentControllerConfiguration | DeploymentControllerConfiguration 包含 DeploymentController 相关特性的配置。 |
StatefulSetController [必需]StatefulSetControllerConfiguration | StatefulSetControllerConfiguration 包含 StatefulSetController 相关特性的配置。 |
DeprecatedController [必需]DeprecatedControllerConfiguration | DeprecatedControllerConfiguration 包含一些已弃用的特性的配置。 |
EndpointController [必需]EndpointControllerConfiguration | EndpointControllerConfiguration 包含 EndpointController 相关特性的配置。 |
EndpointSliceController [必需]EndpointSliceControllerConfiguration | EndpointSliceControllerConfiguration 包含 EndpointSliceController 相关特性的配置。 |
EndpointSliceMirroringController [必需]EndpointSliceMirroringControllerConfiguration | EndpointSliceMirroringControllerConfiguration 包含 EndpointSliceMirroringController 相关特性的配置。 |
EphemeralVolumeController [必需]EphemeralVolumeControllerConfiguration | EphemeralVolumeControllerConfiguration 包含 EphemeralVolumeController 相关特性的配置。 |
GarbageCollectorController [必需]GarbageCollectorControllerConfiguration | GarbageCollectorControllerConfiguration 包含 GarbageCollectorController 相关特性的配置。 |
HPAController [必需]HPAControllerConfiguration | HPAControllerConfiguration 包含 HPAController 相关特性的配置。 |
JobController [必需]JobControllerConfiguration | HPAControllerConfiguration 包含 JobController 相关特性的配置。 |
CronJobController [必需]CronJobControllerConfiguration | CronJobControllerConfiguration 包含 CronJobController 相关特性的配置。 |
LegacySATokenCleaner [必需]LegacySATokenCleanerConfiguration | LegacySATokenCleanerConfiguration 包含 LegacySATokenCleaner 相关特性的配置。 |
NamespaceController [必需]NamespaceControllerConfiguration | NamespaceControllerConfiguration 包含 NamespaceController 相关特性的配置。 |
NodeIPAMController [必需]NodeIPAMControllerConfiguration | NodeIPAMControllerConfiguration 包含 NodeIPAMController 相关特性的配置。 |
NodeLifecycleController [必需]NodeLifecycleControllerConfiguration | NodeLifecycleControllerConfiguration 包含 NodeLifecycleController 相关特性的配置。 |
PersistentVolumeBinderController [必需]PersistentVolumeBinderControllerConfiguration | PersistentVolumeBinderControllerConfiguration 包含 PersistentVolumeBinderController 相关特性的配置。 |
PodGCController [必需]PodGCControllerConfiguration | PodGCControllerConfiguration 包含 PodGCController 相关特性的配置。 |
ReplicaSetController [必需]ReplicaSetControllerConfiguration | ReplicaSetControllerConfiguration 包含 ReplicaSetController 相关特性的配置。 |
ReplicationController [必需]ReplicationControllerConfiguration | ReplicationControllerConfiguration 包含 ReplicationController 相关特性的配置。 |
ResourceQuotaController [必需]ResourceQuotaControllerConfiguration | ResourceQuotaControllerConfiguration 包含 ResourceQuotaController 相关特性的配置。 |
SAController [必需]SAControllerConfiguration | SAControllerConfiguration 包含 ServiceAccountController 相关特性的配置。 |
ServiceController [必需]ServiceControllerConfiguration | ServiceControllerConfiguration 包含 ServiceController 相关特性的配置。 |
TTLAfterFinishedController [必需]TTLAfterFinishedControllerConfiguration | TTLAfterFinishedControllerConfiguration 包含 TTLAfterFinishedController 相关特性的配置。 |
ValidatingAdmissionPolicyStatusController [必需]ValidatingAdmissionPolicyStatusControllerConfiguration | ValidatingAdmissionPolicyStatusControllerConfiguration 包含 ValidatingAdmissionPolicyStatusController 相关特性的配置。 |
AttachDetachControllerConfiguration
出现在:
AttachDetachControllerConfiguration 包含描述 AttachDetachController 的元素。
字段 | 描述 |
---|---|
DisableAttachDetachReconcilerSync [必需]bool | Reconciler 运行一个周期性循环,通过触发 attach/detach 操作来协调期望状态与实际状态。 此标志启用或禁用调和操作。默认为 false,即被启用的。 |
ReconcilerSyncLoopPeriod [必需]meta/v1.Duration | ReconcilerSyncLoopPeriod 是调和器在连续执行同步状态的循环间,所等待的时间量。 默认为 60 秒。 |
disableForceDetachOnTimeout [必需]bool | 当超过最大卸载时间时,DisableForceDetachOnTimeout 将禁用强制分离。 默认情况下为 false,因此启用卸载时强制分离。 |
CSRSigningConfiguration
出现在:
CSRSigningConfiguration 保存有关特定 CSR 签名者的信息。
字段 | 描述 |
---|---|
CertFile [必需]string | certFile 是包含 PEM 编码的 X509 CA 证书的文件名,用于颁发证书。 |
KeyFile [必需]string | keyFile 是包含 PEM 编码的 RSA 或 ECDSA 私钥的文件名,用于颁发证书。 |
CSRSigningControllerConfiguration
出现在:
CSRSigningControllerConfiguration 包含描述 CSRSigningController 的元素。
字段 | 描述 |
---|---|
ClusterSigningCertFile [必需]string | clusterSigningCertFile 是包含 PEM 编码的 X509 CA 证书的文件名,该证书用于颁发集群范围的证书。 |
ClusterSigningKeyFile [必需]string | clusterSigningCertFile 是包含 PEM 编码的 RSA 或 ECDSA 私钥的文件名,用于颁发集群范围的证书。 |
KubeletServingSignerConfiguration [必需]CSRSigningConfiguration | kubeletServingSignerConfiguration 保存用于为 kubernetes.io/kubelet-serving 签名者颁发证书的证书和密钥。 |
KubeletClientSignerConfiguration [必需]CSRSigningConfiguration | kubeletClientSignerConfiguration 保存用于为 kubernetes.io/kube-apiserver-client-kubelet 颁发证书的证书和密钥。 |
KubeAPIServerClientSignerConfiguration [必需]CSRSigningConfiguration | kubeAPIServerClientSignerConfiguration 保存用于为 kubernetes.io/kube-apiserver-client 颁发证书的证书和密钥。 |
LegacyUnknownSignerConfiguration [必需]CSRSigningConfiguration | legacyUnknownSignerConfiguration 保存用于颁发 kubernetes.io/legacy-unknown 证书的证书和密钥。 |
ClusterSigningDuration [必需]meta/v1.Duration | clusterSigningDuration 是签名证书的最长持续时间。 单个 CSRs 可以通过设置 spec.expirationSeconds 来请求有效期更短的证书。 |
CronJobControllerConfiguration
出现在:
CronJobControllerConfiguration 包含描述 CrongJob2Controller 的元素。
字段 | 描述 |
---|---|
ConcurrentCronJobSyncs [必需]int32 | concurrentCronJobSyncs 是允许并发同步的 Job 对象的数量。 数量越大意味着 Job 响应越快,但 CPU(和网络)负载也越高。 |
DaemonSetControllerConfiguration
出现在:
DaemonSetControllerConfiguration 包含描述 DaemonSetController 的元素。
字段 | 描述 |
---|---|
ConcurrentDaemonSetSyncs [必需]int32 | concurrentDaemonSetSyncs 是允许并发同步的 DaemonSet 对象的数量。 数目越大意味着 DaemonSet 响应越快,但 CPU(和网络)负载也越高。 |
DeploymentControllerConfiguration
Appears in:
DeploymentControllerConfiguration 包含描述 DeploymentController 的元素。
字段 | 描述 |
---|---|
ConcurrentDeploymentSyncs [必需]int32 | concurrentDeploymentSyncs 是允许并发同步的 Deployment 对象的数量。 数量越大意味着 Deployment 响应更越快,但 CPU(和网络)负载也越高。 |
DeprecatedControllerConfiguration
出现在:
DeprecatedControllerConfiguration 包含被弃用的元素。
EndpointControllerConfiguration
出现在:
EndpointControllerConfiguration 包含描述 EndpointController 的元素。
字段 | 描述 |
---|---|
ConcurrentEndpointSyncs [必需]int32 | concurrentEndpointSyncs 是将并发执行的 Endpoints 同步操作的数量。 数字越大意味着 Endpoints 更新越快,但 CPU(和网络)负载也越高。 |
EndpointUpdatesBatchPeriod [必需]meta/v1.Duration | EndpointUpdatesBatchPeriod 描述批量更新 Endpoints 的周期长度。 Pod 更改的处理将被延迟相同的时长,以便将它们与即将到来的更新连接起来,并减少 Endpoints 更新的总数。 |
EndpointSliceControllerConfiguration
出现在:
EndpointSliceControllerConfiguration 包含描述 EndpointSliceController 的元素。
字段 | 描述 |
---|---|
ConcurrentServiceEndpointSyncs [必需]int32 | concurrentServiceEndpointSyncs 是将并发完成的服务端点同步操作的数量。 数字越大意味着 EndpointSlice 更新越快,但 CPU(和网络)负载也越高。 |
MaxEndpointsPerSlice [必需]int32 | maxEndpointsPerSlice 是将添加到 EndpointSlice 的最大端点数。 每个切片的端点越多,端点切片就会更少、更大,但资源消耗就会更多。 |
EndpointUpdatesBatchPeriod [必需]meta/v1.Duration | EndpointUpdatesBatchPeriod 描述批量更新 Endpoints 的周期长度。 Pod 更改的处理将被延迟相同的时长,以便将它们与即将到来的更新连接起来,并减少 Endpoints 更新的总数。 |
EndpointSliceMirroringControllerConfiguration
出现在:
EndpointSliceMirroringControllerConfiguration 包含描述 EndpointSliceMirroringController 的元素。
字段 | 描述 |
---|---|
MirroringConcurrentServiceEndpointSyncs [必需]int32 | mirroringConcurrentServiceEndpointSyncs 是将并发完成的服务端点同步操作的数量。 数字越大意味着 EndpointSlice 更新越快,但 CPU(和网络)负载也越高。 |
MirroringMaxEndpointsPerSubset [必需]int32 | mirroringMaxEndpointsPerSubset 是把 EndpointSubset 映射到 EndpointSlice 的端点数上限。 |
MirroringEndpointUpdatesBatchPeriod [必需]meta/v1.Duration | mirroringEndpointUpdatesBatchPeriod 可用于批量更新 EndpointSlice。 所有由 EndpointSlice 更改触发的更新可能被延迟,延迟的时间长度上限为 “mirroringEndpointUpdatesBatchPeriod”。 如果同一 Endpoints 资源中的其他地址在此期间发生变化,它们将被合并到同一个 EndpointSlice 更新中以实现批处理。 默认值 0 表示 Endpoints 的每次更新都会触发一次 EndpointSlice 更新。 |
EphemeralVolumeControllerConfiguration
出现在:
EphemeralVolumeControllerConfiguration 包含描述 EphemeralVolumeController 的元素。
字段 | 描述 |
---|---|
ConcurrentEphemeralVolumeSyncs [必需]int32 | ConcurrentEphemeralVolumeSyncseSyncs 是并发执行的临时卷同步操作数量。 数字越大意味着临时卷更新越快,但 CPU(和网络)负载也越高。 |
GarbageCollectorControllerConfiguration
出现在:
GarbageCollectorControllerConfiguration 包含描述 GarbageCollectorController 的元素。
字段 | 描述 |
---|---|
EnableGarbageCollector [必需]bool | 启用通用垃圾收集器。必须与 kube-apiserver 的相应标志同步。 警告:通用垃圾收集器是一个 Alpha 特性。 |
ConcurrentGCSyncs [必需]int32 | concurrentGCSyncs 是允许垃圾收集器并发同步的工作线程的数量。 |
GCIgnoredResources [必需][]GroupResource | gcIgnoredResources 是垃圾收集应该忽略的 GroupResource 列表。 |
GroupResource
出现在:
GroupResource 描述组资源。
字段 | 描述 |
---|---|
Group [必需]string | group 是 GroupResource 的 group 部分。 |
Resource [必需]string | resource 是 GroupResource 的 resource 部分。 |
HPAControllerConfiguration
出现在:
HPAControllerConfiguration 包含描述 HPAController 的元素。
字段 | 描述 |
---|---|
ConcurrentHorizontalPodAutoscalerSyncs [必需]int32 | ConcurrentHorizontalPodAutoscalerSyncs 是允许并发同步的 HPA 对象的数量。 数字越大意味着 HPA 处理响应越快,但 CPU(和网络)负载也越高。 |
HorizontalPodAutoscalerSyncPeriod [必需]meta/v1.Duration | HorizontalPodAutoscalerSyncPeriod 是对 HPA 中 Pod 数量进行同步的周期。 |
HorizontalPodAutoscalerDownscaleStabilizationWindow [必需]meta/v1.Duration | horizontalpodautoscalerdowncalstabilizationwindow 是一个自动缩放器要回顾的时段长度, 在所给时段内,自动缩放器不会按照建议执行任何缩容操作。 |
HorizontalPodAutoscalerTolerance [必需]float64 | HorizontalPodAutoscalerTolerance 是当资源用量表明需要扩容/缩容时的容忍度。 |
HorizontalPodAutoscalerCPUInitializationPeriod [必需]meta/v1.Duration | HorizontalPodAutoscalerCPUInitializationPeriod 是 Pod 启动后可以跳过时间段,这段时间内部执行 CPU 采样。 |
HorizontalPodAutoscalerInitialReadinessDelay [必需]meta/v1.Duration | HorizontalPodAutoscalerInitialReadinessDelay 是 Pod 启动后的一段时间, 在此期间,readiness 状态的变更被视为初次设置 readiness 状态。 这样做的唯一影响是,对于在此期间发生 readiness 状态变化但未准备好的 Pod,HPA 将忽略其 CPU 采样值。 |
JobControllerConfiguration
出现在:
JobControllerConfiguration 包含描述 JobController 的元素。
字段 | 描述 |
---|---|
ConcurrentJobSyncs [必需]int32 | concurrentJobSyncs 是允许并发同步的 Job 对象的数量。 数字越大意味着 Job 响应越快,但 CPU(和网络)负载也越高。 |
LegacySATokenCleanerConfiguration
出现在:
LegacySATokenCleanerConfiguration 包含描述 LegacySATokenCleaner 的元素。
字段 | 描述 |
---|---|
CleanUpPeriod [必需]meta/v1.Duration | CleanUpPeriod 是自动生成的服务帐户令牌上次被使用以来的时长,超出此时长的令牌可被清理。 |
NamespaceControllerConfiguration
出现在:
NamespaceControllerConfiguration 包含描述 NamespaceController 的元素。
字段 | 描述 |
---|---|
NamespaceSyncPeriod [必需]meta/v1.Duration | namespaceSyncPeriod 是对名字空间生命周期更新进行同步的周期。 |
ConcurrentNamespaceSyncs [必需]int32 | concurrentNamespaceSyncs 是允许并发同步的 Namespace 对象的数量。 |
NodeIPAMControllerConfiguration
出现在:
NodeIPAMControllerConfiguration 包含描述 NodeIpamController 的元素。
字段 | 描述 |
---|---|
ServiceCIDR [必需]string | serviceCIDR 为集群中 Service 的 CIDR 范围。 |
SecondaryServiceCIDR [必需]string | SecondaryServiceCIDR 为集群中 Service 的 CIDR 范围。此字段用于双栈集群。 SecondaryServiceCIDR 和 ServiceCIDR 的 IP 族不能相同。 |
NodeCIDRMaskSize [必需]int32 | NodeCIDRMaskSize 为集群中节点 CIDR 的掩码大小。 |
NodeCIDRMaskSizeIPv4 [必需]int32 | NodeCIDRMaskSizeIPv4 为双栈集群中节点 CIDR 的掩码大小。 |
NodeCIDRMaskSizeIPv6 [必需]int32 | NodeCIDRMaskSizeIPv6 为双栈集群中节点 CIDR 的掩码大小。 |
NodeLifecycleControllerConfiguration
出现在:
Nodelifecyclecontrolerconfiguration 包含描述 NodeLifecycleController 的元素。
字段 | 描述 |
---|---|
NodeEvictionRate [必需]float32 | nodeEvictionRate 是在区域健康时,如果节点发生故障,每秒删除 Pod 的节点数。 |
SecondaryNodeEvictionRate [必需]float32 | secondaryNodeEvictionRate 是在区域不健康时,如果节点故障,每秒删除 Pod 的节点数。 |
NodeStartupGracePeriod [必需]meta/v1.Duration | nodeStartupGracePeriod 是在将节点标记为不健康之前允许启动节点无响应的时长。 |
NodeMonitorGracePeriod [必需]meta/v1.Duration | nodeMontiorGracePeriod 是在将运行中的节点标记为不健康之前允许其无响应的时长。 必须是 kubelet 的 nodeStatusUpdateFrequency 的 N 倍,其中 N 表示允许 kubelet 发布节点状态的重试次数。 |
PodEvictionTimeout [必需]meta/v1.Duration | podEvictionTimeout 为删除故障节点上的 Pod 的宽限时间。 |
LargeClusterSizeThreshold [必需]int32 | 对于规模小于或等于 largeClusterSizeThreshold 的集群,secondaryNodeEvictionRate 会被隐式覆盖,取值为 0。 |
UnhealthyZoneThreshold [必需]float32 | 当区域中至少有 unhealthyZoneThreshold(不少于 3 个)的节点处于 NotReady 状态时, nodeEvctionRate 和 secondaryNodeEvictionRate 两个属性的判定逻辑会将区域视为不健康。 |
PersistentVolumeBinderControllerConfiguration
出现在:
PersistentVolumeBinderControllerConfiguration 包含描述 PersistentVolumeBinderController 的元素。
字段 | 描述 |
---|---|
PVClaimBinderSyncPeriod [必需]meta/v1.Duration | pvClaimBinderSyncPeriod 用于同步 PV 和 PVC 的周期。 |
VolumeConfiguration [必需]VolumeConfiguration | volumeConfiguration 包含卷相关特性的配置。 |
PersistentVolumeRecyclerConfiguration
出现在:
PersistentVolumeRecyclerConfiguration 包含描述持久卷插件的元素。
字段 | 描述 |
---|---|
MaximumRetry [必需]int32 | maximumRetry 是当 PV 回收失败时,PV 回收器重试的次数。 |
MinimumTimeoutNFS [必需]int32 | minimumTimeoutNFS 是用于 NFS 回收器的,用于设置 Pod 的最小 ActiveDeadlineSeconds。 |
PodTemplateFilePathNFS [必需]string | podTemplateFilePathNFS 是一个 Pod 定义文件的路径,该文件将被用作 NFS PV 卷回收模板。 |
IncrementTimeoutNFS [必需]int32 | incrementTimeoutNFS 提供给 NFS 清理器 Pod 的设置值,数据卷每增加 1 GiB, 则需要向 Pod 中的 activeDeadlineSeconds 参数增加这里所给的秒数。 |
PodTemplateFilePathHostPath [必需]string | podTemplateFilePathHostPath 是一个 Pod 定义文件的路径,该文件将被作为 HostPath PV 卷回收模板。 此字段仅用于开发和测试场景,在多节点集群中无法正常工作。 |
MinimumTimeoutHostPath [必需]int32 | minimumTimeoutHostPath 是用于 HostPath 回收器 Pod 的 activeDeadlineSeconds 属性值下限。 此字段仅用于开发和测试场景,在多节点集群中无法正常工作。 |
IncrementTimeoutHostPath [必需]int32 | incrementTimeoutHostPath 是提供给 HostPath 清理器 Pod 的配置值, HostPath 卷的尺寸每增加 1 GiB,则需要为 Pod 的 activeDeadlineSeconds 属性增加这里所给的秒数。 回收器 Pod 的 activeDeadlineSeconds 属性值下限。 |
PodGCControllerConfiguration
出现在:
PodGCControllerConfiguration 包含描述 PodGCController 的元素。
字段 | 描述 |
---|---|
TerminatedPodGCThreshold [必需]int32 | terminatedPodGCThreshold 是提供给回收已终止 Pod 的垃圾收集器的, 所设置的数字是在垃圾收集器开始删除某 Pod 之前可以存在的、已终止 Pod 的个数。 如果 <= 0,则禁用已终止的 Pod 垃圾收集器。 |
ReplicaSetControllerConfiguration
出现在:
ReplicaSetControllerConfiguration 包含描述 ReplicaSetController 的元素。
字段 | 描述 |
---|---|
ConcurrentRSSyncs [必需]int32 | concurrentRSSyncs 是允许并发同步的 ReplicaSet 的数量。 数量越大意味着副本管理响应越快,但 CPU(和网络)负载也越高。 |
ReplicationControllerConfiguration
出现在:
ReplicationControllerConfiguration 包含描述 ReplicationController 的元素。
字段 | 描述 |
---|---|
ConcurrentRCSyncs [必需]int32 | concurrentRCSyncs 是允许并发同步的 ReplicationController 数量。 数量越大意味着副本管理响应越快,但 CPU(和网络)负载也越高。 |
ResourceQuotaControllerConfiguration
出现在:
ResourceQuotaControllerConfiguration 包含描述 ResourceQuotaController 的元素。
字段 | 描述 |
---|---|
ResourceQuotaSyncPeriod [必需]meta/v1.Duration | resourceQuotaSyncPeriod 是系统中 Quota 使用状态的同步周期。 |
ConcurrentResourceQuotaSyncs [必需]int32 | concurrentResourceQuotaSyncs 是允许并发同步的 ResourcQuota 数目。 数量越大意味着配额管理响应越快,但 CPU(和网络)负载也越高。 |
SAControllerConfiguration
出现在:
SAControllerConfiguration 包含描述 ServiceAccountController 的元素。
字段 | 描述 |
---|---|
ServiceAccountKeyFile [必需]string | serviceAccountKeyFile 是包含 PEM 编码的用于签署服务帐户令牌的 RSA 私钥的文件名。 |
ConcurrentSATokenSyncs [必需]int32 | concurrentSATokenSyncs 是将并发完成的服务帐户令牌同步操作的数量。 |
RootCAFile [必需]string | rootCAFile 是根证书颁发机构将被包含在 ServiceAccount 的令牌 Secret 中。 所提供的数据必须是一个有效的 PEM 编码的 CA 包。 |
StatefulSetControllerConfiguration
出现在:
StatefulSetControllerConfiguration 包含描述 StatefulSetController 的元素。
字段 | 描述 |
---|---|
ConcurrentStatefulSetSyncs [必需]int32 | concurrentStatefulSetSyncs 是允许并发同步的 StatefulSet 对象的数量。 数字越大意味着 StatefulSet 响应越快,但 CPU(和网络)负载也越高。 |
TTLAfterFinishedControllerConfiguration
出现在:
TTLAfterFinishedControllerConfiguration 包含描述 TTLAfterFinishedController 的元素。
字段 | 描述 |
---|---|
ConcurrentTTLSyncs [必需]int32 | concurrentTTLSyncs 是允许并发同步的 TTL-after-finished 收集器工作线程的数量。 |
ValidatingAdmissionPolicyStatusControllerConfiguration
出现在:
ValidatingAdmissionPolicyStatusControllerConfiguration 包含描述 ValidatingAdmissionPolicyStatusController 的元素。
字段 | 描述 |
---|---|
ConcurrentPolicySyncs [必需]int32 | ConcurrentPolicySyncs 是允许并发同步的策略对象的数量。 数字越大意味着类型检查越快,但 CPU(和网络)负载越高。 默认值为 5。 |
VolumeConfiguration
出现在:
VolumeConfiguration 包含所有用于配置各个卷插件的所有参数。 从这个配置中,控制器管理器可执行文件将创建许多 volume.VolumeConfig 的实例。 每个只包含该插件所需的配置,然后将其传递给相应的插件。 控制器管理器可执行文件是代码中唯一知道支持哪些插件以及每个插件对应哪些标志的部分。
字段 | 描述 |
---|---|
EnableHostPathProvisioning [必需]bool | enableHostPathProvisioning 在没有云驱动的情况下允许制备 HostPath PV。 此特性用来测试和开发 PV 卷制备特性。HostPath 配置完全不受支持,在多节点集群中无法工作, 除了测试或开发之外不应该用于任何其他用途。 |
EnableDynamicProvisioning [必需]bool | enableDynamicProvisioning 在支持动态配置的环境中运行时允许制备新卷。默认为 true。 |
PersistentVolumeRecyclerConfiguration [必需]PersistentVolumeRecyclerConfiguration | persistentVolumeRecyclerConfiguration 保存持久卷插件的配置。 |
FlexVolumePluginDir [必需]string | volumePluginDir 是一个完整路径,FlexVolume 插件在这一目录中搜索额外的第三方卷插件。 |
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 |
|
clientConnection [必需]ClientConnectionConfiguration |
|
logging [必需]LoggingConfiguration |
|
hostnameOverride [必需]string |
|
bindAddress [必需]string |
|
healthzBindAddress [必需]string |
|
metricsBindAddress [必需]string |
|
bindAddressHardFail [必需]bool |
|
enableProfiling [必需]bool |
|
showHiddenMetricsForVersion [必需]string |
|
mode [必需]ProxyMode |
|
iptables [必需]KubeProxyIPTablesConfiguration |
|
ipvs [必需]KubeProxyIPVSConfiguration |
|
nftables [必需]KubeProxyNFTablesConfiguration |
|
winkernel [必需]KubeProxyWinkernelConfiguration |
|
detectLocalMode [必需]LocalMode |
|
detectLocal [必需]DetectLocalConfiguration |
|
clusterCIDR [必需]string |
|
nodePortAddresses [必需][]string |
|
oomScoreAdj [必需]int32 |
|
conntrack [必需]KubeProxyConntrackConfiguration |
|
configSyncPeriod [必需]meta/v1.Duration |
|
portRange [必需]string |
|
windowsRunAsService [Required]bool | 如果为 |
DetectLocalConfiguration
出现在:
DetectLocalConfiguration 包含与 DetectLocalMode 选项相关的可选设置。
字段 | 描述 |
---|---|
bridgeInterface [必需]string |
|
interfaceNamePrefix [必需]string |
|
KubeProxyConntrackConfiguration
出现在:
KubeProxyConntrackConfiguration 包含为 Kubernetes 代理服务器提供的 conntrack 设置。
字段 | 描述 |
---|---|
maxPerCore [必需]int32 |
|
min [必需]int32 |
|
tcpEstablishedTimeout [必需]meta/v1.Duration |
|
tcpCloseWaitTimeout [必需]meta/v1.Duration |
|
tcpBeLiberal [必需]bool |
|
udpTimeout [必需]meta/v1.Duration |
|
udpStreamTimeout [必需]meta/v1.Duration |
|
KubeProxyIPTablesConfiguration
出现在:
KubeProxyIPTablesConfiguration 包含用于 Kubernetes 代理服务器的、与 iptables 相关的配置细节。
字段 | 描述 |
---|---|
masqueradeBit [必需]int32 |
|
masqueradeAll [必需]bool |
|
localhostNodePorts [必需]bool |
|
syncPeriod [必需]meta/v1.Duration |
|
minSyncPeriod [必需]meta/v1.Duration |
|
KubeProxyIPVSConfiguration
出现在:
KubeProxyIPVSConfiguration 包含用于 Kubernetes 代理服务器的、与 ipvs 相关的配置细节。
字段 | 描述 |
---|---|
syncPeriod [必需]meta/v1.Duration |
|
minSyncPeriod [必需]meta/v1.Duration |
|
scheduler [必需]string |
|
excludeCIDRs [必需][]string |
|
strictARP [必需]bool |
|
tcpTimeout [必需]meta/v1.Duration |
|
tcpFinTimeout [必需]meta/v1.Duration |
|
udpTimeout [必需]meta/v1.Duration |
|
KubeProxyNFTablesConfiguration
出现在:
KubeProxyNFTablesConfiguration 包含 Kubernetes 代理服务器的 nftables 相关配置详细信息。
Field | Description |
---|---|
masqueradeBit [必需]int32 |
|
masqueradeAll [必需]bool |
|
syncPeriod [必需]meta/v1.Duration |
|
minSyncPeriod [必需]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 配置 (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 |
|
13 - kubeadm 配置(v1beta3)
概述
v1beta3 包定义 v1beta3 版本的 kubeadm 配置文件格式。 此版本改进了 v1beta2 的格式,修复了一些小问题并添加了一些新的字段。
从 v1beta2 版本以来的变更列表:
- 已弃用的字段 "ClusterConfiguration.useHyperKubeImage" 现在被移除。 kubeadm 不再支持 hyperkube 镜像。
- "ClusterConfiguration.dns.type" 字段已经被移除,因为 CoreDNS 是 kubeadm 所支持的唯一 DNS 服务器类型。
- 保存 Secret 信息的字段现在包含了 "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-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/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 | 令牌的 ID。 |
- [必需]string | 令牌的私密数据。 |
ClusterConfiguration
ClusterConfiguration 包含一个 kubeadm 集群的集群范围配置信息。
字段 | 描述 |
---|---|
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 |
|
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]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 包含为不同日志格式提供的选项。
字段 | 描述 |
---|---|
text [必需]TextOptions | [Alpha] 文本包含用于记录 "text" 格式的选项。 仅当 LoggingAlphaOptions 特性门控被启用时可用。 |
json [必需]JSONOptions | [Alpha] |
JSONOptions
出现在:
JSONOptions 包含为 "json" 日志格式提供的选项。
字段 | 描述 |
---|---|
OutputRoutingOptions [必需]OutputRoutingOptions | (OutputRoutingOptions 的成员嵌入到此类型中。)
没有提供描述。 |
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 |
|
OutputRoutingOptions
OutputRoutingOptions 包含 "text" 和 "json" 支持的选项。
Field | 描述< |
---|---|
splitStream [必需]bool | [Alpha] SplitStream 将错误消息重定向到 stderr,而信息消息则转到 stdout,并进行缓冲。 默认是将两者都写入 stdout,而不进行缓冲。仅在 LoggingAlphaOptions 特性门控启用时可用。 |
infoBufferSize [必需]k8s.io/apimachinery/pkg/api/resource.QuantityValue | [Alpha] InfoBufferSize 设置使用分割流时信息流的大小。默认值为零,表示禁用缓冲。 仅在 LoggingAlphaOptions 特性门控启用时可用。 |
TextOptions
出现在:
TextOptions 包含用于记录 "text" 格式的选项。
Field | 描述 |
---|---|
OutputRoutingOptions [必需]OutputRoutingOptions | (OutputRoutingOptions 的成员嵌入到此类型中。)
未提供描述。 |
TimeOrMetaDuration
出现在:
TimeOrMetaDuration
仅出于向后兼容 flushFrequency
字段而存在,
新字段应使用
metav1.Duration
。
字段 | 描述 |
---|---|
Duration [必需]meta/v1.Duration |
|
- [必需]bool |
|
TracingConfiguration
出现在:
TracingConfiguration 为 OpenTelemetry 追踪客户端提供版本化的配置信息。
字段 | 描述 |
---|---|
endpoint string | 采集器的端点,此组件将向其报告追踪链路。 此连接不安全,目前不支持 TLS。推荐不设置,端点是 otlp grpc 默认值 localhost:4317。 |
samplingRatePerMillion int32 |
|
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 |
默认值:"" |
podLogsDir string | podLogsDir 是 kubelet 用于放置 Pod 日志文件的自定义根目录路径。 默认值:"/var/log/pods/" 注意:不建议使用临时文件夹作为日志目录,因为它可能会在许多地方引起意外行为。 |
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" |
imageMaximumGCAge meta/v1.Duration |
默认值:"0s"(已禁用) |
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" |
singleProcessOOMKill bool | 如果 |
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 |
默认值:nil |
evictionHard map[string]string |
默认值:
|
evictionSoft map[string]string |
默认值:nil |
evictionSoftGracePeriod map[string]string |
默认值:nil |
evictionPressureTransitionPeriod meta/v1.Duration |
默认值:"5m" |
evictionMaxPodGracePeriod int32 |
默认值: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" |
containerLogMaxWorkers int32 |
|
containerLogMonitorInterval meta/v1.Duration |
|
configMapAndSecretChangeDetectionStrategy ResourceChangeDetectionStrategy |
默认值:"Watch" |
systemReserved map[string]string |
目前仅支持 CPU 和内存。更多细节可参见 https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/reserve-compute-resources 默认值:Nil |
kubeReserved map[string]string |
默认值:Nil |
reservedSystemCPUs [必需]string |
|
showHiddenMetricsForVersion string |
默认值:"" |
systemReservedCgroup string |
默认值:"" |
kubeReservedCgroup string |
默认值:"" |
enforceNodeAllocatable []string | 此标志设置 kubelet 需要执行的各类节点可分配资源策略。此字段接受一组选项列表。
可接受的选项有 如果设置了 如果列表中包含 如果列表中包含 这个字段只有在 更多细节参阅节点可分配资源。 默认值:["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 |
crashLoopBackOff CrashLoopBackOffConfig |
|
reservedMemory []MemoryReservation |
默认值: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 中的值。 |
failCgroupV1 bool |
|
SerializedNodeConfigSource
SerializedNodeConfigSource 允许对 v1.NodeConfigSource
执行序列化操作。
这一类型供 kubelet 内部使用,以便跟踪动态配置的检查点。
此资源存在于 kubeletconfig API 组是因为它被当做是对 kubelet 的一种版本化输入。
字段 | 描述 |
---|---|
apiVersion string | kubelet.config.k8s.io/v1beta1 |
kind string | SerializedNodeConfigSource |
source core/v1.NodeConfigSource |
|
CrashLoopBackOffConfig
出现在:
字段 | 描述 |
---|---|
maxContainerRestartPeriod meta/v1.Duration |
|
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 编码的私钥。 |