kubernetes K8S:将“kubeadm init”命令行参数转换为“--config”YAML [已关闭]

qoefvg9y  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(2)|浏览(175)

已关闭此问题为not about programming or software development。它目前不接受回答。

这个问题似乎不是关于a specific programming problem, a software algorithm, or software tools primarily used by programmers的。如果你认为这个问题与another Stack Exchange site的主题有关,你可以留下评论,解释在哪里可以回答这个问题。
5天前关闭。
Improve this question

背景

我正在尝试通过kubeadm配置群集。我通常通过以下方式创建(测试)集群:

sudo kubeadm init --pod-network-cidr 10.244.0.0/16

这个参数似乎最终会进入到MyerManager(/etc/kubernetes/manifests/kube-controller-manager.yaml)的静态pod定义中:

- --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?我找到了一个sample config file template on an unofficial K8S documentation wiki,但是我似乎找不到任何文档将这些命令行参数Map到kubeadm和它们的kubeadm_config.yaml等价物。
There's also a document showing how I can create a baseline static pod definition/ yaml通过kubeadm config print init-defaults > kubeadm_config.yaml,但同样,没有文档显示如何通过修改和应用此yaml文件来设置pod-network-cidr(即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相关的证书的测试。

wooyq4lh

wooyq4lh1#

**1.**根据官方文件:

可以使用配置文件而不是命令行标志来配置kubeadm init,并且一些更高级的功能可能仅作为配置文件选项提供。此文件通过--config选项传递。
默认配置可以使用kubeadm config printcommand打印出来。
建议您使用kubeadm config migratecommand将旧的v1 beta1配置迁移到v1 beta2。
kubeadm init过程中,kubeadm会在kube-system命名空间中的一个名为kubeadm-config的ConfigMap中将configurterConfiguration对象上传到集群。然后在kubeadm joinkubeadm resetkubeadm upgrade期间读取此配置。要查看此ConfigMap,请调用kubeadm config view
您可以使用kubeadm config print打印默认配置,使用kubeadm config migrate将旧配置文件转换为新版本。kubeadm config images listkubeadm 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来传递这种配置。
请让我知道这是否有帮助。

km0tfn4u

km0tfn4u2#

1.使用所需的配置创建集群,然后像这样获取config.yaml:

kubectl describe configmap -n kube-system kubeadm-config > ./config.yaml

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

相关问题