Cluster
资源 ¶
Cluster
资源包含集群本身的规范。
可以在 Cluster 参考页面找到完整键列表。
在本页中,我们将详细介绍更重要的配置键。
可选附加组件的文档可以在 附加组件页面 上找到
api ¶
此对象配置我们如何公开 API
dns
将允许直接访问主实例,并配置 DNS 以直接指向主节点。loadBalancer
将在主节点前面配置一个负载均衡器,并将 DNS 配置为指向它。
DNS 示例
spec:
api:
dns: {}
在配置负载均衡器时,您还可以选择使用公共负载均衡器或内部 (仅限 VPC) 负载均衡器。type
字段应为 Public
或 Internal
。
此外,您可以通过设置 additionalSecurityGroups
将预先创建的附加安全组添加到负载均衡器。
spec:
api:
loadBalancer:
type: Public
additionalSecurityGroups:
- sg-xxxxxxxx
- sg-xxxxxxxx
此外,您可以通过设置其 idleTimeoutSeconds
来增加负载均衡器的空闲超时时间。默认空闲超时时间为 5 分钟,AWS 允许的最大值为 3600 秒 (60 分钟)。请注意,此值对于负载均衡器类别 Network
会被忽略。有关更多信息,请参阅 配置空闲超时时间。
spec:
api:
loadBalancer:
type: Public
idleTimeoutSeconds: 300
您可以使用有效的 SSL 证书为您的 API 服务器负载均衡器。目前,仅支持 AWS。
此外,您可以通过 sslPolicy
更改侦听器的 安全策略。目前,仅支持 AWS 网络负载均衡器。
请注意,当使用 sslCertificate
时,客户端证书身份验证(例如,使用通过 kOps export kubecfg
生成的凭据)将无法通过负载均衡器工作。从 kOps 1.19 开始,可以通过 --internal
标志创建绕过负载均衡器的 kubecfg
,用于 kops update cluster
或 kOps export kubecfg
。可能需要打开安全组以允许客户端访问主实例的端口 TCP/443,例如,通过使用主实例组上的 additionalSecurityGroups
字段。例如,在使用主实例组上的 additionalSecurityGroups
字段时。
spec:
api:
loadBalancer:
type: Public
sslCertificate: arn:aws:acm:<region>:<accountId>:certificate/<uuid>
sslPolicy: ELBSecurityPolicy-TLS-1-2-2017-01
仅限 Openstack 从 kOps 1.12.0 开始,可以通过设置 useForInternalApi: true
在内部使用负载均衡器。这将使 masterPublicName
指向负载均衡器。
spec:
api:
loadBalancer:
type: Internal
useForInternalApi: true
您还可以将 API 负载均衡器设置为跨区域
spec:
api:
loadBalancer:
crossZoneLoadBalancing: true
负载均衡器类别 ¶
仅限 AWS
引入 |
---|
kOps 1.19 |
您可以选择使用网络负载均衡器 (NLB) 或经典负载均衡器 (CLB)。class
字段应为 Network
(默认)或 Classic
(已弃用)。
注意:在现有集群中更改负载均衡器的类别对于控制平面而言是破坏性操作,必须手动删除旧负载均衡器。在主节点完成滚动更新之前,由于旧主节点的 TLS 证书包含旧负载均衡器的 IP 地址,因此对 apiserver 的新连接将失败。
spec:
api:
loadBalancer:
class : Network
type: Public
负载均衡器子网配置 ¶
仅限 AWS
默认情况下,kops 将尝试为每个可用区选择一个合适的子网,并将其用于 API 负载均衡器。根据 type
,kops 将从 Private
或 Public
子网中进行选择。如果此默认逻辑不适合您(例如,因为您对子网有更细粒度的分离),则可以显式配置要使用的子网
spec:
api:
loadBalancer:
type: Public
subnets:
- name: subnet-a
- name: subnet-b
- name: subnet-c
````
It is only allowed to add more subnets and forbidden to remove existing ones. This is due to limitations on AWS
ELBs and NLBs.
If the `type` is `Internal` and the `class` is `Network`, you can also specify a static private IPv4 address per subnet:
```yaml
spec:
api:
loadBalancer:
type: Internal
subnets:
- name: subnet-a
privateIPv4Address: 172.16.1.10
指定的 IPv4 地址必须是子网 CIDR 的一部分。它们在初始部署后不可更改。
如果 type
为 Public
且 class
为 Network
,您还可以指定一个弹性 IP 分配 ID 以按子网绑定一个固定的公共 IP 地址。请注意,仅测试了 IPv4 地址
spec:
api:
loadBalancer:
type: Public
subnets:
- name: utility-subnet-a
allocationId: eipalloc-222ghi789
指定的分配 ID 必须已经通过手动方式或外部基础设施代码(例如 Terraform)创建。您需要将负载均衡器放置在实用程序子网中,以实现外部连接。
如果您犯了错误或需要出于任何其他原因更改子网,目前您被迫手动删除底层的 ELB/NLB 并重新运行 kops update
。
etcdClusters ¶
默认 etcd 配置 ¶
kOps 将默认使用 TLS 默认使用 v3。etcd 配置和升级由 etcd-manager 处理。默认情况下,规范如下所示
etcdClusters:
- etcdMembers:
- instanceGroup: master0-az0
name: a-1
- instanceGroup: master1-az0
name: a-2
- instanceGroup: master0-az1
name: b-1
name: main
- etcdMembers:
- instanceGroup: master0-az0
name: a-1
- instanceGroup: master1-az0
name: a-2
- instanceGroup: master0-az1
name: b-1
name: events
kOps 使用的 etcd 版本遵循给定 kubernetes 版本的推荐 etcd 版本。可以通过将 version
键添加到每个 etcd 集群中来覆盖此版本。
默认情况下,为 etcd 集群创建的卷为 gp3
,每个卷为 20GB。卷大小、类型 (gp2
、gp3
、io1
、io2
)、iops(对于 io1
、io2
、gp3
)和吞吐量 (gp3
) 可以通过其参数配置。
从 kOps 1.12.0 开始,还可以使用 cpuRequest
和 memoryRequest
参数修改 etcd 集群成员的请求。
etcdClusters:
- etcdMembers:
- instanceGroup: master-us-east-1a
name: a
volumeType: gp3
volumeSize: 20
name: main
- etcdMembers:
- instanceGroup: master-us-east-1a
name: a
volumeType: io1
# WARNING: bear in mind that the Iops to volume size ratio has a maximum of 50 on AWS!
volumeIops: 100
volumeSize: 21
name: events
cpuRequest: 150m
memoryRequest: 512Mi
etcd 指标 ¶
引入 |
---|
kOps 1.18 |
您可以通过定义环境变量来公开 etcd 实例的 /metrics 端点并控制其类型(basic
或 extensive
)。
etcdClusters:
- etcdMembers:
- instanceGroup: master-us-east-1a
name: a
name: main
manager:
env:
- name: ETCD_LISTEN_METRICS_URLS
value: http://0.0.0.0:8081
- name: ETCD_METRICS
value: basic
注意:如果您运行多个 etcd 集群,则需要为每个集群在不同的端口上公开指标,因为 etcd 作为服务在主节点上运行。
etcd 备份间隔 ¶
引入 |
---|
kOps 1.24.1 |
您可以使用 backupInterval
参数设置备份之间的间隔。
etcdClusters:
- etcdMembers:
- instanceGroup: master-us-east-1a
name: a
name: main
manager:
backupInterval: 1h
etcd 备份保留 ¶
引入 |
---|
kOps 1.18 |
从 kOps 1.27 开始,默认 etcd 备份保留时间为 90 天。您可以使用 backupRetentionDays
参数调整保留时间。
etcdClusters:
- etcdMembers:
- instanceGroup: master-us-east-1a
name: a
name: main
manager:
backupRetentionDays: 30
对于较旧的 kOps 版本,您可以通过定义环境变量来设置每小时和每天备份的保留时间。
etcdClusters:
- etcdMembers:
- instanceGroup: master-us-east-1a
name: a
name: main
manager:
env:
- name: ETCD_MANAGER_HOURLY_BACKUPS_RETENTION
value: 7d
- name: ETCD_MANAGER_DAILY_BACKUPS_RETENTION
value: 1y
sshAccess ¶
此数组配置了能够 ssh 到节点的 CIDR。在 AWS 上,这体现在 nodes
和 master
安全组上的入站安全组规则中。
例如,使用此键将集群访问限制到办公室 IP 地址范围。
spec:
sshAccess:
- 12.34.56.78/32
引入 |
---|
kOps 1.23 |
在 AWS 上,您可以指定预先存在的 AWS 前缀列表 ID,而不是列出所有 CIDR。
kubernetesApiAccess ¶
此数组配置了能够访问 kubernetes API 的 CIDR。在 AWS 上,这体现在 ELB 或主安全组上的入站安全组规则中。
例如,使用此键将集群访问限制到办公室 IP 地址范围。
spec:
kubernetesApiAccess:
- 12.34.56.78/32
引入 |
---|
kOps 1.23 |
在 AWS 上,您可以指定预先存在的 AWS 前缀列表 ID,而不是列出所有 CIDR。
cluster.spec 子网键 ¶
id ¶
要在一个现有的 VPC 中共享的子网的 ID。
egress ¶
您现有 VPC 中的某个东西的资源标识符 (ID),您希望将其用作对外部世界的“出口”。
此功能最初设想允许重复使用 NAT 网关。在这种情况下,用法如下。尽管 NAT 网关是面向“公共”的资源,但在 Cluster spec 中,您必须在私有子网部分中指定它们。您可以将其理解为,您正在指定“出口”,即从该私有子网出发的默认路由。
spec:
subnets:
- cidr: 10.20.64.0/21
name: us-east-1a
egress: nat-987654321
type: Private
zone: us-east-1a
- cidr: 10.20.32.0/21
name: utility-us-east-1a
id: subnet-12345
type: Utility
zone: us-east-1a
如果您不想使用现有的 NAT 网关,但仍然希望使用预分配的弹性 IP,kOps 1.19.0 引入了将弹性 IP 指定为出口的可能性,kOps 将创建一个使用它的 NAT 网关。
spec:
subnets:
- cidr: 10.20.64.0/21
name: us-east-1a
egress: eipalloc-0123456789abcdef0
type: Private
zone: us-east-1a
从 kOps 1.20.0 开始,也支持指定现有的 AWS Transit 网关。
spec:
subnets:
- cidr: 10.20.64.0/21
name: us-east-1a
egress: tgw-0123456789abcdef0
type: Private
zone: us-east-1a
如果您不使用 NAT 网关或互联网网关,kOps 1.12.0 为出口引入了“External”标志,以强制 kOps 忽略子网的出口。当其他工具用于管理子网的出口(例如虚拟私有网关)时,这很有用。请注意,您的集群可能需要在创建时访问互联网,因此在初始化集群时必须提供出口。这旨在用于出口在 kOps 外部进行管理时,通常使用现有集群。
spec:
subnets:
- cidr: 10.20.64.0/21
name: us-east-1a
egress: External
type: Private
zone: us-east-1a
publicIP ¶
您希望附加到 NAT 网关的现有 EIP 的 IP。
spec:
subnets:
- cidr: 10.20.64.0/21
name: us-east-1a
publicIP: 203.93.148.142
type: Private
zone: us-east-1a
additionalRoutes ¶
引入 |
---|
kOps 1.24 |
在子网的路由表中添加路由。路由的目标可以是实例、对等连接、NAT 网关、Transit 网关、互联网网关或仅出口互联网网关。目前,只支持 AWS。
spec:
subnets:
- cidr: 10.20.64.0/21
name: us-east-1a
type: Private
zone: us-east-1a
additionalRoutes:
- cidr: 10.21.0.0/16
target: vpc-abcdef
kubeAPIServer ¶
此块包含 kube-apiserver
的配置。
Open ID Connect 令牌的 oidc 标志 ¶
在此处了解更多信息:https://kubernetes.ac.cn/docs/admin/authentication/#openid-connect-tokens
spec:
kubeAPIServer:
oidcIssuerURL: https://your-oidc-provider.svc.cluster.local
oidcClientID: kubernetes
oidcUsernameClaim: sub
oidcUsernamePrefix: "oidc:"
oidcGroupsClaim: user_roles
oidcGroupsPrefix: "oidc:"
oidcCAFile: /etc/kubernetes/ssl/kc-ca.pem
oidcRequiredClaim:
- "key=value"
审计日志记录 ¶
在此处了解更多信息:https://kubernetes.ac.cn/docs/tasks/debug-application-cluster/audit/
注意:从 kOps 1.26 开始,ControlPlane 作为主实例的角色使用。以前,主角色是 Master。
spec:
kubeAPIServer:
auditLogMaxAge: 10
auditLogMaxBackups: 1
auditLogMaxSize: 100
auditLogPath: /var/log/kube-apiserver-audit.log
auditPolicyFile: /etc/kubernetes/audit/policy-config.yaml
fileAssets:
- name: audit-policy-config
path: /etc/kubernetes/audit/policy-config.yaml
roles:
- ControlPlane
content: |
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: Metadata
注意:需要 auditPolicyFile。如果省略此标志,则不会记录任何事件。
注意:对于 kOps 1.22-1.24,请使用 auditPolicyFile: /srv/kubernetes/kube-apiserver/audit/policy-config.yaml
,因为 挂载路径已更改。
您可以使用 fileAssets 功能在主节点上推送高级审计策略文件。
示例策略文件可以在这里找到 这里
审计 Webhook 后端 ¶
Webhook 后端将审计事件发送到远程 API,该 API 假设与 kube-apiserver
公开相同的 API。
注意:从 kOps 1.26 开始,ControlPlane 作为主实例的角色使用。以前,主角色是 Master。
spec:
kubeAPIServer:
auditWebhookBatchMaxWait: 5s
auditWebhookConfigFile: /etc/kubernetes/audit/webhook-config.yaml
fileAssets:
- name: audit-webhook-config
path: /etc/kubernetes/audit/webhook-config.yaml
roles:
- ControlPlane
content: |
apiVersion: v1
kind: Config
clusters:
- name: server
cluster:
server: https://my-webhook-receiver
contexts:
- context:
cluster: server
user: ""
name: default-context
current-context: default-context
preferences: {}
users: []
注意:还需要审计日志记录配置。如果省略此配置,则不会发送任何事件。
最大飞行请求数 ¶
在给定时间内,飞行中的非突变请求的最大数量。当服务器超过此数量时,它会拒绝请求。零表示没有限制。(默认值为 400)
spec:
kubeAPIServer:
maxRequestsInflight: 1000
在给定时间内,飞行中的突变请求的最大数量。当服务器超过此数量时,它会拒绝请求。零表示没有限制。(默认值为 200)
spec:
kubeAPIServer:
maxMutatingRequestsInflight: 450
请求超时 ¶
引入 |
---|
kOps 1.19 |
处理程序必须保持请求打开的持续时间,然后再超时,并且可以被其他标志覆盖以用于特定类型的请求。请注意,您必须用零填充空的时间单位。(默认值为 1m0s)
spec:
kubeAPIServer:
requestTimeout: 3m0s
分析 ¶
引入 |
---|
kOps 1.18 |
通过 Web 界面进行分析 host:port/debug/pprof/
。(默认:true)
spec:
kubeAPIServer:
enableProfiling: false
runtimeConfig ¶
此处的键和值将转换为 kube-apiserver
的 --runtime-config
值,并用逗号分隔。
使用此方法启用 alpha 功能,例如
spec:
kubeAPIServer:
runtimeConfig:
batch/v2alpha1: "true"
apps/v1alpha1: "true"
将导致标志 --runtime-config=batch/v2alpha1=true,apps/v1alpha1=true
。请注意,kube-apiserver
接受 true
作为类似开关标志的值。
serviceNodePortRange ¶
此值作为 kube-apiserver
的 --service-node-port-range
传递。
spec:
kubeAPIServer:
serviceNodePortRange: 30000-33000
自定义 client-ca 文件 ¶
此值作为 kube-apiserver
的 --client-ca-file
传递。(默认:/srv/kubernetes/ca.crt
)
spec:
kubeAPIServer:
clientCAFile: /srv/kubernetes/client-ca.crt
要准备主节点上的自定义 client-ca 文件,用户可以使用 fileAssets 功能推送 client-ca 文件,或者将自定义的 client-ca 文件嵌入到主 AMI 中。
如果用户使用自定义的 client-ca 文件,则通常需要将 kubernetes CA (/srv/kubernetes/ca/crt
) 附加到 client-ca 文件的末尾。将 ca.crt 附加到自定义 client-ca 文件末尾的一种方法是编写一个 kop-hook 来执行附加逻辑。
Kops 有一个 CA 旋转 功能,它会刷新 Kubernetes 证书文件,包括 ca.crt。如果使用自定义的 client-ca 文件,当 kOps 证书旋转发生时,用户负责更新自定义 client-ca 文件中的 ca.crt。刷新 ca.crt 逻辑也可以通过编写 kops hook 来实现。
另请参阅 Kubernetes 证书
禁用基本身份验证 ¶
Kubernetes 1.19 中删除了对基本身份验证的支持。对于以前的 Kubernetes 版本,这将禁用在
spec:
kubeAPIServer:
disableBasicAuth: true
targetRamMb ¶
API 服务器的内存限制(以 MB 为单位)(用于配置缓存大小等)。
spec:
kubeAPIServer:
targetRamMb: 4096
eventTTL ¶
API 服务器保留事件的时长。请注意,您必须用零填充空的时间单位。
spec:
kubeAPIServer:
eventTTL: 03h0m0s
基于污点的驱逐 ¶
与基于污点的驱逐相关的参数有两个。这些参数指示 notReady:NoExecute
和 unreachable:NoExecute
的 tolerationSeconds
的默认值。
spec:
kubeAPIServer:
defaultNotReadyTolerationSeconds: 600
defaultUnreachableTolerationSeconds: 600
LogFormat ¶
在日志格式之间进行选择。允许的格式:“json”、“text”。默认:”text”。
spec:
kubeAPIServer:
logFormat: json
externalDns ¶
此块包含 external-DNS
提供程序的配置选项。
spec:
externalDns:
watchIngress: true
默认的 kOps 行为为 false。watchIngress: true
使用默认的 dns-controller 行为,该行为是监视 Ingress 控制器以进行更改。在某些情况下,设置此选项有可能会中断服务更新。
默认的 external-DNS 提供程序是 kOps dns-controller
。
您可以通过添加以下内容,将 external-dns 用作提供程序。
spec:
externalDns:
provider: external-dns
请注意,如果您安装了 dns-controller,则需要在使用新配置更新集群之前删除此部署。
kubelet ¶
此块包含 kubelet
的配置。请参阅 https://kubernetes.ac.cn/docs/admin/kubelet/
注意:如果相应的配置值可以为空,则可以在 spec 中将字段设置为为空,并将空字符串作为配置值传递。yaml spec: kubelet: resolvConf: ""
将导致构建标志 --resolv-conf=
。
禁用 CPU CFS 配额 ¶
要禁用对指定 CPU 限制的容器的 CPU CFS 配额强制执行(默认值为 true),我们必须在所有 kubelet 上将标志 --cpu-cfs-quota
设置为 false
。我们可以在 kubelet
spec 中的 cluster.yml 中指定它。
spec:
kubelet:
cpuCFSQuota: false
配置 CPU CFS 周期 ¶
配置 CPU CFS 配额周期值 (cpu.cfs_period_us)。示例
spec:
kubelet:
cpuCFSQuotaPeriod: "100ms"
此更改需要 CustomCPUCFSQuotaPeriod
功能网关。
启用自定义指标支持 ¶
要在 kubernetes 中使用自定义指标,如 自定义指标文档 所述,我们必须在所有 kubelet 上将标志 --enable-custom-metrics
设置为 true
。我们可以在 kubelet
spec 中的 cluster.yml 中指定它。
spec:
kubelet:
enableCustomMetrics: true
设置 kubelet CPU 管理策略 ¶
kOps 1.12.0 添加了对在 kubernetes 中启用 CPU 管理策略的支持,如 CPU 管理文档 所述,我们必须在所有 kubelet 上将标志 --cpu-manager-policy
设置为适当的值。这必须在 kubelet
spec 中的 cluster.yml 中指定。
spec:
kubelet:
cpuManagerPolicy: static
将 kubelet 配置与 Amazon VPC 后端一起设置 ¶
将 kubelet 配置与网络 Amazon VPC 后端一起设置需要在该块中也设置 cloudProvider: aws
设置。示例
spec:
kubelet:
enableCustomMetrics: true
cloudProvider: aws
...
...
cloudProvider: aws
...
...
networking:
amazonvpc: {}
配置 Flex Volume 插件目录 ¶
可以在 KubeletSpec 中提供一个可选的标志来设置卷插件目录(必须可用于读写操作),该目录还会附加到 Controller Manager 并在其中挂载。
kOps 将根据使用的操作系统为您设置它:- ContainerOS:/home/kubernetes/flexvolume/
- Flatcar:/var/lib/kubelet/volumeplugins/
- 默认(与上游 k8s 一致):/usr/libexec/kubernetes/kubelet-plugins/volume/exec/
如果您希望覆盖此值,可以通过对 kubelet spec 添加以下内容来实现。
spec:
kubelet:
volumePluginDirectory: /provide/a/writable/path/here
保护内核默认值 ¶
引入 | 最小 K8s 版本 |
---|---|
kOps 1.18 | k8s 1.4 |
内核调优的默认 kubelet 行为。如果设置,如果任何内核可调参数与 kubelet 默认值不同,kubelet 将会报错。
spec:
kubelet:
protectKernelDefaults: true
清理间隔 ¶
引入 | 最小 K8s 版本 |
---|---|
kOps 1.19 | k8s 1.2 |
容器清理之间的间隔默认为 10s
。这对于某些用例来说可能太小或太大,可以通过以下添加到 kubelet 规范的方式修改。
spec:
kubelet:
housekeepingInterval: 30s
Pod PID 限制 ¶
引入 | 最小 K8s 版本 |
---|---|
kOps 1.22 | k8s 1.20 |
podPidsLimit
允许配置任何 Pod 中最大的 PID(进程 ID)数量。在 Kubernetes 文档中了解更多。
spec:
kubelet:
podPidsLimit: 1024
事件 QPS ¶
引入 |
---|
kOps 1.19 |
kubelet 中每秒事件创建的限制。默认值为 0
,表示无限制的事件创建。
spec:
kubelet:
eventQPS: 0
事件突发 ¶
引入 |
---|
kOps 1.19 |
突发事件记录的最大大小,暂时允许事件记录突发到这个数量,但仍然不超过 EventQPS。仅当 EventQPS > 0 时使用。
spec:
kubelet:
eventBurst: 10
日志格式 ¶
在日志格式之间进行选择。允许的格式:“json”、“text”。默认:”text”。
spec:
kubelet:
logFormat: json
优雅节点关闭 ¶
引入 | 最小 K8s 版本 |
---|---|
kOps 1.23 | k8s 1.21 |
优雅节点关闭允许 kubelet 阻止实例关闭,直到 Pod 安全地终止或超时。
对于除 amazonaws
之外的所有 CNI,kOps 将尝试添加一个 30 秒的超时时间,其中前 20 秒保留给普通 Pod,最后 10 秒保留给关键 Pod。在使用 amazonaws
时,此功能被禁用,因为它会导致ENI 泄漏。
此配置可以如下更改
spec:
kubelet:
shutdownGracePeriod: 60s
shutdownGracePeriodCriticalPods: 20s
注意,Kubelet 无法在 logind 配置了低于 shutdownGracePeriod
的 InhibitDelayMaxSeconds
的系统上安装关闭抑制器。在 Ubuntu 上,此设置是 30 秒。
Seccomp 默认值 ¶
SeccompDefault 允许对所有工作负载使用 RuntimeDefault
作为默认的 seccomp 配置文件。(默认:false)
注意,启用该功能需要一个特性门,该功能是使用 kubelet 配置开启的。
spec:
kubelet:
featureGates:
SeccompDefault: "true"
seccompDefault: true
kubeScheduler ¶
此块包含 kube-scheduler
的配置。请参见 https://kubernetes.ac.cn/docs/admin/kube-scheduler/
spec:
kubeScheduler:
usePolicyConfigMap: true
enableProfiling: false
将使 kube-scheduler 使用 kube-system 命名空间中 configmap "scheduler-policy" 中的调度程序策略。
日志格式 ¶
在日志格式之间进行选择。允许的格式:“json”、“text”。默认:”text”。
spec:
kubeScheduler:
logFormat: json
kubeDNS ¶
此块包含 CoreDNS 的配置。
对于 Kubernetes 版本 >= 1.20,CoreDNS
将被安装为默认 DNS 服务器。
spec:
kubeDNS:
provider: CoreDNS
spec:
kubeDNS:
指定 KubeDNS 将安装 kube-dns 作为默认的服务发现,而不是 CoreDNS。
spec:
kubeDNS:
provider: KubeDNS
如果您使用 CoreDNS 并想使用完全自定义的 CoreFile,可以通过指定文件来实现。这将不适用于与默认 CoreFile 交互的任何其他选项。您还可以覆盖用于使用不同注册表或版本的 CoreDNS 镜像的版本,方法是指定 CoreDNSImage
。
注意:如果您使用此功能,则需要格外注意 CoreDNS 版本的变化,以便了解正在使用的插件的功能变化等。
spec:
kubeDNS:
provider: CoreDNS
coreDNSImage: mirror.registry.local/mirrors/coredns:1.3.1
externalCoreFile: |
amazonaws.com:53 {
errors
log . {
class denial error
}
health :8084
prometheus :9153
proxy . 169.254.169.253 {
}
cache 30
}
.:53 {
errors
health :8080
autopath @kubernetes
kubernetes cluster.local {
pods verified
upstream 169.254.169.253
fallthrough in-addr.arpa ip6.arpa
}
prometheus :9153
proxy . 169.254.169.253
cache 300
}
注意:如果您正在升级到 CoreDNS,kube-dns 将保留在原位,必须手动删除。您可以将 kube-system
命名空间中的 kube-dns 和 kube-dns-autoscaler 部署缩放到 0 作为起点,然后删除这两个部署。kube-dns
服务本身应保留在原位,因为这会保留 ClusterIP 并消除集群中出现 DNS 故障的可能性。
对于更大的集群,您可能需要设置自定义资源请求和限制。对于 CoreDNS 提供程序,您可以设置
- 内存限制
- CPU 请求
- 内存请求
这将覆盖内存的默认限制值为 170Mi,内存和 CPU 的默认请求值分别为 70Mi 和 100m。
示例
kubeDNS:
memoryLimit: 2Gi
cpuRequest: 300m
memoryRequest: 700Mi
kubeControllerManager ¶
此块包含 controller-manager
的配置。
spec:
kubeControllerManager:
horizontalPodAutoscalerSyncPeriod: 15s
horizontalPodAutoscalerDownscaleDelay: 5m0s
horizontalPodAutoscalerDownscaleStabilization: 5m
horizontalPodAutoscalerUpscaleDelay: 3m0s
horizontalPodAutoscalerInitialReadinessDelay: 30s
horizontalPodAutoscalerCpuInitializationPeriod: 5m
horizontalPodAutoscalerTolerance: 0.1
experimentalClusterSigningDuration: 8760h0m0s
enableProfiling: false
有关 horizontalPodAutoscaler
标志的更多详细信息,请参见 官方 HPA 文档 和 kOps 设置指南。
日志格式 ¶
在日志格式之间进行选择。允许的格式:“json”、“text”。默认:”text”。
spec:
kubeControllerManager:
logFormat: json
特性门 ¶
特性门可以在 kubelet 上配置。
spec:
kubelet:
featureGates:
Accelerators: "true"
AllowExtTrafficLocalEndpoints: "false"
以上操作将导致将标志 --feature-gates=Accelerators=true,AllowExtTrafficLocalEndpoints=false
添加到 kubelet。
某些特性门还需要其他组件上的 featureGates
设置。例如,PodShareProcessNamespace
需要在 API 服务器上也启用特性门
spec:
kubelet:
featureGates:
PodShareProcessNamespace: "true"
kubeAPIServer:
featureGates:
PodShareProcessNamespace: "true"
有关更多信息,请参见 特性门文档
计算资源预留 ¶
在节点具有 32Gi 内存、16 个 CPU 和 100Gi 瞬时存储的场景中,资源预留可以按照以下示例设置
spec:
kubelet:
kubeReserved:
cpu: "1"
memory: "2Gi"
ephemeral-storage: "1Gi"
kubeReservedCgroup: "/kube-reserved"
kubeletCgroups: "/kube-reserved"
runtimeCgroups: "/kube-reserved"
systemReserved:
cpu: "500m"
memory: "1Gi"
ephemeral-storage: "1Gi"
systemReservedCgroup: "/system-reserved"
enforceNodeAllocatable: "pods,system-reserved,kube-reserved"
以上操作将导致将标志 --kube-reserved=cpu=1,memory=2Gi,ephemeral-storage=1Gi --kube-reserved-cgroup=/kube-reserved --kubelet-cgroups=/kube-reserved --runtime-cgroups=/kube-reserved --system-reserved=cpu=500m,memory=1Gi,ephemeral-storage=1Gi --system-reserved-cgroup=/system-reserved --enforce-node-allocatable=pods,system-reserved,kube-reserved
添加到 kubelet。
networkID ¶
在 AWS 上,这是创建集群所在的 VPC 的 ID。如果从头开始创建集群,则不需要在创建时指定此字段;kops
将为您创建一个 VPC
。
spec:
networkID: vpc-abcdefg1
有关在现有 VPC 中运行的更多信息,请参见此处。
钩子 ¶
钩子允许在集群中每个节点上安装 Kubernetes 之前执行操作。例如,您可以安装 Nvidia 驱动程序以使用 GPU。这些钩子可以是容器镜像或清单文件(systemd 单位)的形式。钩子可以放置在集群规范中,这意味着它们将在全局部署,或者可以放置在实例组规范中。注意:实例组上的服务名称与集群规范重叠将优先使用,并忽略集群规范定义,即,如果您在集群中有单元文件 'myunit.service',然后在实例组中有一个,则只应用实例组。
当使用 manifest
字段创建 systemd 单位钩子时,钩子系统将为您构建一个 systemd 单位文件。它创建 [Unit]
部分,添加自动描述并根据 before
和 requires
字段设置 Before
和 Requires
值。manifest
字段的值用作单元文件的 [Service]
部分。要覆盖此行为,并改为自行指定整个单元文件,您可以指定 useRawManifest: true
。在这种情况下,manifest
字段的内容将用作 systemd 单位,不会修改。before
和 requires
字段不能与 useRawManifest
一起使用。
spec:
# many sections removed
# run a container as a hook
hooks:
- before:
- some_service.service
requires:
- docker.service
execContainer:
image: kopeio/nvidia-bootstrap:1.6
# these are added as -e to the docker environment
environment:
AWS_REGION: eu-west-1
SOME_VAR: SOME_VALUE
# or construct a systemd unit
hooks:
- name: iptable-restore.service
roles:
- Node
- Master
before:
- kubelet.service
manifest: |
EnvironmentFile=/etc/environment
# do some stuff
# or use a raw systemd unit
hooks:
- name: iptable-restore.service
roles:
- Node
- Master
useRawManifest: true
manifest: |
[Unit]
Description=Restore iptables rules
Before=kubelet.service
[Service]
EnvironmentFile=/etc/environment
# do some stuff
# or disable a systemd unit
hooks:
- name: update-engine.service
disabled: true
# or you could wrap this into a full unit
hooks:
- name: disable-update-engine.service
before:
- update-engine.service
manifest: |
Type=oneshot
ExecStart=/usr/bin/systemctl stop update-engine.service
安装 Ceph
spec:
# many sections removed
hooks:
- execContainer:
command:
- sh
- -c
- chroot /rootfs apt-get update && chroot /rootfs apt-get install -y ceph-common
image: busybox
安装 cachefilesd
spec:
# many sections removed
hooks:
- before:
- kubelet.service
manifest: |
Type=oneshot
ExecStart=/sbin/modprobe cachefiles
name: cachefiles.service
- execContainer:
command:
- sh
- -c
- chroot /rootfs apt-get update && chroot /rootfs apt-get install -y cachefilesd
&& chroot /rootfs sed -i s/#RUN/RUN/ /etc/default/cachefilesd && chroot /rootfs
service cachefilesd restart
image: busybox
文件资产 ¶
FileAssets 允许您将内联文件内容放置在集群和 实例组 规范中。这对于部署 Kubernetes 组件所需的附加文件很有用,例如审计日志记录或准入控制器配置。
spec:
fileAssets:
- name: iptable-restore
# Note if path is not specified, the default is /srv/kubernetes/assets/<name>
path: /var/lib/iptables/rules-save
# Note if roles are not specified, the default is all roles. As of kOps 1.26, ControlPlane is being used as a role for the master instances. Previously, the master role was Master.
roles: [ControlPlane,Node,Bastion] # a list of roles to apply the asset to
content: |
some file content
模式 ¶
引入 |
---|
kOps 1.24 |
可选地,mode
允许您指定文件的模式和权限位。
注意:如果未指定,则默认为 "0440"
,这与 kOps 的旧版本的行为相匹配。
spec:
fileAssets:
- name: my-script
path: /usr/local/bin/my-script
mode: "0550"
content: |
#! /usr/bin/env bash
...
云配置 ¶
disableSecurityGroupIngress ¶
如果您使用 aws 作为 cloudProvider
,则可以禁用 ELB 安全组对 Kubernetes 节点安全组的授权。换句话说,它不会添加安全组规则。这对于避免 AWS 限制很有用:每个安全组 50 条规则。
spec:
cloudConfig:
disableSecurityGroupIngress: true
elbSecurityGroup ¶
为了避免为每个 elb 创建安全组,您可以指定安全组 ID,该 ID 将分配给您的负载均衡器。它必须是安全组 ID,而不是名称。api.loadBalancer.additionalSecurityGroups
必须为空,因为 Kubernetes 将根据服务文件中指定的端口添加规则。这对于避免 AWS 限制很有用:每个区域 500 个安全组,每个安全组 50 条规则。
spec:
cloudConfig:
elbSecurityGroup: sg-123445678
manageStorageClasses ¶
引入 |
---|
kOps 1.20 |
默认情况下,kops 将使用某些特定于安装集群的云提供商的意见性设置创建 StorageClass
资源。其中一个存储类将被定义为默认值,应用注释 storageclass.kubernetes.io/is-default-class: "true"
。这可能并不总是理想的行为,一些集群管理员更愿意对存储类有更多控制,并在 kops 之外管理它们。当设置为 false
时,kOps 将不再创建任何 StorageClass
对象。kops 在过去创建的任何此类对象将保留原样,kops 不会再根据未来的更改对它们进行协调。
现有的 spec.cloudConfig.openstack.blockStorage.createStorageClass
字段仍然保留。但是,如果这两个字段(该字段和新的 spec.cloudConfig.manageStorageClasses
字段)都被填充,则它们必须一致:全局禁用 StorageClass
对象的管理但为 OpenStack 启用它们,以及全局启用管理但为 OpenStack 禁用它们,这两种情况都是无效的。
spec:
cloudConfig:
manageStorageClasses: false
containerRuntime ¶
引入 | 最小 K8s 版本 |
---|---|
kOps 1.18 | k8s 1.11 |
从 Kubernetes 1.20 开始,默认的 容器运行时 是 containerd。以前,默认的容器运行时是 Docker。
Docker 仍然可以在 Kubernetes 1.20+ 中用作容器运行时,但请注意,Kubernetes 正在弃用对其的支持,并将从 Kubernetes 1.22 中删除。
spec:
containerRuntime: containerd
containerd ¶
配置 ¶
可以覆盖集群中所有节点的 containerd 守护进程选项。请参见 API 文档,了解完整的选项列表。覆盖 containerd 的配置必须谨慎进行,因为默认配置可能会随着新版本的发布而更改,并可能导致不兼容性。
spec:
containerd:
version: 1.4.4
logLevel: info
configOverride: ""
自定义包 ¶
kOps 使用 .tar.gz
包在任何支持的操作系统上安装 containerd。通过指定其 URL 和 sha256,这使得使用自定义构建或预发布包变得容易。
spec:
containerd:
packages:
urlAmd64: https://github.com/containerd/containerd/releases/download/v1.4.4/cri-containerd-cni-1.4.4-linux-amd64.tar.gz
hashAmd64: 96641849cb78a0a119223a427dfdc1ade88412ef791a14193212c8c8e29d447b
自定义包的格式必须与官方包相同
tar tf cri-containerd-cni-1.4.4-linux-amd64.tar.gz
usr/local/bin/containerd
usr/local/bin/containerd-shim
usr/local/bin/containerd-shim-runc-v1
usr/local/bin/containerd-shim-runc-v2
usr/local/bin/crictl
usr/local/bin/critest
usr/local/bin/ctr
usr/local/sbin/runc
Runc 版本和包 ¶
引入 |
---|
kOps 1.24.2 |
kOps 使用来自 https://github.com/opencontainers/runc 的二进制文件在任何支持的操作系统上安装 runc。这使得指定所需的发布版本变得容易。
spec:
containerd:
runc:
version: 1.1.2
它还允许使用比 kOps 二进制文件更新的版本、预发布包,甚至自定义构建,方法是指定其 URL 和 sha256。
spec:
containerd:
runc:
version: 1.100.0
packages:
urlAmd64: https://cdn.example.com/k8s/runc/releases/download/v1.100.0/runc.amd64
hashAmd64: ab1c67fbcbdddbe481e48a55cf0ef9a86b38b166b5079e0010737fd87d7454bb
注册表镜像 ¶
引入 |
---|
kOps 1.19 |
如果您运行多个实例,每次实例拉取主机上不存在的镜像时,它都会从互联网获取。通过缓存这些镜像,您可以将流量保留在本地网络内,避免出口带宽使用。
有关更多信息,请参阅 镜像仓库 文档。
spec:
containerd:
registryMirrors:
docker.io:
- https://registry-1.docker.io
"*":
- http://HostIP2:Port2
NRI 配置 ¶
使用 kOps,您可以在 containerd 中激活 节点资源接口 (NRI) 功能。重要的是,您至少需要 1.7.0 或更高版本的 containerd。kOps 中可用的 containerd NRI 参数包括:enabled
、pluginRegistrationTimeout
和 pluginRequestTimeout
。默认情况下,kOps 中的 NRI 选项未设置,这意味着我们依赖 containerd 的默认行为(即禁用)。
spec:
containerd:
version: 1.7.0
nri:
# Enable NRI support in containerd.
enabled: true
# pluginRegistrationTimeout is the timeout for a plugin to register after connection.
pluginRegistrationTimeout: "5s"
# pluginRequestTimeout is the timeout for a plugin to handle an event/request.
pluginRequestTimeout: "2s"
如果您禁用了 NRI(即 nri.enabled = false
),请注意 pluginRegistrationTimeout
和 pluginRequestTimeout
的设置将不会生效。这些设置仅在启用 NRI 时适用。启用 NRI 而不为 pluginRegistrationTimeout
和 pluginRequestTimeout
指定自定义值是有效的配置,因为这些字段将继承 containerd 的默认值。如果您需要配置其他 NRI 参数,可以使用 configOverride
提供完整的 containerd 配置。
sshKeyName ¶
在某些情况下,您可能希望使用现有的 AWS SSH 密钥,而不是允许 kOps 创建新的密钥。提供 AWS 中已存在的密钥的名称是 --ssh-public-key
的替代方法。
spec:
sshKeyName: myexistingkey
如果您想在没有 SSH 密钥的情况下创建实例,可以将其设置为一个空字符串。
spec:
sshKeyName: ""
useHostCertificates ¶
指向云 API 的自签名证书。在某些情况下,云 API 确实具有自签名证书。
spec:
useHostCertificates: true
可选步骤:将根证书添加到实例组的根 CA 捆绑包 ¶
additionalUserData:
- name: cacert.sh
type: text/x-shellscript
content: |
#!/bin/sh
cat > /usr/local/share/ca-certificates/mycert.crt <<EOF
-----BEGIN CERTIFICATE-----
snip
-----END CERTIFICATE-----
EOF
update-ca-certificates
注意:update-ca-certificates
是 debian/ubuntu 的命令。该命令根据您的操作系统而不同。
target ¶
在某些用例中,您可能希望使用额外选项来增强目标输出。target
支持您可以使用的一小部分选项。目前只有 Terraform 目标支持此功能,但如果出现其他用例,kOps 最终可能会支持更多。
spec:
target:
terraform:
providerExtraConfig:
alias: foo
assets ¶
Assets 定义了检索静态文件和容器的备用位置。
containerRegistry ¶
容器仓库使 kOps/Kubernetes 能够从托管仓库拉取容器。当无法从互联网拉取容器时,这很有用,例如,因为部署是离线/受互联网限制,或者因为部署的工件有特殊要求,例如,容器的审计。
有关用例示例,请参阅 如何在 AWS 中国区域使用 kOps
spec:
assets:
containerRegistry: example.com/registry
containerProxy ¶
容器代理旨在充当 拉取通过缓存 用于 Docker 容器资产。基本上,它的作用是重新映射 Kubernetes 镜像 URL 以指向您的缓存,以便 Docker 守护程序将从该位置拉取镜像。例如,如果将 containerProxy 设置为 proxy.example.com
,则将从 proxy.example.com/kube-apiserver
而不是 k8s.gcr.io/kube-apiserver
拉取镜像 k8s.gcr.io/kube-apiserver
。请注意,您使用的代理必须支持此功能才能用于私有仓库。
spec:
assets:
containerProxy: proxy.example.com
sysctlParameters ¶
引入 |
---|
kOps 1.17 |
要将自定义内核运行时参数添加到群集中的所有实例组,请将 sysctlParameters
字段指定为字符串数组。每个字符串必须采用 variable=value
的形式,就像它在 sysctl.conf 中出现一样(另请参阅 sysctl(8)
手册页)。
您也可以在 实例组 上使用 sysctlParameters
字段,为每个实例组指定不同的参数。
与简单的文件资产不同,以这种方式指定内核运行时参数将自动正确调用 sysctl --system
以便您应用这些参数。
例如
spec:
sysctlParameters:
- fs.pipe-user-pages-soft=524288
- net.ipv4.tcp_keepalive_time=200
最终将在群集的所有主节点和节点上的一个 drop-in 文件中显示。
cgroupDriver ¶
从 Kubernetes 1.20 开始,kOps 将默认将 kubelet 和容器运行时的 cgroup 驱动程序设置为使用 systemd 作为默认的 cgroup 驱动程序,而不是 cgroup fs。
确保 kubelet 和容器运行时使用相同的 cgroup 驱动程序非常重要。以下是一些示例,展示了如何设置 kubelet 和容器运行时的 cgroup 驱动程序。
将 kubelet 设置为使用 cgroupfs
spec:
kubelet:
cgroupDriver: cgroupfs
将 Docker 设置为使用 cgroupfs
spec:
docker:
execOpt:
- native.cgroupdriver=cgroupfs
在 containerd 的情况下,cgroup-driver 依赖于 kubelet 的 cgroup 驱动程序。要使用 cgroupfs,只需更新 kubelet 的 cgroupDriver 以使用 cgroupfs 即可。
NTP ¶
可以通过将 managed
设置为 false
来跳过 NTP 的安装和配置。
spec:
ntp:
managed: false
服务帐户发行者发现和适用于服务帐户的 AWS IAM 角色 (IRSA) ¶
引入 |
---|
kOps 1.21 |
警告:在现有群集上启用以下配置可能会造成中断,因为控制平面会使用不同的发行者配置服务帐户预配令牌。症状是 Pod 无法对 Kubernetes API 进行身份验证。要解决此问题,请删除群集中存在的服务帐户令牌密钥,并杀死所有无法进行身份验证的 Pod。
注意:您可以按照 此处 文档中所述的步骤的变体来在现有群集上启用 IRSA,而不会造成中断。
kOps 可以发布 Kubernetes 服务帐户令牌发行者,并配置 AWS 以信任它来对 Kubernetes 服务帐户进行身份验证
spec:
serviceAccountIssuerDiscovery:
discoveryStore: s3://publicly-readable-store
enableAWSOIDCProvider: true
discoveryStore
选项会导致 kOps 将与 OIDC 兼容的发现文档发布到对象存储桶(例如 S3 或 GCS)中的路径。这通常与状态存储桶不同。kOps 将自动配置 spec.kubeAPIServer.serviceAccountIssuer
,并将默认的 spec.kubeAPIServer.serviceAccountJWKSURI
设置为相应的 HTTPS URL。
enableAWSOIDCProvider
会配置 AWS 以信任服务帐户发行者来对适用于服务帐户的 IAM 角色 (IRSA) 的服务帐户进行身份验证。为了使此功能正常工作,服务帐户发行者发现 URL 必须是公开可读的。
附加组件的 IAM 角色 ¶
大多数与 AWS API 交互的 kOps 附加组件可以使用专用的 IAM 角色。要启用此功能,请添加以下内容
spec:
iam:
useServiceAccountExternalPermissions: true
用户管理的服务帐户的 IAM 角色 ¶
kOps 可以预配 AWS 权限供任意服务帐户使用
spec:
iam:
serviceAccountExternalPermissions:
- name: someServiceAccount
namespace: someNamespace
aws:
policyARNs:
- arn:aws:iam::000000000000:policy/somePolicy
- name: anotherServiceAccount
namespace: anotherNamespace
aws:
inlinePolicy: |-
[
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
}
]
要配置 Pod 以假定给定的 IAM 角色,请启用 Pod 身份 Webhook。没有此 Webhook,您需要自己修改 Pod 规范,以便您的 Pod 假定定义的角色。
API 更改 ¶
kOps 正在更新 v1alpha2
API 到一个更新的版本。该新 API 仍在开发中,但 API 的内部形式和验证错误消息使用新的字段名。下表跟踪了这些更改,不包括不再使用的字段的删除。
v1alpha2 字段 | 新字段 |
---|---|
additionalNetworkCIDRs | networking.additionalNetworkCIDRs |
additionalSans | api.additionalSANs |
api.loadBalancer.subnets.allocationId | api.loadBalancer.subnets.allocationID |
api.loadBalancer.useForInternalApi | api.loadBalancer.useForInternalAPI |
awsLoadBalancerController | cloudProvider.aws.loadBalancerController |
cloudConfig.awsEBSCSIDriver | cloudProvider.aws.ebsCSIDriver |
cloudConfig.azure | cloudProvider.azure |
cloudConfig.azure.subscriptionId | cloudProvider.azure.subscriptionID |
cloudConfig.azure.tenantId | cloudProvider.azure.tenantID |
cloudConfig.gcpPDCSIDriver | cloudProvider.gce.pdCSIDriver |
cloudConfig.disableSecurityGroupIngress | cloudProvider.aws.disableSecurityGroupIngress |
cloudConfig.elbSecurityGroup | cloudProvider.aws.elbSecurityGroup |
cloudConfig.gceServiceAccount | cloudProvider.gce.serviceAccount |
cloudConfig.nodeIPFamilies | cloudProvider.aws.nodeIPFamilies |
cloudConfig.openstack | cloudProvider.openstack |
cloudConfig.spotinstOrientation | cloudProvider.aws.spotinstOrientation |
cloudConfig.spotinstProduct | cloudProvider.aws.spotinstProduct |
cloudProvider (string) | cloudProvider (map) |
configBase | configStore.base |
DisableSubnetTags | tagSubnets (值反转) |
egressProxy | networking.egressProxy |
etcdClusters[*].etcdMembers[*].kmsKeyId | etcdClusters[*].etcdMembers[*].kmsKeyID |
etcdClusters[*].etcdMembers[*].volumeIops | etcdClusters[*].etcdMembers[*].volumeIOPS |
externalDns | externalDNS |
externalDns.disable: true | externalDNS.provider: none |
hooks[*].disabled | hooks[*].enabled (值反转) |
isolateMasters | networking.isolateControlPlane |
keyStore | configStore.keypairs |
kubeAPIServer.authorizationRbacSuperUser | kubeAPIServer.authorizationRBACSuperUser |
kubeAPIServer.authorizationWebhookCacheAuthorizedTtl | kubeAPIServer.authorizationWebhookCacheAuthorizedTTL |
kubeAPIServer.authorizationWebhookCacheUnauthorizedTtl | kubeAPIServer.authorizationWebhookCacheUnauthorizedTTL |
kubeAPIServer.etcdCaFile | kubeAPIServer.etcdCAFile |
kubeAPIServer.oidcClientID | authentication.oidc.clientID |
kubeAPIServer.oidcGroupsPrefix | authentication.oidc.groupsPrefix |
kubeAPIServer.oidcIssuerURL | authentication.oidc.issuerURL |
kubeAPIServer.oidcRequiredClaim (list) | authentication.oidc.oidcRequiredClaims (map) |
kubeAPIServer.oidcUsernameClaim | authentication.oidc.usernameClaim |
kubeAPIServer.oidcUsernamePrefix | authentication.oidc.usernamePrefix |
kubeAPIServer.targetRamMb | kubeAPIServer.targetRamMB |
kubeControllerManager.concurrentRcSyncs | kubeControllerManager.concurrentRCSyncs |
kubelet.authenticationTokenWebhookCacheTtl | kubelet.authenticationTokenWebhookCacheTTL |
kubelet.clientCaFile | kubelet.clientCAFile |
kubeProxy.ipvsExcludeCidrs | kubeProxy.ipvsExcludeCIDRs |
kubernetesApiAccess | api.access |
masterKubelet | controlPlaneKubelet |
masterKubelet.authenticationTokenWebhookCacheTtl | controlPlaneKubelet.authenticationTokenWebhookCacheTTL |
masterKubelet.clientCaFile | controlPlaneKubelet.clientCAFile |
masterPublicName | api.publicName |
networkCIDR | networking.networkCIDR |
networkID | networking.networkID |
networking.amazonvpc | networking.amazonVPC |
networking.amazonvpc.imageName | networking.amazonVPC.image |
networking.amazonvpc.initImageName | networking.amazonVPC.initImage |
networking.canal.disableFlannelForwardRules | networking.canal.flanneldIptablesForwardRules (值反转) |
networking.cilium.disableMasquerade | networking.cilium.masquerade (值反转) |
networking.cilium.IPTablesRulesNoinstall | networking.cilium.installIptablesRules (值反转) |
networking.cilium.toFqdnsDnsRejectResponseCode | networking.cilium.toFQDNsDNSRejectResponseCode |
networking.cilium.toFqdnsEnablePoller | networking.cilium.toFQDNsEnablePoller |
networking.gce | networking.gcp |
networking.kuberouter | networking.kubeRouter |
nodeTerminationHandler | cloudProvider.aws.nodeTerminationHandler |
nonMasqueradeCIDR | networking.nonMasqueradeCIDR |
podCIDR | networking.podCIDR |
podIdentityWebhook | cloudProvider.aws.podIdentityWebhook |
project | cloudProvider.gce.project |
secretStore | configStore.secrets |
serviceClusterIPRange | networking.serviceClusterIPRange |
subnets | networking.subnets |
tagSubnets | networking.tagSubnets |
topology | networking.topology |
topology.bastion.bastionPublicName | networking.topology.bastion.publicName |
topology.dns.type | networking.topology.dns |
warmPool | cloudProvider.aws.warmPool |