指定Kubernetes工作节点内网IP
在部署ARM架构Kubernetes实践中,我发现主机加入时使用的是无线网卡接口的IP地址( 网段): kubectl get nodes -o wide 显示: NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME jetson Ready 19h v1.19.4 192.168.0.34 Ubuntu 18.04.5 LTS 4.9.140-tegra docker://19.3.6 pi-master1 Ready master 6d17h v1.19.4 192.168.6.11 Ubuntu 20.04.1 LTS 5.4.0-1022-raspi docker://19.3.8 pi-worker1 Ready 3d5h v1.19.4 192.168.6.15 Ubuntu 20.04.1 LTS 5.4.0-1022-raspi docker://19.3.8 pi-worker2 Ready 3d5h v1.19.4 192.168.6.16 Ubuntu 20.04.1 LTS 5.4.0-1022-raspi docker://19.3.8 参考How to specify Internal-IP for kubernetes worker node,需要修订jetson的kubelet配置,明确指定,这 样kubelet公告就能够正确指定node的。原文是说修改配置,添 加这行配置。不过,现在kubelet的systemd配置目录 下明确说明了kubelet的扩展配置参数是从读取的: set_k8s_worker_internal_ip/10-kubeadm.conf 1# Note: This dropin only works with kubeadm and kubelet v1.11+ 2[Service] 3Environment=“KUBELET_KUBECONFIG_ARGS=–bootstrap-kubeconfig=/etc/kubernetes/bootstrap- kubelet.conf –kubeconfig=/etc/kubernetes/kubelet.conf” 4Environment=“KUBELET_CONFIG_ARGS=–config=/var/lib/kubelet/config.yaml” 5# This is a file that “kubeadm init” and “kubeadm join” generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically 6EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env 7# This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use 8# the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file. 9EnvironmentFile=-/etc/default/kubelet 10ExecStart=
11ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS 所以我们需要对应修改或创建 : KUBELET_EXTRA_ARGS="–node-ip=192.168.6.10" 然后重启 systemctl restart kubelet 备注 如果是直接修改 systemd 配置文件则需要重新加载配置并重启: sudo systemctl daemon-reload sudo systemctl restart kubelet 再检查进程就会看到参数最后添加了 /usr/bin/kubelet –bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf – kubeconfig=/etc/kubernetes/kubelet.conf –config=/var/lib/kubelet/config.yaml –network- plugin=cni –pod-infra-container-image=k8s.gcr.io/pause:3.2 –node-ip=192.168.6.10 此时在管控节点上检查 就会看到 jetson 节点的已经修订成正确的内网IP地址: NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME jetson Ready 19m v1.19.4 192.168.6.10 Ubuntu 18.04.5 LTS 4.9.140-tegra docker://19.3.6
pi-master1 Ready master 7d v1.19.4 192.168.6.11 Ubuntu 20.04.1 LTS 5.4.0-1022-raspi docker://19.3.8 pi-worker1 Ready 3d12h v1.19.4 192.168.6.15 Ubuntu 20.04.1 LTS 5.4.0-1022-raspi docker://19.3.8 pi-worker2 Ready 3d12h v1.19.4 192.168.6.16 Ubuntu 20.04.1 LTS 5.4.0-1022-r