K8S:将“kubeadm init”命令行参数转换为“--config”YAML

问题描述 投票:0回答:2

背景

我正在尝试通过

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

问题1:

如何通过配置文件(即

--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: {}


问题2:

我怎样才能做到上述,但传递像

--experimental-cluster-signing-duration=0h30m0s

这样的东西?我想尝试涉及手动/自动更新所有 
kubeadm
 相关证书的测试。


kubernetes yaml x509certificate kubeadm kube-apiserver
2个回答
4
投票

1.根据官方文档

可以使用配置文件来配置

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 的镜像
  需要。

子网由 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 来传递此类配置。

请告诉我是否有帮助。


0
投票
kubectl describe configmap -n kube-system kubeadm-config

将额外参数传递给受影响的服务。

© www.soinside.com 2019 - 2024. All rights reserved.