<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://coolscript.net/index.php?action=history&amp;feed=atom&amp;title=Install_Kubernetes_1.28_on_Debian_12_with_Flannel</id>
	<title>Install Kubernetes 1.28 on Debian 12 with Flannel - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://coolscript.net/index.php?action=history&amp;feed=atom&amp;title=Install_Kubernetes_1.28_on_Debian_12_with_Flannel"/>
	<link rel="alternate" type="text/html" href="https://coolscript.net/index.php?title=Install_Kubernetes_1.28_on_Debian_12_with_Flannel&amp;action=history"/>
	<updated>2026-06-02T20:13:31Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://coolscript.net/index.php?title=Install_Kubernetes_1.28_on_Debian_12_with_Flannel&amp;diff=1002&amp;oldid=prev</id>
		<title>Admin: Created page with &quot;=Intro= Installation example of Kubernetes Cluster on Debian 11 Hosts used in this sample: *c1-control-plane *c1-worker-1 *c1-worker-2  *Host specs: *VM&#039;s with 2CPUs, 4GB Ram each, running Debian11  *&#039;&#039;&#039;Note&#039;&#039;&#039; No sudo was used in this Lab, instead work as root  *Host file example of c1-control-plane  127.0.1.1       c1-control-plane  127.0.0.1       localhost  192.168.178.100 c1-control-plane vm-c1-control-plane  192.168.178.101 c1-worker-1 vm-c1-worker-1  192.168.178.1...&quot;</title>
		<link rel="alternate" type="text/html" href="https://coolscript.net/index.php?title=Install_Kubernetes_1.28_on_Debian_12_with_Flannel&amp;diff=1002&amp;oldid=prev"/>
		<updated>2023-10-23T15:57:48Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;=Intro= Installation example of Kubernetes Cluster on Debian 11 Hosts used in this sample: *c1-control-plane *c1-worker-1 *c1-worker-2  *Host specs: *VM&amp;#039;s with 2CPUs, 4GB Ram each, running Debian11  *&amp;#039;&amp;#039;&amp;#039;Note&amp;#039;&amp;#039;&amp;#039; No sudo was used in this Lab, instead work as root  *Host file example of c1-control-plane  127.0.1.1       c1-control-plane  127.0.0.1       localhost  192.168.178.100 c1-control-plane vm-c1-control-plane  192.168.178.101 c1-worker-1 vm-c1-worker-1  192.168.178.1...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Intro=&lt;br /&gt;
Installation example of Kubernetes Cluster on Debian 11&lt;br /&gt;
Hosts used in this sample:&lt;br /&gt;
*c1-control-plane&lt;br /&gt;
*c1-worker-1&lt;br /&gt;
*c1-worker-2&lt;br /&gt;
&lt;br /&gt;
*Host specs:&lt;br /&gt;
*VM&amp;#039;s with 2CPUs, 4GB Ram each, running Debian11&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Note&amp;#039;&amp;#039;&amp;#039; No sudo was used in this Lab, instead work as root&lt;br /&gt;
&lt;br /&gt;
*Host file example of c1-control-plane&lt;br /&gt;
 127.0.1.1       c1-control-plane&lt;br /&gt;
 127.0.0.1       localhost&lt;br /&gt;
 192.168.178.100 c1-control-plane vm-c1-control-plane&lt;br /&gt;
 192.168.178.101 c1-worker-1 vm-c1-worker-1&lt;br /&gt;
 192.168.178.102 c1-worker-2 vm-c1-worker-2&lt;br /&gt;
&lt;br /&gt;
=Installation on Master and on all Nodes=&lt;br /&gt;
==Hostnames==&lt;br /&gt;
Hostnames used in this Lab, makle sure to add them into /etc/hosts on all machines&lt;br /&gt;
*c1-control-plane&lt;br /&gt;
*c1-worker-1&lt;br /&gt;
*c1-worker-2&lt;br /&gt;
&lt;br /&gt;
==Load required modules and set kernel settings==&lt;br /&gt;
 cat &amp;lt;&amp;lt; EOF |  tee /etc/modules-load.d/containerd.conf&lt;br /&gt;
 overlay&lt;br /&gt;
 br_netfilter&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 cat &amp;lt;&amp;lt; EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf&lt;br /&gt;
 net.ipv4.ip_forward = 1&lt;br /&gt;
 net.bridge.bridge-nf-call-iptables = 1&lt;br /&gt;
 net.bridge.bridge-nf-call-ip6tables = 1&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
