LFS258 Specifying a node IP for cp node when initializing the k8s cluster on Virtualbox VM
I am running my labs using virtualbox environment. my VMs are running Ubuntu with two interfaces. the cp node has:
enp0s3 the NAT interface that allows me access the internet (IP add: 10.0.2.15).
enp0s8 for internal node connectivity (IP add: 10.20.0.3).
When I run the kubeadm init command, it picks the 10.0.2.15 by default but I want it to pick 10.20.0.3
I did some searching and and modified the kubeadm-config.yaml file to this
apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration kubernetesVersion: 1.27.1 controlPlaneEndpoint: "k8scp:6443" networking: podSubnet: 192.168.0.0/16 apiServer: certSANs: - "10.20.0.3" --- apiVersion: kubeadm.k8s.io/v1beta2 kind: InitConfiguration localAPIEndpoint: advertiseAddress: "10.20.0.3"
After initializing successfully I ran the kubectl get node -o wide command and I get 10.0.2.15 as the node Internal IP.
I did further search on and found a solution to change this in the file: /etc/systemd/system/kubelet.service.d/10-kubeadm.conf by adding Environment="KUBELET_EXTRA_ARGS=--node-ip=10.20.0.3".
I restarted the kubelet service and ran this again kubectl get node -o wide.
I can see Internal IP as 10.20.0.3.
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME controlplane Ready control-plane 2d3h v1.27.1 10.20.0.3 <none> Ubuntu 22.04.3 LTS 5.15.0-91-generic containerd://1.6.26
This is my desired result however, I would like to achieve this without making custom changes after initialization. Can this be done in the kubeadm-config file or a flag to the kubeadm init command
Comments
-
Hi @ogbonnaec,
This discussion thread has been moved to the correct forum dedicated to the LFS258 course.
I would encourage you to install the guest OS recommended by the latest release of the lab guide, dated 2023-12-13, that is Ubuntu 20.04 LTS.
When faced with multiple host IP addresses, it is the user's responsibility to declare the IP of the desired network interface to be advertised during cluster bootstrapping.
However, this can be prevented by setting a single bridged network interface per VM. Also, on VirtualBox, ensure that promiscuous mode is enabled to allow all traffic to the VM.
If multiple network interfaces are configured per VM, then the desired interface IP can be declared in the
kubeadm-config.yaml
file as described in the official documentation or supplied with the--apiserver-advertise-address
flag to thekubeadm init
command.In
kubeadm-config.yaml
(with corrected API version and indentation):apiVersion: kubeadm.k8s.io/v1beta3 kind: InitConfiguration localAPIEndpoint: advertiseAddress: "10.20.0.3" bindPort: 6443 --- apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration kubernetesVersion: 1.27.1 controlPlaneEndpoint: "k8scp:6443" networking: podSubnet: 192.168.0.0/16 apiServer: certSANs: - "10.20.0.3"
Regards,
-Chris0 -
Thank you for the reply and the corrections. I have effected them. However the initial challenge still persists. The Internal IP is still the NAT interface. It is important for me to get how to specify desired node IP because in production environment, we often have multiple interfaces per node.
My vm network interfaces is set up as shown in the pictures attached.enp0s3 NAT interface
enp0s8 desired kubernetes interface
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME controlplane Ready control-plane 89m v1.27.1 10.0.2.15 <none> Ubuntu 20.04.6 LTS 5.4.0-169-generic containerd://1.6.26
desired IP is 10.20.0.11
The kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta3 kind: InitConfiguration localAPIEndpoint: advertiseAddress: "10.20.0.11" bindport: 6443 --- apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration kubernetesVersion: 1.27.1 controlPlaneEndpoint: "k8scp:6443" networking: podSubnet: 192.168.0.0/16 apiServer: certSANs: - "10.20.0.11"
on the initializing the cluster, I got an error though the cluster was successfully initialized
If I comment the localAPIEndpoint.bindport option, the error disappears. I went through the kubeadm configuration page you shared on your reply and the localAPIEndpoint.bindport is given so I do not know why the error.
0 -
Hello @chrispokorni
Adding to my above reply, I tried setting the network interface to bridge network. It gets IP assigned from access point and that becomes the default for the kubernetes node. This is not what I want.
I want to have my kubernetes nodes communicating on the a different network. I have been able to achieve this by making manual changes. I know this not the best way to achieve this. How do i go about this at initialization stage.
I applied the your corrections and it still did not work.
I would appreciate if I can get help with this as it is a blocker for me.0 -
Hi @ogbonnaec,
Perhaps correcting the typo in your
kubeadm-config.yaml
manifest may help.It should be
bindPort
with capital "P"[PS: I typed this response yesterday, but for some reason it did not post...]
Regards,
-Chris0 -
Hello @chrispokorni,
Yes I noticed it later and fixed it already so it runs without errors but the internal IP is still the same.
0 -
Hi @ogbonnaec,
Beyond information and troubleshooting tips supplied by the official Kubernetes documentation:
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init/#without-internet-connection
blog posts, discussions, and any creative ways to achieve what is needed in terms of network configuration (interface swap, disable/enable interface, kubeadm config file vs kubeadm command with imperative flags) there is nothing else we can recommend. Any features that do not work as described in the official documentation can be reported at https://github.com/kubernetes/kubernetes/issues.
Otherwise, learners have successfully completed the lab exercises on the recommended infrastructures: AWS EC2, GCP GCE, VirtualBox VMs with bridged network and DHCP server enabled, and even on KVM, DigitalOcean Droplets, IBM Cloud Virtual Servers, and Azure VMs. I would recommend considering one of these options in order to begin your learning process.
The course aims to teach you how to install and operate Kubernetes on an infrastructure setup that is intermediate in complexity, as in not too basic but not too advanced either. This way learners from various backgrounds can provision their desired infrastructure and successfully complete the course lab exercises. The forum is a support tool for the course content in its current format. Custom infrastructure, networking, and additional Kubernetes features are beyond the scope of this course and its support.
Regards,
-Chris0 -
Hello @chrispokorni,
OK. Thank you for your time and help.0
Categories
- All Categories
- 167 LFX Mentorship
- 219 LFX Mentorship: Linux Kernel
- 798 Linux Foundation IT Professional Programs
- 356 Cloud Engineer IT Professional Program
- 180 Advanced Cloud Engineer IT Professional Program
- 82 DevOps Engineer IT Professional Program
- 149 Cloud Native Developer IT Professional Program
- 112 Express Training Courses
- 138 Express Courses - Discussion Forum
- 6.2K Training Courses
- 48 LFC110 Class Forum - Discontinued
- 17 LFC131 Class Forum
- 35 LFD102 Class Forum
- 227 LFD103 Class Forum
- 19 LFD110 Class Forum
- 39 LFD121 Class Forum
- 15 LFD133 Class Forum
- 7 LFD134 Class Forum
- 17 LFD137 Class Forum
- 63 LFD201 Class Forum
- 3 LFD210 Class Forum
- 5 LFD210-CN Class Forum
- 2 LFD213 Class Forum - Discontinued
- 128 LFD232 Class Forum - Discontinued
- 1 LFD233 Class Forum
- 2 LFD237 Class Forum
- 23 LFD254 Class Forum
- 697 LFD259 Class Forum
- 109 LFD272 Class Forum
- 3 LFD272-JP クラス フォーラム
- 10 LFD273 Class Forum
- 154 LFS101 Class Forum
- 1 LFS111 Class Forum
- 1 LFS112 Class Forum
- 1 LFS116 Class Forum
- 1 LFS118 Class Forum
- LFS120 Class Forum
- 7 LFS142 Class Forum
- 7 LFS144 Class Forum
- 3 LFS145 Class Forum
- 1 LFS146 Class Forum
- 3 LFS147 Class Forum
- 1 LFS148 Class Forum
- 15 LFS151 Class Forum
- 1 LFS157 Class Forum
- 34 LFS158 Class Forum
- 8 LFS162 Class Forum
- 1 LFS166 Class Forum
- 1 LFS167 Class Forum
- 3 LFS170 Class Forum
- 2 LFS171 Class Forum
- 1 LFS178 Class Forum
- 1 LFS180 Class Forum
- 1 LFS182 Class Forum
- 1 LFS183 Class Forum
- 29 LFS200 Class Forum
- 736 LFS201 Class Forum - Discontinued
- 2 LFS201-JP クラス フォーラム
- 14 LFS203 Class Forum
- 102 LFS207 Class Forum
- 1 LFS207-DE-Klassenforum
- 1 LFS207-JP クラス フォーラム
- 301 LFS211 Class Forum
- 55 LFS216 Class Forum
- 48 LFS241 Class Forum
- 48 LFS242 Class Forum
- 37 LFS243 Class Forum
- 15 LFS244 Class Forum
- LFS245 Class Forum
- LFS246 Class Forum
- 50 LFS250 Class Forum
- 1 LFS250-JP クラス フォーラム
- LFS251 Class Forum
- 155 LFS253 Class Forum
- LFS254 Class Forum
- LFS255 Class Forum
- 5 LFS256 Class Forum
- 1 LFS257 Class Forum
- 1.3K LFS258 Class Forum
- 10 LFS258-JP クラス フォーラム
- 121 LFS260 Class Forum
- 159 LFS261 Class Forum
- 41 LFS262 Class Forum
- 82 LFS263 Class Forum - Discontinued
- 15 LFS264 Class Forum - Discontinued
- 11 LFS266 Class Forum - Discontinued
- 20 LFS267 Class Forum
- 25 LFS268 Class Forum
- 31 LFS269 Class Forum
- 1 LFS270 Class Forum
- 199 LFS272 Class Forum
- 1 LFS272-JP クラス フォーラム
- LFS274 Class Forum
- 3 LFS281 Class Forum
- 10 LFW111 Class Forum
- 261 LFW211 Class Forum
- 182 LFW212 Class Forum
- 15 SKF100 Class Forum
- 1 SKF200 Class Forum
- 1 SKF201 Class Forum
- 782 Hardware
- 198 Drivers
- 68 I/O Devices
- 37 Monitors
- 96 Multimedia
- 174 Networking
- 91 Printers & Scanners
- 83 Storage
- 758 Linux Distributions
- 80 Debian
- 67 Fedora
- 15 Linux Mint
- 13 Mageia
- 23 openSUSE
- 143 Red Hat Enterprise
- 31 Slackware
- 13 SUSE Enterprise
- 348 Ubuntu
- 461 Linux System Administration
- 39 Cloud Computing
- 70 Command Line/Scripting
- Github systems admin projects
- 90 Linux Security
- 77 Network Management
- 101 System Management
- 46 Web Management
- 64 Mobile Computing
- 17 Android
- 34 Development
- 1.2K New to Linux
- 1K Getting Started with Linux
- 371 Off Topic
- 114 Introductions
- 174 Small Talk
- 19 Study Material
- 806 Programming and Development
- 304 Kernel Development
- 204 Software Development
- 1.8K Software
- 211 Applications
- 180 Command Line
- 3 Compiling/Installing
- 405 Games
- 309 Installation
- 97 All In Program
- 97 All In Forum
Upcoming Training
-
August 20, 2018
Kubernetes Administration (LFS458)
-
August 20, 2018
Linux System Administration (LFS301)
-
August 27, 2018
Open Source Virtualization (LFS462)
-
August 27, 2018
Linux Kernel Debugging and Security (LFD440)