Install Kubernetes in Fedora
My environment:
- VirtualBox 7.0 (Version 7.0.6 r155176 (Qt5.15.2))
- Fedora 38
.',;::::;,'. hperez@fedora
.';:cccccccccccc:;,. -------------
.;cccccccccccccccccccccc;. OS: Fedora Linux 38 (Workstation Edition) x86_64
.:cccccccccccccccccccccccccc:. Host: VirtualBox 1.2
.;ccccccccccccc;.:dddl:.;ccccccc;. Kernel: 6.4.15-200.fc38.x86_64
.:ccccccccccccc;OWMKOOXMWd;ccccccc:. Uptime: 3 days, 6 hours, 57 mins
.:ccccccccccccc;KMMc;cc;xMMc:ccccccc:. Packages: 2735 (rpm), 4 (flatpak), 14 (snap)
,cccccccccccccc;MMM.;cc;;WW::cccccccc, Shell: bash 5.2.15
:cccccccccccccc;MMM.;cccccccccccccccc: Resolution: 1920x1080
:ccccccc;oxOOOo;MMM0OOk.;cccccccccccc: DE: GNOME 44.5
cccccc:0MMKxdd:;MMMkddc.;cccccccccccc; WM: Mutter
ccccc:XM0';cccc;MMM.;cccccccccccccccc' WM Theme: Adwaita
ccccc;MMo;ccccc;MMW.;ccccccccccccccc; Theme: Adwaita-dark [GTK2/3]
ccccc;0MNc.ccc.xMMd:ccccccccccccccc; Icons: Adwaita [GTK2/3]
cccccc;dNMWXXXWM0::cccccccccccccc:, Terminal: gnome-terminal
cccccccc;.:odl:.;cccccccccccccc:,. CPU: 11th Gen Intel i5-1145G7 (3) @ 1.497GHz
:cccccccccccccccccccccccccccc:'. GPU: 00:02.0 VMware SVGA II Adapter
.:cccccccccccccccccccccc:;,.. Memory: 8896MiB / 13866MiB
'::cccccccccccccc::;,.
Method 1 (didn't work for me):
Here is the command:
sudo dnf install kubernetes etcd
The console output should be similar to this:
[terminator@skynet ~]$ sudo dnf install kubernetes etcd
[sudo] password for terminator:
Last metadata expiration check: 0:01:47 ago on Tue 26 Sep 2023 04:58:28 PM CEST.
Dependencies resolved.
======================================================================================================================
Package Architecture Version Repository Size
======================================================================================================================
Installing:
etcd x86_64 3.5.5-2.fc38 fedora 17 M
kubernetes x86_64 1.26.9-2.fc38 updates 11 k
Installing dependencies:
conntrack-tools x86_64 1.4.7-1.fc38 updates 228 k
kubernetes-client x86_64 1.26.9-2.fc38 updates 11 M
kubernetes-master x86_64 1.26.9-2.fc38 updates 56 M
kubernetes-node x86_64 1.26.9-2.fc38 updates 32 M
libnetfilter_cthelper x86_64 1.0.0-23.fc38 fedora 22 k
libnetfilter_cttimeout x86_64 1.0.0-21.fc38 fedora 23 k
libnetfilter_queue x86_64 1.0.5-4.fc38 fedora 28 k
socat x86_64 1.7.4.4-2.fc38 fedora 314 k
Transaction Summary
======================================================================================================================
Install 10 Packages
Total download size: 116 M
Installed size: 561 M
Is this ok [y/N]: y
Downloading Packages:
(1/10): libnetfilter_cthelper-1.0.0-23.fc38.x86_64.rpm 42 kB/s | 22 kB 00:00
(2/10): libnetfilter_cttimeout-1.0.0-21.fc38.x86_64.rpm 35 kB/s | 23 kB 00:00
(3/10): kubernetes-1.26.9-2.fc38.x86_64.rpm 17 kB/s | 11 kB 00:00
(4/10): libnetfilter_queue-1.0.5-4.fc38.x86_64.rpm 37 kB/s | 28 kB 00:00
(5/10): conntrack-tools-1.4.7-1.fc38.x86_64.rpm 187 kB/s | 228 kB 00:01
(6/10): socat-1.7.4.4-2.fc38.x86_64.rpm 257 kB/s | 314 kB 00:01
(7/10): kubernetes-client-1.26.9-2.fc38.x86_64.rpm 1.8 MB/s | 11 MB 00:06
(8/10): etcd-3.5.5-2.fc38.x86_64.rpm 2.2 MB/s | 17 MB 00:07
(9/10): kubernetes-node-1.26.9-2.fc38.x86_64.rpm 1.6 MB/s | 32 MB 00:19
(10/10): kubernetes-master-1.26.9-2.fc38.x86_64.rpm 1.5 MB/s | 56 MB 00:36
-----------------------------------------------------------------------------------------------------------------------------------------------------------
Total 3.2 MB/s | 116 MB 00:36
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : kubernetes-client-1.26.9-2.fc38.x86_64 1/10
Running scriptlet: kubernetes-master-1.26.9-2.fc38.x86_64 2/10
Installing : kubernetes-master-1.26.9-2.fc38.x86_64 2/10
Running scriptlet: kubernetes-master-1.26.9-2.fc38.x86_64 2/10
Installing : socat-1.7.4.4-2.fc38.x86_64 3/10
Installing : libnetfilter_queue-1.0.5-4.fc38.x86_64 4/10
Installing : libnetfilter_cttimeout-1.0.0-21.fc38.x86_64 5/10
Installing : libnetfilter_cthelper-1.0.0-23.fc38.x86_64 6/10
Installing : conntrack-tools-1.4.7-1.fc38.x86_64 7/10
Running scriptlet: conntrack-tools-1.4.7-1.fc38.x86_64 7/10
Running scriptlet: kubernetes-node-1.26.9-2.fc38.x86_64 8/10
Installing : kubernetes-node-1.26.9-2.fc38.x86_64 8/10
Running scriptlet: kubernetes-node-1.26.9-2.fc38.x86_64 8/10
Installing : kubernetes-1.26.9-2.fc38.x86_64 9/10
Running scriptlet: etcd-3.5.5-2.fc38.x86_64 10/10
Installing : etcd-3.5.5-2.fc38.x86_64 10/10
Running scriptlet: etcd-3.5.5-2.fc38.x86_64 10/10
Verifying : etcd-3.5.5-2.fc38.x86_64 1/10
Verifying : libnetfilter_cthelper-1.0.0-23.fc38.x86_64 2/10
Verifying : libnetfilter_cttimeout-1.0.0-21.fc38.x86_64 3/10
Verifying : libnetfilter_queue-1.0.5-4.fc38.x86_64 4/10
Verifying : socat-1.7.4.4-2.fc38.x86_64 5/10
Verifying : conntrack-tools-1.4.7-1.fc38.x86_64 6/10
Verifying : kubernetes-1.26.9-2.fc38.x86_64 7/10
Verifying : kubernetes-client-1.26.9-2.fc38.x86_64 8/10
Verifying : kubernetes-master-1.26.9-2.fc38.x86_64 9/10
Verifying : kubernetes-node-1.26.9-2.fc38.x86_64 10/10
Installed:
conntrack-tools-1.4.7-1.fc38.x86_64 etcd-3.5.5-2.fc38.x86_64 kubernetes-1.26.9-2.fc38.x86_64
kubernetes-client-1.26.9-2.fc38.x86_64 kubernetes-master-1.26.9-2.fc38.x86_64 kubernetes-node-1.26.9-2.fc38.x86_64
libnetfilter_cthelper-1.0.0-23.fc38.x86_64 libnetfilter_cttimeout-1.0.0-21.fc38.x86_64 libnetfilter_queue-1.0.5-4.fc38.x86_64
socat-1.7.4.4-2.fc38.x86_64
Complete!
Here are the services that need to be enabled:
sudo systemctl enable --now etcd
sudo systemctl enable --now kube-apiserver
sudo systemctl enable --now kube-controller-manager
sudo systemctl enable --now kube-scheduler
sudo systemctl enable --now kubelet
sudo systemctl enable --now kube-proxy
sudo systemctl enable --now docker
Check status:
sudo systemctl status etcd
sudo systemctl status kube-apiserver
sudo systemctl status kube-controller-manager
sudo systemctl status kube-scheduler
sudo systemctl status kubelet
sudo systemctl status kube-proxy
sudo systemctl status docker
For me two things did not work after all this "easy" installation process:
- kube-apiserver
- kubelet
Of course, life is not easy. While others install it flawlessly I am always chosen to go through suffering and pain in order to learn and become stronger.
I decided to uninstall the shit by running sudo dnf uninstall kubernetes etcd
and try another method.
Sources:
Method 2 (didn't work for me):
I created Kubernetes repo inside YUM repos directory:
sudo nano /etc/yum.repos.d/kubernetes.repo
I added the following content, then saved and exited.
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=0 #NOTE: This was originally 1 but I set it to 0 to avoid yet another stupid error! It only skips the GPG check, no big deal.
gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
I then ran sudo yum install -y kubectl
to install Kubernetes (apparently).
The thing worked (apparently):
Kubernetes 115 kB/s | 182 kB 00:01
Dependencies resolved.
===============================================================================================================================================================================================
Package Architecture Version Repository Size
===============================================================================================================================================================================================
Installing:
kubectl x86_64 1.28.2-0 kubernetes 11 M
Transaction Summary
===============================================================================================================================================================================================
Install 1 Package
Total download size: 11 M
Installed size: 48 M
Downloading Packages:
a24e42254b5a14b67b58c4633d29c27370c28ed6796a80c455a65acc813ff374-kubectl-1.28.2-0.x86_64.rpm 2.2 MB/s | 11 MB 00:05
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 2.2 MB/s | 11 MB 00:05
Kubernetes 2.4 kB/s | 975 B 00:00
Importing GPG key 0x3E1BA8D5:
Userid : "Google Cloud Packages RPM Signing Key <gc-team@google.com>"
Fingerprint: 3749 E1BA 95A8 6CE0 5454 6ED2 F09C 394C 3E1B A8D5
From : https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : kubectl-1.28.2-0.x86_64 1/1
Verifying : kubectl-1.28.2-0.x86_64 1/1
Installed:
kubectl-1.28.2-0.x86_64
Complete!
However of course it had to be wrong!
[terminator@skynet yum.repos.d]$ kubectl cluster-info
E0927 17:19:22.391116 70151 memcache.go:265] couldn't get current server API group list: Get "http://localhost:8080/api?timeout=32s": dial tcp [::1]:8080: connect: connection refused
E0927 17:19:22.392277 70151 memcache.go:265] couldn't get current server API group list: Get "http://localhost:8080/api?timeout=32s": dial tcp [::1]:8080: connect: connection refused
E0927 17:19:22.392636 70151 memcache.go:265] couldn't get current server API group list: Get "http://localhost:8080/api?timeout=32s": dial tcp [::1]:8080: connect: connection refused
E0927 17:19:22.394451 70151 memcache.go:265] couldn't get current server API group list: Get "http://localhost:8080/api?timeout=32s": dial tcp [::1]:8080: connect: connection refused
E0927 17:19:22.396595 70151 memcache.go:265] couldn't get current server API group list: Get "http://localhost:8080/api?timeout=32s": dial tcp [::1]:8080: connect: connection refused
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
The connection to the server localhost:8080 was refused - did you specify the right host or port?
So again I ran sudo yum remove kubectl
to get out of the shit! (again).
Method 3 (worked for me):
So becuase luck seemed to never be on my side I decided to try both methods at the same time Method 1 and Method 2.
The result was the same, nothing was running well (as far as my understanding went) but this time I tried something different. After a lot of reading on the Internet and several minutes of reflection I realized that mayvbe everything was installed but not configured, I had a strong suspicion that something else was left to install/configure.
I decided to install minikube by running:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
This made a big difference becuase it configured kubectl to work with
minikube cluster and the default namespace by default.
Here's the output:
[terminator@skynet ~]$ minikube start
😄 minikube v1.31.2 on Fedora 38 (vbox/amd64)
✨ Automatically selected the qemu2 driver. Other choices: none, ssh
🌐 Automatically selected the builtin network
❗ You are using the QEMU driver without a dedicated network, which doesn't support `minikube service` & `minikube tunnel` commands.
💿 Downloading VM boot image ...
E0928 16:48:56.540837 100566 iso.go:90] Unable to download https://storage.googleapis.com/minikube-builds/iso/16971/minikube-v1.31.0-amd64.iso: getter: &{Ctx:context.Background Src:https://storage.googleapis.com/minikube-builds/iso/16971/minikube-v1.31.0-amd64.iso?checksum=file:https://storage.googleapis.com/minikube-builds/iso/16971/minikube-v1.31.0-amd64.iso.sha256 Dst:/home/hperez/.minikube/cache/iso/amd64/minikube-v1.31.0-amd64.iso.download Pwd: Mode:2 Umask:---------- Detectors:[0x3f9c8a8 0x3f9c8a8 0x3f9c8a8 0x3f9c8a8 0x3f9c8a8 0x3f9c8a8 0x3f9c8a8] Decompressors:map[bz2:0xc000056a60 gz:0xc000056a68 tar:0xc0000569f0 tar.bz2:0xc000056a10 tar.gz:0xc000056a20 tar.xz:0xc000056a30 tar.zst:0xc000056a40 tbz2:0xc000056a10 tgz:0xc000056a20 txz:0xc000056a30 tzst:0xc000056a40 xz:0xc000056a70 zip:0xc000056a80 zst:0xc000056a78] Getters:map[file:0xc0014dcb50 http:0xc00096ee60 https:0xc00096eeb0] Dir:false ProgressListener:0x3f579a0 Insecure:false DisableSymlinks:false Options:[0x12d0880]}: invalid checksum: Error downloading checksum file: bad response code: 404
💿 Downloading VM boot image ...
> minikube-v1.31.0-amd64.iso....: 65 B / 65 B [---------] 100.00% ? p/s 0s
> minikube-v1.31.0-amd64.iso: 289.20 MiB / 289.20 MiB 100.00% 2.35 MiB p/
👍 Starting control plane node minikube in cluster minikube
💾 Downloading Kubernetes v1.27.4 preload ...
> preloaded-images-k8s-v18-v1...: 393.21 MiB / 393.21 MiB 100.00% 2.14 Mi
🔥 Creating qemu2 VM (CPUs=2, Memory=3400MB, Disk=20000MB) ...
🐳 Preparing Kubernetes v1.27.4 on Docker 24.0.4 ...
▪ Generating certificates and keys ...
▪ Booting up control plane ...
▪ Configuring RBAC rules ...
🔗 Configuring bridge CNI (Container Networking Interface) ...
▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🔎 Verifying Kubernetes components...
🌟 Enabled addons: default-storageclass, storage-provisioner
🏄 Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
Then I installed K9S by running curl -sS https://webinstall.dev/k9s | bash
and this was the output:
[terminator@skynet ~]$ curl -sS https://webinstall.dev/k9s | bash
Thanks for using webi to install 'k9s@stable' on 'Linux/6.4.15-200.fc38.x86_64/x86_64'.
Have a problem? Experience a bug? Please let us know:
https://github.com/webinstall/webi-installers/issues
Lovin' it? Say thanks with a Star on GitHub:
https://github.com/webinstall/webi-installers
Downloading k9s from
https://github.com/derailed/k9s/releases/download/v0.27.4/k9s_Linux_amd64.tar.gz
Saved as /home/terminator/Downloads/webi/k9s/0.27.4/k9s_Linux_amd64.tar.gz
Extracting /home/terminator/Downloads/webi/k9s/0.27.4/k9s_Linux_amd64.tar.gz
Installing to /home/terminator/.local/opt/k9s-v0.27.4/bin/k9s
Installed 'k9s v0.27.4' as /home/terminator/.local/bin/k9s
Now everything is OK!!
Sources: