Lab 3.2 Grow the Cluster - Cilium crashloop with worker nodes

The issue:
When adding workers, cilium pods are stuck in CarshLoopBackOff during the initialization process.
- Instructions from Lab 3.1 to Lab 3.2 followed to the letter.
- kubectl, kubeadm, kubelet 1.31.1 with apt maked to hold
Spect
- One computer with 3 VirtualBox machines (32GB RAM, 2TB Storage)
- Each node has 2cores, 4GB RAM, and 20GB Storage
Network
- NAT used to provide easy internet access, for wget and apt install.
- Host-only Adapter used to connect between Nodes. Promiscuous mode: "deny". Each machine can ping one another.
Network IPs
- Host-only Ethernet IPv4: 192.168.56.1 /24
- CP: 192.168.56.11/24
- Worker1: 192.168.56.21/24
- Worker2: 192.168.56.22/24
Cilium
cluster-pool-ipv4-cidr: 192.168.0.0 /16
What I tried
I was worried that Cilium might not be using k8scp, despit it being used in the init file.
cp > cat /etc/hosts
127.0.0.1 localhost
10.0.2.15 cp
192.168.56.11 k8scp
worker1 > cat /etc/hosts
127.0.0.1 localhost
10.0.2.15 worker1
192.168.56.11 k8scp cp
I notice the "internal IP" was linked to my NAT rather than the Host-Only Network.
So I solved it by modifying manually specifying which IP my kubelets should use.
sudo vim /etc/default/kubelet KUBELET_EXTRA_ARGS="--node-ip=192.168.56.11"
It now shows:
But my pods are still in CrashLoopBackOff...
I belive that I may need to set the default IP (eth0 or something) to my desired host-only adapter. Or maybe there is a cilium-specific config that I must change.
Any help is welcome. If you have a prefered/recommended VirtualBox setup, tell me. There was no recommendations on how to configure the VM networking in the course, so I followed standard home-lab practices.
Best Answer
-
Hi @fasmy,
As a follow up to your earlier post, this paints a much clearer picture of your infrastructure and your Kubernetes installation.
- Each node has 2cores, 4GB RAM, and 20GB Storage
I would recommend at least the cp VM provisioned with 8 GB RAM, while the two workers should support the light workload of the lab exercises at 4GB RAM each (pay close attention at exercises 4.2 and 4.3 while working with Memory constraints).
- NAT used to provide easy internet access, for wget and apt install.
- Host-only Adapter used to connect between Nodes...
While a mix of nat and host-only networks may seem to satisfy "standard home-lab practices", a single bridged network adapter per VM has worked very well for VirtualBox VMs for the purposes of this lab environment. The bridged network adapter simultaneously supports the network modes of the nat and host-only adapters.
... Promiscuous mode: "deny"...
Promiscuous mode should be set to "allow-all" traffic to the VMs, even with the recommended bridged adapter.
... Each machine can ping one another.
Ping only proves that the ICMP protocol is allowed - a protocol not used by Kubernetes. Instead, Kubernetes relies on TCP and UDP protocols.
Host-only Ethernet IPv4: 192.168.56.1 /24
CP: 192.168.56.11/24
Worker1: 192.168.56.21/24
Worker2: 192.168.56.22/24
cluster-pool-ipv4-cidr: 192.168.0.0 /16Overlapping VM IP addresses with the pod IP pool is detrimental to routing within the cluster. By default, VirtualBox uses the 192.168.56.0/24 IP range for VMs. The pod IP pool (range) should be distinct, not overlapping the VM range. In addition to setting one single bridged adapter per VM, and enabling promiscuous mode to "allow-all", I recommend setting the
cluster-pool-ipv4-cidr
to10.200.0.0/16
incilium-cni.yaml
manifest, and modifying thepodSubnet
entry to the same10.200.0.0/16
cidr in thekubeadm-config.yaml
manifest.Regards,
-Chris0
Answers
-
Thank you very much !
I'll keep you in touch. I might be off work soon enough to fix it tomorrow!
0 -
It works, it just works! HOORAY!
I tried tweaking the IP/CIDR ranges to get things tight—around 60 nodes with 128 IPs each (I really can't remember exactly). But in the end, I stopped playing games and just went with a bridge setup.
OH MY BRIDGE!
I was even able to reuse my existing virtual machines—I DIDN’T HAVE TO START FROM SCRATCH!Quick advice for anyone trying to learn from the ground up and doing it with non-standard setup:
Keep snapshots at every step!
After SSH setup
After all Kubernetes packages are installed, /etc/hostname and /etc/hosts are set, and swapoff -a is done
→ From here, clone your first machine (named cp, for control plane) and clone it twice—once for each worker.
2.1. On each worker, set /etc/hostname and /etc/hosts, then save a snapshotAfter cp init (verify everything is OK with kubectl get -A pods)
→ Don’t forget: kubectl needs to be configured to work. The kubeadm init output literally gives you 4 commands—run them!After Cilium is installed on the cp (check with kubectl get -A pods)
→ One control plane pod will be stuck at 0/1 until a second node joins—Next Step!After both worker nodes have joined
→ Check kubectl get -A pods again and make sure everything shows 1/1 and looks clean!
AND YOU ARE D-D-D-D-D-D-DONE!
If you're following a strict tutorial, you might get through this in a few minutes and wonder why it ever seems hard. But if you're not an everyday Linux user, you’ll need to learn how to tweak configs (Ubuntu uses Netplan now), set up SSH (both server and client), and secure access properly.
SIMULATE your full working environment—from start to finish.
Break things on purpose. Try weird setups. Learn what fails and why.Referential learning is the backbone of my job, but some things you really have to do once before you can just follow instructions blindly.
To whoever’s reading this: good luck!
And yes—follow the tutorial strictly if you don't want to waste time. I had to do this, because I have great bare metal pans for the future, so there was no shortcut.0
Categories
- All Categories
- 142 LFX Mentorship
- 142 LFX Mentorship: Linux Kernel
- 817 Linux Foundation IT Professional Programs
- 368 Cloud Engineer IT Professional Program
- 167 Advanced Cloud Engineer IT Professional Program
- 83 DevOps Engineer IT Professional Program
- 132 Cloud Native Developer IT Professional Program
- 122 Express Training Courses
- 122 Express Courses - Discussion Forum
- Microlearning - Discussion Forum
- 6.6K Training Courses
- 40 LFC110 Class Forum - Discontinued
- 66 LFC131 Class Forum
- 39 LFD102 Class Forum
- 236 LFD103 Class Forum
- 22 LFD110 Class Forum
- 44 LFD121 Class Forum
- 1 LFD123 Class Forum
- LFD125 Class Forum
- 17 LFD133 Class Forum
- 6 LFD134 Class Forum
- 17 LFD137 Class Forum
- 70 LFD201 Class Forum
- 3 LFD210 Class Forum
- 2 LFD210-CN Class Forum
- 2 LFD213 Class Forum - Discontinued
- 128 LFD232 Class Forum - Discontinued
- 1 LFD233 Class Forum
- 3 LFD237 Class Forum
- 23 LFD254 Class Forum
- 689 LFD259 Class Forum
- 110 LFD272 Class Forum
- 3 LFD272-JP クラス フォーラム
- 10 LFD273 Class Forum
- 251 LFS101 Class Forum
- 2 LFS111 Class Forum
- 3 LFS112 Class Forum
- 3 LFS116 Class Forum
- 3 LFS118 Class Forum
- 1 LFS120 Class Forum
- 3 LFS142 Class Forum
- 3 LFS144 Class Forum
- 3 LFS145 Class Forum
- 1 LFS146 Class Forum
- 16 LFS148 Class Forum
- 8 LFS151 Class Forum
- 1 LFS157 Class Forum
- 17 LFS158 Class Forum
- LFS158-JP クラス フォーラム
- 5 LFS162 Class Forum
- 1 LFS166 Class Forum
- 3 LFS167 Class Forum
- 1 LFS170 Class Forum
- 1 LFS171 Class Forum
- 2 LFS178 Class Forum
- 2 LFS180 Class Forum
- 2 LFS182 Class Forum
- 4 LFS183 Class Forum
- 30 LFS200 Class Forum
- 737 LFS201 Class Forum - Discontinued
- 2 LFS201-JP クラス フォーラム
- 17 LFS203 Class Forum
- 118 LFS207 Class Forum
- 2 LFS207-DE-Klassenforum
- LFS207-JP クラス フォーラム
- 302 LFS211 Class Forum
- 55 LFS216 Class Forum
- 50 LFS241 Class Forum
- 43 LFS242 Class Forum
- 37 LFS243 Class Forum
- 13 LFS244 Class Forum
- 6 LFS245 Class Forum
- LFS246 Class Forum
- LFS248 Class Forum
- 108 LFS250 Class Forum
- 1 LFS250-JP クラス フォーラム
- LFS251 Class Forum
- 145 LFS253 Class Forum
- LFS254 Class Forum
- 2 LFS255 Class Forum
- 13 LFS256 Class Forum
- 1 LFS257 Class Forum
- 1.3K LFS258 Class Forum
- 11 LFS258-JP クラス フォーラム
- 116 LFS260 Class Forum
- 156 LFS261 Class Forum
- 41 LFS262 Class Forum
- 82 LFS263 Class Forum - Discontinued
- 15 LFS264 Class Forum - Discontinued
- 11 LFS266 Class Forum - Discontinued
- 23 LFS267 Class Forum
- 25 LFS268 Class Forum
- 29 LFS269 Class Forum
- 7 LFS270 Class Forum
- 200 LFS272 Class Forum
- 1 LFS272-JP クラス フォーラム
- 2 LFS147 Class Forum
- LFS274 Class Forum
- 3 LFS281 Class Forum
- 18 LFW111 Class Forum
- 257 LFW211 Class Forum
- 179 LFW212 Class Forum
- 15 SKF100 Class Forum
- SKF200 Class Forum
- 2 SKF201 Class Forum
- 791 Hardware
- 199 Drivers
- 68 I/O Devices
- 37 Monitors
- 98 Multimedia
- 174 Networking
- 91 Printers & Scanners
- 85 Storage
- 754 Linux Distributions
- 82 Debian
- 67 Fedora
- 16 Linux Mint
- 13 Mageia
- 23 openSUSE
- 149 Red Hat Enterprise
- 31 Slackware
- 13 SUSE Enterprise
- 351 Ubuntu
- 465 Linux System Administration
- 39 Cloud Computing
- 71 Command Line/Scripting
- Github systems admin projects
- 95 Linux Security
- 78 Network Management
- 101 System Management
- 47 Web Management
- 56 Mobile Computing
- 18 Android
- 28 Development
- 1.2K New to Linux
- 1K Getting Started with Linux
- 366 Off Topic
- 114 Introductions
- 171 Small Talk
- 26 Study Material
- 534 Programming and Development
- 304 Kernel Development
- 223 Software Development
- 1.8K Software
- 212 Applications
- 182 Command Line
- 3 Compiling/Installing
- 405 Games
- 311 Installation
- 79 All In Program
- 79 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)