This commit is contained in:
2024-02-16 12:07:31 +01:00
parent 3b038318e7
commit 8331264aec
+41 -61
View File
@@ -62,107 +62,87 @@ Note: If firewall is disabled on your Debian 12/11 systems, then you can skip th
Containerd is the industry standard container run time and supported by Kubernetes. So, install containerd on all master and worker nodes. Containerd is the industry standard container run time and supported by Kubernetes. So, install containerd on all master and worker nodes.
Before installing containerd, set the following kernel parameters on all the nodes. Before installing containerd, set the following kernel parameters on all the nodes.
$ cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf >$ cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf \
overlay overlay \
br_netfilter br_netfilter \
EOF EOF \
$ sudo modprobe overlay $ modprobe overlay \
$ sudo modprobe br_netfilter $ modprobe br_netfilter \
$ cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-k8s.conf $ cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-k8s.conf \
net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-iptables = 1 \
net.ipv4.ip_forward = 1 net.ipv4.ip_forward = 1 \
net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-ip6tables = 1 \
EOF EOF
To make above changes into the effect, run To make above changes into the effect, run
$ sudo sysctl --system >$ sysctl --system
Now, install conatinerd by running following apt command on all the nodes. Now, install conatinerd by running following apt command on all the nodes.
$ sudo apt update >$ apt update \
$ sudo apt -y install containerd $ apt -y install containerd
Next, configure containerd so that it works with Kubernetes, run beneath command on all the nodes Next, configure containerd so that it works with Kubernetes, run beneath command on all the nodes
$ containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1 >$ containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
Edit the file /etc/containerd/config.toml and look for the section [plugins.”io.containerd.grpc.v1.cri”.containerd.runtimes.runc.options] and change SystemdCgroup = false to SystemdCgroup = true Edit the file /etc/containerd/config.toml and look for the section [plugins.”io.containerd.grpc.v1.cri”.containerd.runtimes.runc.options] and change SystemdCgroup = false to SystemdCgroup = true
$ sudo vi /etc/containerd/config.toml >$ vi /etc/containerd/config.toml
Enable-SystemCgroup-Containerd-Debain12
Save and exit the file. Save and exit the file.
Restart and enable containerd service on all the nodes, Restart and enable containerd service on all the nodes,
$ sudo systemctl restart containerd >$ systemctl restart containerd \
$ sudo systemctl enable containerd $ systemctl enable containerd
## Add Kubernetes Apt Repository ## Add Kubernetes Apt Repository
In Debian 12/11, Kubernetes related packages are not available in the default package repositories. We have to add additional Kubernetes apt repository on all the nodes, run In Debian 12/11, Kubernetes related packages are not available in the default package repositories. We have to add additional Kubernetes apt repository on all the nodes, run
>$ echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list \
$ echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
$ curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg $ curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
## Install Kubernetes Tools ## Install Kubernetes Tools
Next, install the Kubernetes tools, including kubeadm, kubelet, and kubectl on all the nodes. Next, install the Kubernetes tools, including kubeadm, kubelet, and kubectl on all the nodes.
$ sudo apt update >$ apt update \
$ sudo apt install kubelet kubeadm kubectl -y $ apt install kubelet kubeadm kubectl -y \
$ sudo apt-mark hold kubelet kubeadm kubectl $ apt-mark hold kubelet kubeadm kubectl
## Install Kubernetes Cluster with Kubeadm ## Install Kubernetes Cluster with Kubeadm
kubelet doesnt appreciate the command-line options anymore (these are deprecated). Instead, I suggest to create a configuration file, say kubelet.yaml with following content. kubelet doesnt appreciate the command-line options anymore (these are deprecated). Instead, I suggest to create a configuration file, say kubelet.yaml with following content.
>$ vi kubelet.yaml
>apiVersion: kubeadm.k8s.io/v1beta3 \
kind: InitConfiguration \
--- \
apiVersion: kubeadm.k8s.io/v1beta3 \
kind: ClusterConfiguration \
kubernetesVersion: "1.28.0" # Replace with your desired version \
controlPlaneEndpoint: "k8s-master" \
--- \
apiVersion: kubelet.config.k8s.io/v1beta1 \
kind: KubeletConfiguration
$ vi kubelet.yaml
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
---
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
kubernetesVersion: "1.28.0" # Replace with your desired version
controlPlaneEndpoint: "k8s-master"
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
Now, we are all set to initialize Kubernetes cluster, run following command only from master node, Now, we are all set to initialize Kubernetes cluster, run following command only from master node,
>$ kubeadm init --config kubelet.yaml
$ sudo kubeadm init --config kubelet.yaml
Output,
Install-Kubernetes-Cluster-Debian12-Kubeadm-Output
Above output confirms that control plane has been initialized successfully. In the output, we have commands for regular user for interacting with the cluster and also the command to join any worker node to this cluster. Above output confirms that control plane has been initialized successfully. In the output, we have commands for regular user for interacting with the cluster and also the command to join any worker node to this cluster.
To start interacting with cluster, run following commands on master node, To start interacting with cluster, run following commands on master node,
>$ mkdir -p $HOME/.kube \
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config \
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config \
$ mkdir -p $HOME/.kube Run following kubectl command to get nodes and cluster information
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config >$ kubectl get nodes \
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
Run following kubectl command to get nodes and cluster information,
$ kubectl get nodes
$ kubectl cluster-info $ kubectl cluster-info
Output of above commands,
Kubernetes-Cluster-information-Debian12
On your worker nodes, join them to the cluster by running the command that was displayed when you initialized the master node. It will look something like this Kubeadm join On your worker nodes, join them to the cluster by running the command that was displayed when you initialized the master node. It will look something like this Kubeadm join
Note: Copy the exact command from the output of kubeadm init command. In my case, following is the command Note: Copy the exact command from the output of kubeadm init command. In my case, following is the command
>$ sudo kubeadm join k8s-master:6443 --token 21nm87.x1lgd4jf0lqiiiau \\ \
$ sudo kubeadm join k8s-master:6443 --token 21nm87.x1lgd4jf0lqiiiau \
--discovery-token-ca-cert-hash sha256:28b503f1f2a2592678724c482776f04b445c5f99d76915552f14e68a24b78009 --discovery-token-ca-cert-hash sha256:28b503f1f2a2592678724c482776f04b445c5f99d76915552f14e68a24b78009
Output from Worker Node 1,
Worker01-Join-Kubernetes-Cluster-Debain12
Output from Worker Nod 2 ,
Worker02-Join-Kubernetes-Cluster-Debain12
Check the nodes status by running following command from master node, Check the nodes status by running following command from master node,
>$ kubectl get nodes
$ kubectl get nodes
Kubectl-Get-Nodes-Debian12
To make nodes status ready, we must install POD network addons like Calico or flannel. To make nodes status ready, we must install POD network addons like Calico or flannel.