【K8s生产环境】使用 kubeadm 引导集群系列 -- 3.使用 kubeadm 定制控制平面配置
参考:
https://kubernetes.io/zh/docs/reference/command-line-tools-reference/kube-apiserver/
https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/
https://kubernetes.io/docs/reference/command-line-tools-reference/kube-scheduler/
kubeadm ClusterConfiguration 对象公开了 extraArgs 字段,它可以覆盖传递给控制平面组件(如 APIServer、ControllerManager 和 Scheduler)的默认参数。各组件配置使用如下字段定义:
- apiServer
- controllerManager
- scheduler
extraArgs 字段由 key: value 对组成。 要覆盖控制平面组件的参数:
- 将适当的字段添加到配置中。
- 向字段添加要覆盖的参数值。
- 用 --config
运行 kubeadm init。
说明:您可以通过运行 kubeadm config print init-defaults 并将输出保存到您选择的文件中,以默认值形式生成 ClusterConfiguration 对象。
一个高可用的配置文件示例:
apiVersion: kubeadm.k8s.io/v1beta2
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 10.0.11.2
bindPort: 6443
nodeRegistration:
taints:
- effect: PreferNoSchedule
key: node-role.kubernetes.io/master
---
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
apiServer:
extraArgs:
anonymous-auth: "true"
enable-admission-plugins: AlwaysPullImages,DefaultStorageClass
audit-log-path: /var/log/audit.log
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: 10.0.11.1/google_containers
kubernetesVersion: v1.16.2
controlPlaneEndpoint: 10.0.11.200:8443
networking:
podSubnet: 192.168.0.0/16
controllerManager: {}
scheduler: {}
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
failSwapOn: False
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
ipvs:
minSyncPeriod: 0s
scheduler: "rr"
syncPeriod: 30s
mode: "ipvs"