controllerManagerExtraArgs, node-cidr-mask-size
错误报告
kubeadm 版本(使用kubeadm version
):v1.9.3
环境:
kubectl version
):v1.9.3
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
一个实例开始,或者至少我指定的那个是第二个实例,以便它优先。
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"
在尝试使用 kubeadm 设置 IPv6 集群并指定 podSubnet 时,这对我来说是一个问题。
仍然存在于 1.9.6 中。
它真的应该只是networking
键下的一个选项,目前它只是在开始和结束时将--node-cidr-mask-size
放入配置两次
@tmjd我已经通过将networking.podSubnet
到controllerManagerExtraArgs.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"}
问题仍然在这里发生。
最有用的评论
@tmjd我已经通过将
networking.podSubnet
到controllerManagerExtraArgs.cluster-cidr
并添加allocate-node-cidrs
,就像 kubeadm 代码如果podSubnet
已经直接指定。修改您的原始示例,它变为:
此解决方法实质上是在此处绕过 kubeadm 的
if
语句:https://github.com/kubernetes/kubernetes/blob/86a58202b68d04b2e31b56db80b4d2a4dec77c93/cmd/kubeadm/app/phases/controlplane/manifests.go#L336 -L342
我似乎没有认为 kubeadm 将
podSubnet
用于验证以外的任何其他用途,但我可能是错的。尽管如此,仍然希望能够以更受支持的方式覆盖节点 cidr 掩码大小。