Advanced Kubernetes 1 | CNCF Basics and Kubeadmο
1. CNCF Basicsο
(1) CNCF Trail Mapο
(2) Topics Overviewο
kubeadm
: installing kubernetes on-premK8s Operators
: file, block, and object storagecert-manager
: managing sslDex
: managing LDAPIstio
: service mesh, load balancingCalico
: networkingVault
: secret storeOpenshift
: PaaS
2. Environment Configurationο
Iβm on a M2 Macbook with Parallel as VM. So I use Parallel to start a Ubuntu 22.04 VM. When the VM is up, install the network tools and use ifconfig
to find the IP address
$ sudo apt install net-tools
$ ifconfig
Then ssh through the terminal from the macbook outside the VM.
Also, install git
with,
$ sudo apt-get update
$ sudo apt install git
3. Build 1-Node Environment with Kubeadmο
First, git clone from the libraray,
$ cd /home/parallels/
$ git clone https://github.com/Sadamingh/on-prem-or-cloud-agnostic-kubernetes.git
Then go to the directory by,
$ sudo su -
$ cd /home/parallels/on-prem-or-cloud-agnostic-kubernetes
Install docker
, kubelet
, kubeadm
, kubectl
with scripts/install-node.sh
,
$ source scripts/install-node.sh
The letβs bring up kubelet service by,
$ swapoff -a
$ sudo systemctl restart kubelet.service
After installation, configure kubeadm
through,
$ source scripts/config-kubeadm.sh
Note that the configuration step is supposed to be run only on the master node. For the other working nodes, we only have to run install-node.sh
.
Also note that podSubnet
value in config-kubeadm.sh
is originally set to be 10.211.0.0/16
. Please make sure this value aligns to the IP address.
Finally, letβs create a new user. First we have to go with the root permission. And execute the create-user.sh
script.
$ source scripts/create-user.sh
Then for the newly created user ubuntu
, we can reset the password by passwd
,
$ passwd ubuntu
4. Testο
We can test the cluster through the following commands and the following results are expected.
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
ubuntu-linux-22-04-desktop Ready control-plane 3h28m v1.26.2
$ kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-57b57c56f-4kb6g 1/1 Running 0 3h28m
kube-system canal-vpb26 2/2 Running 0 3h28m
kube-system coredns-787d4945fb-6kvh2 1/1 Running 0 3h28m
kube-system coredns-787d4945fb-t9cqf 1/1 Running 0 3h28m
kube-system etcd-ubuntu-linux-22-04-desktop 1/1 Running 0 3h28m
kube-system kube-apiserver-ubuntu-linux-22-04-desktop 1/1 Running 0 3h28m
kube-system kube-controller-manager-ubuntu-linux-22-04-desktop 1/1 Running 0 3h28m
kube-system kube-proxy-dcw8p 1/1 Running 0 3h28m
kube-system kube-scheduler-ubuntu-linux-22-04-desktop 1/1 Running 0 3h28m
5. Debugο
After rebooting the VM, the connection to kubernetes will be lost. Logs like
$ kubectl get nodes
E0313 10:34:40.260814 2711656 mencache.g:238] couldn't get current server API g roup list: Get "http://localhost: 8080/api?timeout=32s": dial tcp 127.0.0.1:8080:connect: connection refused
In this case, rerun install-node.sh
by,
$ source scripts/install-node.sh
$ swapoff -a
$ sudo systemctl restart kubelet.service