*Turn off swap&lt;br /&gt;
 sudo sed -i &amp;#039;/swap/d&amp;#039; /etc/fstab&lt;br /&gt;
&lt;br /&gt;
*Apply&lt;br /&gt;
 modprobe overlay&lt;br /&gt;
 modprobe br_netfilter&lt;br /&gt;
 sysctl --system&lt;br /&gt;
 swapoff -a&lt;br /&gt;
&lt;br /&gt;
*Install an NTP server otherwise etcd will be mad.&lt;br /&gt;
 apt install -y chrony&lt;br /&gt;
&lt;br /&gt;
==Containerd==&lt;br /&gt;
&lt;br /&gt;
*Requires the Docker repository&lt;br /&gt;
 apt install -y curl gpg lsb-release apparmor apparmor-utils&lt;br /&gt;
 curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg&lt;br /&gt;
 echo &amp;quot;deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable&amp;quot; | tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null &lt;br /&gt;
&lt;br /&gt;
*Update and install&lt;br /&gt;
 apt update&lt;br /&gt;
 apt-get install -y containerd.io&lt;br /&gt;
*Create a default configuration&lt;br /&gt;
 mkdir -p /etc/containerd&lt;br /&gt;
 containerd config default | tee /etc/containerd/config.toml &lt;br /&gt;
&lt;br /&gt;
*Open /etc/containerd/config.toml &lt;br /&gt;
**Search &lt;br /&gt;
 [plugins.&amp;quot;io.containerd.grpc.v1.cri&amp;quot;.containerd.runtimes.runc.options]&lt;br /&gt;
*Underneath add or change to:&lt;br /&gt;
  SystemdCgroup = true   &lt;br /&gt;
&lt;br /&gt;
*Restart and check the service&lt;br /&gt;
 systemctl restart containerd&lt;br /&gt;
 systemctl status containerd&lt;br /&gt;
&lt;br /&gt;
==Kubernetes==&lt;br /&gt;
===Repository===&lt;br /&gt;
 apt-get install -y apt-transport-https ca-certificates curl&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /&amp;quot; | sudo tee /etc/apt/sources.list.d/kubernetes.list&lt;br /&gt;
 curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg&lt;br /&gt;
===Additional Packages===&lt;br /&gt;
*Need iptables &lt;br /&gt;
 apt-get install -y iptables libiptc0/stable libxtables12/stable&lt;br /&gt;
