{"id":866,"date":"2023-08-15T22:02:17","date_gmt":"2023-08-15T16:32:17","guid":{"rendered":"https:\/\/www.openwriteup.com\/?page_id=866"},"modified":"2024-11-21T14:35:59","modified_gmt":"2024-11-21T09:05:59","slug":"setup-kubernetes-master-using-kubeadm","status":"publish","type":"page","link":"https:\/\/www.openwriteup.com\/?page_id=866","title":{"rendered":"Setup Kubernetes Master using kubeadm"},"content":{"rendered":"<p>We will be using docker as container run time, please follow the steps to install docker mentioned in this block<\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"w9NIuU7UX4\"><p><a href=\"https:\/\/www.openwriteup.com\/?page_id=785\">Docker lab setup on Ubuntu 22.04 Server LTS<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;Docker lab setup on Ubuntu 22.04 Server LTS&#8221; &#8212; OW\" src=\"https:\/\/www.openwriteup.com\/?page_id=785&#038;embed=true#?secret=YJDWlSsKYl#?secret=w9NIuU7UX4\" data-secret=\"w9NIuU7UX4\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<p><strong>Use sudo or login as root user &#8220;sudo su -&#8220;<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Lab :Configuring Repo and Installation for ubuntu\u00a0<\/strong><\/p>\n<p><strong>Ubuntu 22.04<\/strong><\/p>\n<p>Run in both ubuntu vms (step 1 ,step2 and step3)<\/p>\n<p><strong>step1<\/strong><\/p>\n<pre class=\"language-bash\" tabindex=\"0\">cat<code class=\"language-bash\"> <span class=\"token operator\">&lt;&lt;<\/span><span class=\"token string\">EOF<span class=\"token bash punctuation\"> <span class=\"token operator\">|<\/span> <span class=\"token function\">sudo<\/span> <span class=\"token function\">tee<\/span> \/etc\/modules-load.d\/k8s.conf<\/span>\r\noverlay\r\nbr_netfilter\r\nEOF<\/span>\r\n\r\n<span class=\"token function\">sudo<\/span> modprobe overlay\r\n<span class=\"token function\">sudo<\/span> modprobe br_netfilter\r\n\r\n<span class=\"token comment\"># sysctl params required by setup, params persist across reboots<\/span>\r\n<span class=\"token function\">cat<\/span> <span class=\"token operator\">&lt;&lt;<\/span><span class=\"token string\">EOF<span class=\"token bash punctuation\"> <span class=\"token operator\">|<\/span> <span class=\"token function\">sudo<\/span> <span class=\"token function\">tee<\/span> \/etc\/sysctl.d\/k8s.conf<\/span>\r\nnet.bridge.bridge-nf-call-iptables  = 1\r\nnet.bridge.bridge-nf-call-ip6tables = 1\r\nnet.ipv4.ip_forward                 = 1\r\nEOF<\/span>\r\n\r\n<span class=\"token comment\"># Apply sysctl params without reboot<\/span>\r\n<span class=\"token function\">sudo<\/span> <span class=\"token function\">sysctl<\/span> <span class=\"token parameter variable\">--system<\/span><\/code><\/pre>\n<pre><strong>Step2:\r\n<\/strong>\r\nsudo mkdir -p -m 755 \/etc\/apt\/keyrings\r\ncurl -fsSL https:\/\/pkgs.k8s.io\/core:\/stable:\/v1.30\/deb\/Release.key | sudo gpg --dearmor -o \/etc\/apt\/keyrings\/kubernetes-apt-keyring.gpg\r\n\r\necho 'deb [signed-by=\/etc\/apt\/keyrings\/kubernetes-apt-keyring.gpg] https:\/\/pkgs.k8s.io\/core:\/stable:\/v1.30\/deb\/ \/' | sudo tee \/etc\/apt\/sources.list.d\/kubernetes.list\r\napt-get update\r\n\r\nsudo apt-get install -y kubelet kubeadm kubectl<\/pre>\n<p>swap space can potentially interfere with this isolation. When a system is under memory pressure and starts swapping out memory to disk, it can lead to unpredictable performance and behavior for applications running inside containers.<\/p>\n<p><strong>step3<\/strong><\/p>\n<pre>swapoff -a\r\nsudo sed -i '\/ swap \/ s\/^\/#\/' \/etc\/fstab<\/pre>\n<p>Docker as runtime updating for k8s,This is important because Kubernetes requires all its components, and the container runtime uses systemd for cgroups.:<\/p>\n<pre>sh -c \"containerd config default &gt; \/etc\/containerd\/config.toml\"\r\nsed -i 's\/ SystemdCgroup = false\/ SystemdCgroup = true\/' \/etc\/containerd\/config.toml\r\nsystemctl restart containerd.service\r\nsystemctl restart kubelet.service\r\nsystemctl enable kubelet.service<\/pre>\n<p><strong>step4 :<\/strong> Runs <strong>only in master node<\/strong><\/p>\n<p>Initialize Cluster with kubeadm.<code>kubeadm init<\/code>, is used to initialize a Kubernetes control-plane node. The <code>--pod-network-cidr<\/code> flag specifies the range of IP addresses for the pod network in your cluster. The <code>10.1.0.0\/16<\/code><\/p>\n<pre>kubeadm init --pod-network-cidr=10.244.0.0\/16<\/pre>\n<p>To start using your cluster, you need to run the following as a regular user:<\/p>\n<p><strong>Note: copy the kubeadm join output and save in notepad<\/strong><\/p>\n<p><a href=\"https:\/\/www.openwriteup.com\/wp-content\/uploads\/2024\/02\/k8s.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1379\" src=\"https:\/\/www.openwriteup.com\/wp-content\/uploads\/2024\/02\/k8s-300x103.png\" alt=\"\" width=\"300\" height=\"103\" srcset=\"https:\/\/www.openwriteup.com\/wp-content\/uploads\/2024\/02\/k8s-300x103.png 300w, https:\/\/www.openwriteup.com\/wp-content\/uploads\/2024\/02\/k8s-700x241.png 700w, https:\/\/www.openwriteup.com\/wp-content\/uploads\/2024\/02\/k8s-768x264.png 768w, https:\/\/www.openwriteup.com\/wp-content\/uploads\/2024\/02\/k8s-1536x529.png 1536w, https:\/\/www.openwriteup.com\/wp-content\/uploads\/2024\/02\/k8s.png 1882w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<pre>Step5: Runs only in master node\r\nmkdir -p $HOME\/.kube\r\nsudo cp -i \/etc\/kubernetes\/admin.conf $HOME\/.kube\/config\r\nsudo chown $(id -u):$(id -g) $HOME\/.kube\/config<\/pre>\n<pre><\/pre>\n<p>Install the network plugin in master node<\/p>\n<pre>step 6: only in master<\/pre>\n<pre class=\"language-bash\" tabindex=\"0\">\u00a0kubectl apply -f https:\/\/raw.githubusercontent.com\/coreos\/flannel\/master\/Documentation\/kube-flannel.yml<\/pre>\n<p>Run command after 5 min<\/p>\n<pre>kubectl get nodes\r\n\r\n#Node must come ready\r\n#NAME STATUS ROLES AGE VERSION\r\n#okdmaster <strong>Ready<\/strong> control-plane 4m40s v1.26.5\r\n\r\n#If \"Not Ready\" persist, please restart the containerd service\r\nsystemctl restart containerd<\/pre>\n<p>Now run the kubeadm join command in client node (step 1,step2,step3)<\/p>\n<p><strong>Run the kubeadm join command which you have copied after kubeadm init<\/strong><\/p>\n<p>After kubeadm join command:<\/p>\n<p>In case you missed the kubeadm join command, run the below command to get it again on master:<\/p>\n<pre class=\"lang-yaml s-code-block\"><code class=\"hljs language-yaml\"><span class=\"hljs-string\">kubeadm<\/span> <span class=\"hljs-string\">token<\/span> <span class=\"hljs-string\">create<\/span> <span class=\"hljs-string\">--print-join-command\r\n<\/span><\/code><\/pre>\n<pre>#On the worker node, please run,\r\n\r\nmodprobe br_netfilter\r\n\r\necho '1' &gt; \/proc\/sys\/net\/ipv4\/ip_forward\r\n<em><strong>\r\n#B<\/strong><strong><em>el<\/em>ow is example, please run your copied kubeadm join command<\/strong><\/em>\r\n\r\n\r\n#kubeadm join 172.16.207.130:6443 --token r6i5ud.xyt1242cyo95ig68 --discovery-token-ca-cert-hash sha256:6717f453c5a347dcec6499b63fad0351d1986d19f2f8c3455dc8b3d03707e16a\r\n \r\nmkdir \/root\/.kube\r\ncp \/etc\/kubernetes\/kubelet.conf \/root\/.kube\/config\r\nkubectl get nodes<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>We will be using docker as container run time, please follow the steps to install docker mentioned in this block Docker lab setup on Ubuntu 22.04 Server LTS Use sudo or login as root user &#8220;sudo su -&#8220; &nbsp; Lab :Configuring Repo and Installation for ubuntu\u00a0 Ubuntu 22.04 Run in both ubuntu vms (step 1 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_oct_exclude_from_cache":false,"footnotes":""},"class_list":["post-866","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.openwriteup.com\/index.php?rest_route=\/wp\/v2\/pages\/866","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.openwriteup.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.openwriteup.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.openwriteup.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.openwriteup.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=866"}],"version-history":[{"count":25,"href":"https:\/\/www.openwriteup.com\/index.php?rest_route=\/wp\/v2\/pages\/866\/revisions"}],"predecessor-version":[{"id":1479,"href":"https:\/\/www.openwriteup.com\/index.php?rest_route=\/wp\/v2\/pages\/866\/revisions\/1479"}],"wp:attachment":[{"href":"https:\/\/www.openwriteup.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=866"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}