我正在尝试通过
kubeadm
配置集群。我通常通过以下方式创建(测试)集群:
sudo kubeadm init --pod-network-cidr 10.244.0.0/16
这个参数似乎最终会进入controllerManager的静态pod定义中(
/etc/kubernetes/manifests/kube-controller-manager.yaml
):
- --cluster-cidr=10.244.0.0/16
较大部分
sudo vim /etc/kubernetes/manifests/kube-controller-manager.yaml
:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
component: kube-controller-manager
tier: control-plane
name: kube-controller-manager
namespace: kube-system
spec:
containers:
- command:
- kube-controller-manager
- --allocate-node-cidrs=true
- --authentication-kubeconfig=/etc/kubernetes/controller-manager.conf
- ...
- --cluster-cidr=10.244.0.0/16
如何通过配置文件(即
--pod-network-cidr=10.244.0.0/16
)传递此设置kubeadm init --config my_config.yaml
?我在非官方 K8S 文档 wiki 上找到了一个 示例配置文件模板,但我似乎根本找不到任何将这些命令行参数映射到 kubeadm
到其
kubeadm_config.yaml
等效项的文档。
还有一个文档展示了如何通过 yaml
创建基线静态 Pod 定义/
kubeadm config print init-defaults > kubeadm_config.yaml
,但同样,没有文档展示如何通过修改和应用此
pod-network-cidr
文件来设置
yaml
(即
kubeadm upgrade -f kubeadm_config.yaml
)。
kubeadm config view
的示例输出:
apiServer:
extraArgs:
authorization-mode: Node,RBAC
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.15.4
networking:
dnsDomain: cluster.local
podSubnet: 10.244.0.0/16
serviceSubnet: 10.96.0.0/12
scheduler: {}
--experimental-cluster-signing-duration=0h30m0s
这样的东西?我想尝试涉及手动/自动更新所有
kubeadm
相关证书的测试。
1.根据官方文档:
可以使用配置文件来配置子网由 kubeadm 中的
kubeadm init
而不是命令行标志,一些更高级的功能可能 只能作为配置文件选项使用。该文件已通过 使用--config
选项。可以使用
kubeadm config print
命令打印出默认配置。 建议您使用
kubeadm config migrate
命令将旧的 v1beta1 配置迁移到 v1beta2。
kubeadm init
期间,kubeadm 上传 ClusterConfiguration 对象 到您的集群中名为 kubeadm-config 的 ConfigMap kube-system 命名空间。然后在kubeadm join
、kubeadm reset
和kubeadm upgrade
期间读取此配置。查看此 ConfigMap 致电kubeadm config view
。您可以使用
kubeadm config print
打印默认配置 和kubeadm config migrate
转换旧的配置文件 到较新的版本。kubeadm config images list
和kubeadm config images pull
可用于列出和拉取 kubeadm 的镜像 需要。
--pod-network-cidr
参数或配置文件定义,如下例所示:
apiVersion: kubeadm.k8s.io/v1alpha3
kind: InitConfiguration
api:
advertiseAddress: 0.0.0.0
bindPort: 6443
kubernetesVersion: v1.12.1
---
apiVersion: kubeadm.k8s.io/v1alpha3
kind: ClusterConfiguration
networking:
podSubnet: 192.168.0.0/24
2. 我无法在官方文档或其他来源中找到类似的内容。
您可以使用kube-controller-manager 来传递此类配置。
请告诉我是否有帮助。
kubectl describe configmap -n kube-system kubeadm-config