*Need the containertools (https://github.com/flannel-io/flannel)&lt;br /&gt;
 apt-get install containernetworking-plugins&lt;br /&gt;
&lt;br /&gt;
===Install and Hold===&lt;br /&gt;
 apt-get install -y kubelet kubeadm kubectl&lt;br /&gt;
 apt-mark hold kubelet kubeadm kubectl&lt;br /&gt;
&lt;br /&gt;
=Initialization - MASTER ONLY=&lt;br /&gt;
==Init==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ATTENTION&amp;#039;&amp;#039;&amp;#039; As per Flannel requirement: You need to choose the below network&lt;br /&gt;
*https://gist.github.com/rkaramandi/44c7cea91501e735ea99e356e9ae7883&lt;br /&gt;
*https://stackoverflow.com/questions/48984659/understanding-kubeadm-init-command-for-flannel&lt;br /&gt;
&lt;br /&gt;
 # &amp;#039;&amp;#039;&amp;#039;sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version 1.28.3&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
 root@c1-control-plane:~# sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version 1.28.3&lt;br /&gt;
 [init] Using Kubernetes version: v1.28.3&lt;br /&gt;
 [preflight] Running pre-flight checks&lt;br /&gt;
 [preflight] Pulling images required for setting up a Kubernetes cluster&lt;br /&gt;
 [preflight] This might take a minute or two, depending on the speed of your internet connection&lt;br /&gt;
 [preflight] You can also perform this action in beforehand using &amp;#039;kubeadm config images pull&amp;#039;&lt;br /&gt;
 W1023 17:26:28.088349     876 checks.go:835] detected that the sandbox image &amp;quot;registry.k8s.io/pause:3.6&amp;quot; of the container runtime is inconsistent with that used by kubeadm. It is recommended that using &lt;br /&gt;
 &amp;quot;registry.k8s.io/pause:3.9&amp;quot; as the CRI sandbox image.&lt;br /&gt;
 [certs] Using certificateDir folder &amp;quot;/etc/kubernetes/pki&amp;quot;&lt;br /&gt;
 [certs] Generating &amp;quot;ca&amp;quot; certificate and key&lt;br /&gt;
 [certs] Generating &amp;quot;apiserver&amp;quot; certificate and key&lt;br /&gt;
 [certs] apiserver serving cert is signed for DNS names [c1-control-plane kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 192.168.2.47]&lt;br /&gt;
 [certs] Generating &amp;quot;apiserver-kubelet-client&amp;quot; certificate and key&lt;br /&gt;
 [certs] Generating &amp;quot;front-proxy-ca&amp;quot; certificate and key&lt;br /&gt;
 [certs] Generating &amp;quot;front-proxy-client&amp;quot; certificate and key&lt;br /&gt;
 [certs] Generating &amp;quot;etcd/ca&amp;quot; certificate and key&lt;br /&gt;
 [certs] Generating &amp;quot;etcd/server&amp;quot; certificate and key&lt;br /&gt;
 [certs] etcd/server serving cert is signed for DNS names [c1-control-plane localhost] and IPs [192.168.2.47 127.0.0.1 ::1]&lt;br /&gt;
 [certs] Generating &amp;quot;etcd/peer&amp;quot; certificate and key&lt;br /&gt;
 [certs] etcd/peer serving cert is signed for DNS names [c1-control-plane localhost] and IPs [192.168.2.47 127.0.0.1 ::1]&lt;br /&gt;
 [certs] Generating &amp;quot;etcd/healthcheck-client&amp;quot; certificate and key&lt;br /&gt;
 [certs] Generating &amp;quot;apiserver-etcd-client&amp;quot; certificate and key&lt;br /&gt;
 [certs] Generating &amp;quot;sa&amp;quot; key and public key&lt;br /&gt;
 [kubeconfig] Using kubeconfig folder &amp;quot;/etc/kubernetes&amp;quot;&lt;br /&gt;
 [kubeconfig] Writing &amp;quot;admin.conf&amp;quot; kubeconfig file&lt;br /&gt;
 [kubeconfig] Writing &amp;quot;kubelet.conf&amp;quot; kubeconfig file&lt;br /&gt;
 [kubeconfig] Writing &amp;quot;controller-manager.conf&amp;quot; kubeconfig file&lt;br /&gt;
 [kubeconfig] Writing &amp;quot;scheduler.conf&amp;quot; kubeconfig file&lt;br /&gt;
 [etcd] Creating static Pod manifest for local etcd in &amp;quot;/etc/kubernetes/manifests&amp;quot;&lt;br /&gt;
 [control-plane] Using manifest folder &amp;quot;/etc/kubernetes/manifests&amp;quot;&lt;br /&gt;
 [control-plane] Creating static Pod manifest for &amp;quot;kube-apiserver&amp;quot;&lt;br /&gt;
 [control-plane] Creating static Pod manifest for &amp;quot;kube-controller-manager&amp;quot;&lt;br /&gt;
 [control-plane] Creating static Pod manifest for &amp;quot;kube-scheduler&amp;quot;&lt;br /&gt;
 [kubelet-start] Writing kubelet environment file with flags to file &amp;quot;/var/lib/kubelet/kubeadm-flags.env&amp;quot;&lt;br /&gt;
 [kubelet-start] Writing kubelet configuration to file &amp;quot;/var/lib/kubelet/config.yaml&amp;quot;&lt;br /&gt;
 [kubelet-start] Starting the kubelet&lt;br /&gt;
 [wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory &amp;quot;/etc/kubernetes/manifests&amp;quot;. This can take up to 4m0s&lt;br /&gt;
 [apiclient] All control plane components are healthy after 9.505068 seconds&lt;br /&gt;
 [upload-config] Storing the configuration used in ConfigMap &amp;quot;kubeadm-config&amp;quot; in the &amp;quot;kube-system&amp;quot; Namespace&lt;br /&gt;
 [kubelet] Creating a ConfigMap &amp;quot;kubelet-config&amp;quot; in namespace kube-system with the configuration for the kubelets in the cluster&lt;br /&gt;
 [upload-certs] Skipping phase. Please see --upload-certs&lt;br /&gt;
 [mark-control-plane] Marking the node c1-control-plane as control-plane by adding the labels: [node-role.kubernetes.io/control-plane node.kubernetes.io/exclude-from-external-load-balancers]&lt;br /&gt;
 [mark-control-plane] Marking the node c1-control-plane as control-plane by adding the taints [node-role.kubernetes.io/control-plane:NoSchedule]&lt;br /&gt;
 [bootstrap-token] Using token: hupohh.k18w02d2ow031qpj&lt;br /&gt;
 [bootstrap-token] Configuring bootstrap tokens, cluster-info ConfigMap, RBAC Roles&lt;br /&gt;
 [bootstrap-token] Configured RBAC rules to allow Node Bootstrap tokens to get nodes&lt;br /&gt;
 [bootstrap-token] Configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials&lt;br /&gt;
 [bootstrap-token] Configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token&lt;br /&gt;
 [bootstrap-token] Configured RBAC rules to allow certificate rotation for all node client certificates in the cluster&lt;br /&gt;
 [bootstrap-token] Creating the &amp;quot;cluster-info&amp;quot; ConfigMap in the &amp;quot;kube-public&amp;quot; namespace&lt;br /&gt;
 [kubelet-finalize] Updating &amp;quot;/etc/kubernetes/kubelet.conf&amp;quot; to point to a rotatable kubelet client certificate and key&lt;br /&gt;
 [addons] Applied essential addon: CoreDNS&lt;br /&gt;
 [addons] Applied essential addon: kube-proxy&lt;br /&gt;
 &lt;br /&gt;
 Your Kubernetes control-plane has initialized successfully!&lt;br /&gt;
 &lt;br /&gt;
 To start using your cluster, you need to run the following as a regular user:&lt;br /&gt;
 &lt;br /&gt;
  mkdir -p $HOME/.kube&lt;br /&gt;
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config&lt;br /&gt;
  sudo chown $(id -u):$(id -g) $HOME/.kube/config&lt;br /&gt;
 &lt;br /&gt;
 Alternatively, if you are the root user, you can run:&lt;br /&gt;
 &lt;br /&gt;
  export KUBECONFIG=/etc/kubernetes/admin.conf&lt;br /&gt;
 &lt;br /&gt;
 You should now deploy a pod network to the cluster.&lt;br /&gt;
 Run &amp;quot;kubectl apply -f [podnetwork].yaml&amp;quot; with one of the options listed at:&lt;br /&gt;
  https://kubernetes.io/docs/concepts/cluster-administration/addons/&lt;br /&gt;
 &lt;br /&gt;
 Then you can join any number of worker nodes by running the following on each as root:&lt;br /&gt;
 &lt;br /&gt;
 kubeadm join 192.168.2.47:6443 --token hupohh.k18w02d2ow031qpj \&lt;br /&gt;
        --discovery-token-ca-cert-hash sha256:8ed8285288a7a332e80123cf347034b6f0361a358d7f44b19882cf317d33e834&lt;br /&gt;
 root@c1-control-plane:~#&lt;br /&gt;
&lt;br /&gt;
==Regular user setup==&lt;br /&gt;
Switch to a normal, non root user&lt;br /&gt;
 mkdir -p $HOME/.kube&lt;br /&gt;
 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config&lt;br /&gt;
 sudo chown $(id -u):$(id -g) $HOME/.kube/config&lt;br /&gt;
&lt;br /&gt;
==Before Flannel==&lt;br /&gt;
Before Flannel&lt;br /&gt;
 vmadmin@vm-c1-control-plane:~$ &amp;#039;&amp;#039;&amp;#039;kubectl get nodes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 NAME                  STATUS     ROLES           AGE     VERSION&lt;br /&gt;
 vm-c1-control-plane   &amp;#039;&amp;#039;&amp;#039;NotReady&amp;#039;&amp;#039;&amp;#039;   control-plane   2m30s   v1.28.3&lt;br /&gt;
&lt;br /&gt;
==Apply Flannel==&lt;br /&gt;
&lt;br /&gt;
 # &amp;#039;&amp;#039;&amp;#039;kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 vmadmin@vm-c1-control-plane:~$ kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml&lt;br /&gt;
 namespace/kube-flannel created&lt;br /&gt;
 serviceaccount/flannel created&lt;br /&gt;
 clusterrole.rbac.authorization.k8s.io/flannel created&lt;br /&gt;
 clusterrolebinding.rbac.authorization.k8s.io/flannel created&lt;br /&gt;
 configmap/kube-flannel-cfg created&lt;br /&gt;
 daemonset.apps/kube-flannel-ds created&lt;br /&gt;
&lt;br /&gt;
==After Flannel==&lt;br /&gt;
After Flannel - &amp;#039;&amp;#039;&amp;#039;This may take a while&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 vmadmin@vm-c1-control-plane:~$ kubectl get nodes&lt;br /&gt;
 NAME                  STATUS   ROLES           AGE     VERSION&lt;br /&gt;
 vm-c1-control-plane   &amp;#039;&amp;#039;&amp;#039;Ready&amp;#039;&amp;#039;&amp;#039;    control-plane   3m35s   v1.28.3&lt;br /&gt;
&lt;br /&gt;
=Join the worker nodes=&lt;br /&gt;
==Node01==&lt;br /&gt;
 # &amp;#039;&amp;#039;&amp;#039;root@c1-worker-1:~# kubeadm join 192.168.2.47:6443 --token hupohh.k18w02d2ow031qpj --discovery-token-ca-cert-hash sha256:8ed8285288a7a332e80123cf347034b6f0361a358d7f44b19882cf317d33e834&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 root@c1-worker-1:~# kubeadm join 192.168.2.47:6443 --token hupohh.k18w02d2ow031qpj --discovery-token-ca-cert-hash sha256:8ed8285288a7a332e80123cf347034b6f0361a358d7f44b19882cf317d33e834&lt;br /&gt;
 [preflight] Running pre-flight checks&lt;br /&gt;
 [preflight] Reading configuration from the cluster...&lt;br /&gt;
 [preflight] FYI: You can look at this config file with &amp;#039;kubectl -n kube-system get cm kubeadm-config -o yaml&amp;#039;&lt;br /&gt;
 [kubelet-start] Writing kubelet configuration to file &amp;quot;/var/lib/kubelet/config.yaml&amp;quot;&lt;br /&gt;
 [kubelet-start] Writing kubelet environment file with flags to file &amp;quot;/var/lib/kubelet/kubeadm-flags.env&amp;quot;&lt;br /&gt;
 [kubelet-start] Starting the kubelet&lt;br /&gt;
 [kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...&lt;br /&gt;
 &lt;br /&gt;
 This node has joined the cluster:&lt;br /&gt;
 * Certificate signing request was sent to apiserver and a response was received.&lt;br /&gt;
 * The Kubelet was informed of the new secure connection details.&lt;br /&gt;
 &lt;br /&gt;
 Run &amp;#039;kubectl get nodes&amp;#039; on the control-plane to see this node join the cluster.&lt;br /&gt;
&lt;br /&gt;
==Node02==&lt;br /&gt;
 # &amp;#039;&amp;#039;&amp;#039;root@c1-worker-1:~# kubeadm join 192.168.2.47:6443 --token hupohh.k18w02d2ow031qpj --discovery-token-ca-cert-hash sha256:8ed8285288a7a332e80123cf347034b6f0361a358d7f44b19882cf317d33e834&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 root@c1-worker-1:~# kubeadm join 192.168.2.47:6443 --token hupohh.k18w02d2ow031qpj --discovery-token-ca-cert-hash sha256:8ed8285288a7a332e80123cf347034b6f0361a358d7f44b19882cf317d33e834&lt;br /&gt;
 [preflight] Running pre-flight checks&lt;br /&gt;
 [preflight] Reading configuration from the cluster...&lt;br /&gt;
 [preflight] FYI: You can look at this config file with &amp;#039;kubectl -n kube-system get cm kubeadm-config -o yaml&amp;#039;&lt;br /&gt;
 [kubelet-start] Writing kubelet configuration to file &amp;quot;/var/lib/kubelet/config.yaml&amp;quot;&lt;br /&gt;
 [kubelet-start] Writing kubelet environment file with flags to file &amp;quot;/var/lib/kubelet/kubeadm-flags.env&amp;quot;&lt;br /&gt;
 [kubelet-start] Starting the kubelet&lt;br /&gt;
 [kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...&lt;br /&gt;
 &lt;br /&gt;
 This node has joined the cluster:&lt;br /&gt;
 * Certificate signing request was sent to apiserver and a response was received.&lt;br /&gt;
 * The Kubelet was informed of the new secure connection details.&lt;br /&gt;
 &lt;br /&gt;
 Run &amp;#039;kubectl get nodes&amp;#039; on the control-plane to see this node join the cluster.&lt;br /&gt;
&lt;br /&gt;
==Show Results==&lt;br /&gt;
 # &amp;#039;&amp;#039;&amp;#039;kubectl get nodes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 vmadmin@vm-c1-control-plane:~$ kubectl get nodes&lt;br /&gt;
 NAME                  STATUS   ROLES           AGE     VERSION&lt;br /&gt;
 vm-c1-control-plane   Ready    control-plane   7m37s   v1.28.3&lt;br /&gt;
 vm-c1-worker-1        Ready    &amp;lt;none&amp;gt;          64s     v1.28.3&lt;br /&gt;
 vm-c1-worker-2        Ready    &amp;lt;none&amp;gt;          58s     v1.28.3&lt;br /&gt;
&lt;br /&gt;
==Optional Labeling==&lt;br /&gt;
 kubectl label node vm-c1-worker-1 node-role.kubernetes.io/worker=worker&lt;br /&gt;
 kubectl label node vm-c1-worker-2 node-role.kubernetes.io/worker=worker&lt;br /&gt;
&lt;br /&gt;
 vmadmin@vm-c1-control-plane:~$ kubectl get nodes&lt;br /&gt;
 NAME                  STATUS   ROLES           AGE     VERSION&lt;br /&gt;
 vm-c1-control-plane   Ready    control-plane   4m51s   v1.28.3&lt;br /&gt;
 vm-c1-worker-1        Ready    worker          2m56s   v1.28.3&lt;br /&gt;
 vm-c1-worker-2        Ready    worker          2m5s    v1.28.3&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
==Apply Test Pods==&lt;br /&gt;
*create nginx.yml&lt;br /&gt;
 ---&lt;br /&gt;
 apiVersion: v1&lt;br /&gt;
 kind: Pod&lt;br /&gt;
 metadata:&lt;br /&gt;
   name: nginx1&lt;br /&gt;
   labels:&lt;br /&gt;
     app: web&lt;br /&gt;
 spec:&lt;br /&gt;
   containers:&lt;br /&gt;
     - name: nginx1&lt;br /&gt;
       image: nginx&lt;br /&gt;
       ports:&lt;br /&gt;
         - containerPort: 80&lt;br /&gt;
 ---&lt;br /&gt;
 apiVersion: v1&lt;br /&gt;
 kind: Pod&lt;br /&gt;
 metadata:&lt;br /&gt;
   name: nginx2&lt;br /&gt;
   labels:&lt;br /&gt;
     app: web&lt;br /&gt;
 spec:&lt;br /&gt;
   containers:&lt;br /&gt;
     - name: nginx2&lt;br /&gt;
       image: nginx&lt;br /&gt;
       ports:&lt;br /&gt;
         - containerPort: 80&lt;br /&gt;
&lt;br /&gt;
*Apply&lt;br /&gt;
 # kubectl create -f nginx.yml&lt;br /&gt;
&lt;br /&gt;
*The result should look like:&lt;br /&gt;
 vmadmin@vm-c1-control-plane:~$ kubectl get pods -o wide&lt;br /&gt;
 NAME     READY   STATUS    RESTARTS   AGE   IP           NODE             NOMINATED NODE   READINESS GATES&lt;br /&gt;
 nginx1   1/1     Running   0          31s   10.244.2.4   vm-c1-worker-2   &amp;lt;none&amp;gt;           &amp;lt;none&amp;gt;&lt;br /&gt;
 nginx2   1/1     Running   0          31s   10.244.1.3   vm-c1-worker-1   &amp;lt;none&amp;gt;           &amp;lt;none&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Network Test==&lt;br /&gt;
*Connect to nginx1:&lt;br /&gt;
 kubectl exec --stdin --tty nginx -- /bin/bash&lt;br /&gt;
&lt;br /&gt;
*Install apps&lt;br /&gt;
 root@nginx1:/# apt-get update&lt;br /&gt;
 root@nginx1:/# apt-get install iputils-ping&lt;br /&gt;
&lt;br /&gt;
*Ping Nginx2 (YES!!!)&lt;br /&gt;
 root@nginx1:/# ping 10.244.1.3&lt;br /&gt;
 PING 10.244.1.3 (10.244.1.3) 56(84) bytes of data.&lt;br /&gt;
 64 bytes from 10.244.1.3: icmp_seq=1 ttl=62 time=0.563 ms&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
*Self installation using calico&lt;br /&gt;
https://www.howtoforge.de/anleitung/kubernetes-cluster-mit-kubeadm-auf-debian-11-einrichten/ &amp;lt;br&amp;gt;&lt;br /&gt;
https://www.linuxtechi.com/install-kubernetes-cluster-on-debian/ &amp;lt;br&amp;gt;&lt;br /&gt;
https://www.oueta.com/linux/create-a-debian-11-kubernetes-cluster-with-kubeadm/ &amp;lt;br&amp;gt;&lt;br /&gt;
*About calico&lt;br /&gt;
https://www.inovex.de/de/blog/kubernetes-networking-2-calico-cilium-weavenet/# &amp;lt;br&amp;gt;&lt;br /&gt;
*Interesting about installation via Ansible: &lt;br /&gt;
https://www.linuxsysadmins.com/install-kubernetes-cluster-with-ansible/ &amp;lt;br&amp;gt;&lt;br /&gt;
*About Container Network Interface (CNI) - Add Ons&lt;br /&gt;
https://kubernetes.io/docs/concepts/cluster-administration/addons/ &amp;lt;br&amp;gt;&lt;br /&gt;
https://platform9.com/blog/the-ultimate-guide-to-using-calico-flannel-weave-and-cilium/ &amp;lt;br&amp;gt;&lt;br /&gt;
https://kubevious.io/blog/post/comparing-kubernetes-container-network-interface-cni-providers &amp;lt;br&amp;gt;&lt;br /&gt;
https://www.linux-magazin.de/ausgaben/2017/08/netz-in-kubernetes/ &amp;lt;br&amp;gt;&lt;br /&gt;
https://ronaknathani.com/blog/2020/08/how-a-kubernetes-pod-gets-an-ip-address/ &amp;lt;br&amp;gt;&lt;br /&gt;
*Nice cheat sheet https://spacelift.io/blog/kubernetes-cheat-sheet&lt;br /&gt;
*Troubleshoot Flannel&lt;br /&gt;
https://www.continualintegration.com/miscellaneous-articles/how-do-you-solve-the-kubernetes-error-networkplugin-cni-failed-to-set-up-pod-network-open-run-flannel-subnet-env-no-such-file-or-directory/ &amp;lt;br&amp;gt;&lt;br /&gt;
https://www.programmersought.com/article/7824768991/ &amp;lt;br&amp;gt;&lt;br /&gt;
*Continue from Flannel&lt;br /&gt;
https://github.com/Thoorium/kubernetes-local-cluster-flannel-metallb-traefik&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>