Kubeadm: 将 node-cidr-mask-size 指定为 controllerManagerExtra 参数不优先

创建于 2018-03-07  ·  4评论  ·  资料来源: kubernetes/kubeadm

在提交这个问题之前,您在 kubeadm issues 中搜索了哪些关键字?

controllerManagerExtraArgs, node-cidr-mask-size

这是错误报告还是功能请求?

错误报告

版本

kubeadm 版本(使用kubeadm version ):v1.9.3

环境:

  • Kubernetes 版本(使用kubectl version ):v1.9.3
  • 云提供商或硬件配置:VirtualBox
  • 操作系统(例如来自 /etc/os-release):
    NAME="Container Linux by CoreOS" ID=coreos VERSION=1576.4.0 VERSION_ID=1576.4.0 BUILD_ID=2017-12-06-0449 PRETTY_NAME="Container Linux by CoreOS 1576.4.0 (Ladybug)" ANSI_COLOR="38;5;75" HOME_URL="https://coreos.com/" BUG_REPORT_URL="https://issues.coreos.com" COREOS_BOARD="amd64-usr"
  • 内核(例如uname -a ):Linux k8s-master 4.13.16-coreos-r2 #1 SMP Wed Dec 6 04:27:34 UTC 2017 x86_64 Intel(R) Xeon(R) CPU E3-1505M v5 @ 2.80GHz 正版英特尔 GNU/Linux
  • 其他

发生了什么?

我在controllerManagerExtraArgs下的 kubeadm 配置文件中指定node-cidr-mask-size controllerManagerExtraArgs来设置标志。 kube-controller-manager 开始时传递给它的--node-cidr-mask-size 2 个实例。 第二个实例是 kubeadm 添加并覆盖我试图设置的值的默认值。

你预计会发生什么?

kube-controller-manager 应该从--node-cidr-mask-size一个实例开始,或者至少我指定的那个是第二个实例,以便它优先。

如何重现它(尽可能少且精确)?

  1. 使用以下内容作为文件 myconfig.yaml 的内容运行kubeadm init --config=myconfig.yaml
    apiVersion: kubeadm.k8s.io/v1alpha1 kind: MasterConfiguration api: advertiseAddress: "fd10::101" networking: serviceSubnet: fd30::0/110 podSubnet: "fd20:0::/120" controllerManagerExtraArgs: node-cidr-mask-size: "120"
  2. 检查 kube-controller-manager 启动的标志。

还有什么我们需要知道的吗?

在尝试使用 kubeadm 设置 IPv6 集群并指定 podSubnet 时,这对我来说是一个问题。

最有用的评论

@tmjd我已经通过将networking.podSubnetcontrollerManagerExtraArgs.cluster-cidr并添加allocate-node-cidrs ,就像 kubeadm 代码如果podSubnet已经直接指定。

修改您的原始示例,它变为:

apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
api:  
  advertiseAddress: "fd10::101"
networking:
  serviceSubnet: fd30::0/110   
  # MOVED BELOW podSubnet: "fd20:0::/120"    
controllerManagerExtraArgs:
  allocate-node-cidrs: "true"
  cluster-cidr: "fd20:0::/120"
  node-cidr-mask-size: "120"

此解决方法实质上是在此处绕过 kubeadm 的if语句:
https://github.com/kubernetes/kubernetes/blob/86a58202b68d04b2e31b56db80b4d2a4dec77c93/cmd/kubeadm/app/phases/controlplane/manifests.go#L336 -L342

我似乎没有认为 kubeadm 将podSubnet用于验证以外的任何其他用途,但我可能是错的。

尽管如此,仍然希望能够以更受支持的方式覆盖节点 cidr 掩码大小。

所有4条评论

仍然存在于 1.9.6 中。

它真的应该只是networking键下的一个选项,目前它只是在开始和结束时将--node-cidr-mask-size放入配置两次

@tmjd我已经通过将networking.podSubnetcontrollerManagerExtraArgs.cluster-cidr并添加allocate-node-cidrs ,就像 kubeadm 代码如果podSubnet已经直接指定。

修改您的原始示例,它变为:

apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
api:  
  advertiseAddress: "fd10::101"
networking:
  serviceSubnet: fd30::0/110   
  # MOVED BELOW podSubnet: "fd20:0::/120"    
controllerManagerExtraArgs:
  allocate-node-cidrs: "true"
  cluster-cidr: "fd20:0::/120"
  node-cidr-mask-size: "120"

此解决方法实质上是在此处绕过 kubeadm 的if语句:
https://github.com/kubernetes/kubernetes/blob/86a58202b68d04b2e31b56db80b4d2a4dec77c93/cmd/kubeadm/app/phases/controlplane/manifests.go#L336 -L342

我似乎没有认为 kubeadm 将podSubnet用于验证以外的任何其他用途,但我可能是错的。

尽管如此,仍然希望能够以更受支持的方式覆盖节点 cidr 掩码大小。

@tmjd Fix 应该会在 master 的下一个 kubeadm 版本中发布。

这方面的状况如何?
我目前正在设置一个 Kubernetes 集群:

kubeadm version: &version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.4", GitCommit:"5ca598b4ba5abb89bb773071ce452e33fb66339d", GitTreeState:"clean", BuildDate:"2018-06-06T08:00:59Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

问题仍然在这里发生。

此页面是否有帮助?
0 / 5 - 0 等级