许吉友 - 运维

kube-apiserver 配置详解

kube-apiserver 配置官方文档:https://kubernetes.io/zh/docs/reference/command-line-tools-reference/kube-apiserver/

共 90 多个配置项。

官方文档的配置是没经过分类的。可以通过以下命令来查看分类过后的全部配置选项:

$ kube-apiserver -h

在源码中,kubernetes 的组件的命令行参数都是通过 cobra 来构建的。下面讲解时也会讲配置在源码中的位置。

首先,kube-apiserver 的配置是在 cmd/kube-apiserver/app/server.go 中初始化的。

然后,kube-apiserver 的配置分类在 cmd/kube-apiserver/app/options/options.go 中。

下面一组一组的学习。我使用的 k8s 版本是 1.17.3

Generic flags

通用配置的定义全在 staging/src/k8s.io/apiserver/pkg/server/options/server_run_options.go 中。

一共有十六个配置,其中有一个特性开关配置。

另外,特性开关最后学习。

Etcd flags

etch falgs 的源码在 staging/src/k8s.io/apiserver/pkg/server/options/etcd.go

一个 16 个配置项。

Secure serving flags

安全服务,9 个配置源码在:staging/src/k8s.io/apiserver/pkg/server/options/serving.go

Insecure serving flags

不安全的服务,4个配置,都过期了,不要用了,简单列一下:--address ,--insecure-bind-address,-insecure-port,--port

Auditing flags

审计配置,31个配置,全部以 audit 开头,源码在:staging/src/k8s.io/apiserver/pkg/server/options/audit.go

webhook 与 log 的区别就是发往文件还是网络,其他都是一样的。

Features flags

Authentication flags

认证配置

Authorization flags

授权配置

Cloud provider flags

API enablement flags

--runtime-config mapStringString ,一个键值对Map,支持的选项如下:

v1=true|false for the core API group

/=true|false for a specific API group and version (e.g. apps/v1=true) api/all=true|false controls all API versions api/ga=true|false controls all API versions of the form v[0-9]+ api/beta=true|false controls all API versions of the form v[0-9]+beta[0-9]+ api/alpha=true|false controls all API versions of the form v[0-9]+alpha[0-9]+ api/legacy is deprecated, and will be removed in a future version

Egress selector flags

--egress-selector-config-file string

带有apiserver出口选择器配置的文件。

Admission flags

Metrics flags

指标选项

--show-hidden-metrics-for-version string

您要为其显示隐藏指标的先前版本。 仅先前的次要版本有意义,将不允许其他值。 格式为,例如:“ 1.16”。 这种格式的目的是确保您有机会注意到下一个发行版是否隐藏了其他指标,而不是在以后将其永久删除时感到惊讶。

Misc flags

杂项

Global flags