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純正IntelGNU / Linux私は、指定されたnode-cidr-mask-size
下kubeadm設定ファイルにcontrollerManagerExtraArgs
フラグを設定します。 kube-controller-managerは、 --node-cidr-mask-size
2つのインスタンスが渡された状態で開始されました。 2番目のインスタンスは、kubeadmが設定しようとした値を追加し、上書きするデフォルトでした。
kube-controller-managerは、 --node-cidr-mask-size
1つのインスタンスで開始する必要があります。そうでない場合は、優先されるように、少なくとも指定したインスタンスが2番目になります。
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
を開始時と終了時に2回配置するだけです。
@tmjd networking.podSubnet
をcontrollerManagerExtraArgs.cluster-cidr
し、 allocate-node-cidrs
も追加することで回避しました。これは、 podSubnet
があった場合のkubeadmコードと同じです。直接指定されます。
元の例を変更すると、次のようになります。
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フィックスは、マスターからの次の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
も追加することで回避しました。これは、podSubnet
があった場合のkubeadmコードと同じです。直接指定されます。元の例を変更すると、次のようになります。
この回避策は、基本的にkubeadmの
if
ステートメントを回避しています。https://github.com/kubernetes/kubernetes/blob/86a58202b68d04b2e31b56db80b4d2a4dec77c93/cmd/kubeadm/app/phases/controlplane/manifests.go#L336 -L342
kubeadmが検証以外の目的で
podSubnet
を使用しているようには見えませんが、間違っている可能性があります。ただし、よりサポートされている方法でノードのcidrマスクサイズをオーバーライドできることを希望します。