{"id":6427,"date":"2019-08-29T07:59:15","date_gmt":"2019-08-29T07:59:15","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=6427"},"modified":"2022-05-25T08:38:27","modified_gmt":"2022-05-25T08:38:27","slug":"setting-up-kubernetes-clusters-using-kubeadm-manual-way-in-rhel-7-centos7","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/setting-up-kubernetes-clusters-using-kubeadm-manual-way-in-rhel-7-centos7\/","title":{"rendered":"Setting up Kubernetes Clusters using Kubeadm Manual way in RHEL 7 \/ Centos7"},"content":{"rendered":"\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-devopsschool-com wp-block-embed-devopsschool-com\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"9WYbHif4rr\"><a href=\"https:\/\/www.devopsschool.com\/blog\/how-to-delete-remove-clean-existing-corrupted-or-old-kubeadm-kubernetes-clusters-setup\/\">How to delete\/remove\/clean existing corrupted or old kubeadm kubernetes clusters setup?<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;How to delete\/remove\/clean existing corrupted or old kubeadm kubernetes clusters setup?&#8221; &#8212; \" src=\"https:\/\/www.devopsschool.com\/blog\/how-to-delete-remove-clean-existing-corrupted-or-old-kubeadm-kubernetes-clusters-setup\/embed\/#?secret=EwSimhzvpT#?secret=9WYbHif4rr\" data-secret=\"9WYbHif4rr\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">What is Kubeadm?<\/h3>\n\n\n\n<p>Kubeadm helps you bootstrap a minimum viable Kubernetes cluster that conforms to best practices. Kubeadm is a tool built to provide kubeadm init and kubeadm join as best-practice &#8220;fast paths&#8221; for creating Kubernetes clusters. <\/p>\n\n\n\n<p><strong>Goal<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>To Install a single master Kubernetes cluster<\/li><li>To Install a high availability master Kubernetes cluster  <\/li><li>To Install a Pod network on the cluster so that your Pods can talk to each other.<\/li><\/ul>\n\n\n\n<p><strong>kubeadm\u2019s simplicity means it can serve a wide range of use cases:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>New users can start with kubeadm to try Kubernetes out for the first time.<\/li><li>Users familiar with Kubernetes can spin up clusters with kubeadm and test their applications.<\/li><li>Larger projects can include kubeadm as a building block in a more complex system that can also include other installer tools.<\/li><\/ul>\n\n\n\n<p><strong>Pre-requisite <\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>One or more machines running a deb\/rpm-compatible OS, for example Ubuntu or CentOS<\/li><li>2 GB or more of RAM per machine. Any less leaves little room for your apps.<\/li><li>2 CPUs or more on the master<\/li><li>Full network connectivity among all machines in the cluster. A public or private network is fine<\/li><\/ul>\n\n\n\n<p> <strong>Pre-requisite <\/strong> &#8211; <a href=\"https:\/\/www.devopsschool.com\/tutorial\/docker\/install-config\/\">Installing Docker<\/a> [ This need to be there in Master and Worker Node. Both]<\/p>\n\n\n\n<p><strong>As part of the installation, every node (master and minions) needs:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li> <strong>kubeadm<\/strong>: the command to bootstrap the cluster.<\/li><li> <strong>kubelet<\/strong>: the component that runs on all of the machines in your <strong>cluster <\/strong>and does things like starting pods and containers.<\/li><li> <strong>kubectl<\/strong>: the command line util to talk to your cluster.<\/li><li> <strong>Docker<\/strong>: Container Enginer<\/li><li> <strong>CNI<\/strong>: Container Network interfacer <\/li><\/ul>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Master: Setting Up a Kubernetes Control Plane<\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 1 &#8211; Change VMs Mac Address in Virtual box -&gt; Setting -&gt; Network -&gt;Advance<\/strong><\/h3>\n\n\n\n<p>Note &#8211; Please POWER off the VM before changing Mac Address.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"641\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/11\/Change-VMs-Mac-Address-in-Virtual-box.jpg\" alt=\"\" class=\"wp-image-19715\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/11\/Change-VMs-Mac-Address-in-Virtual-box.jpg 1024w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/11\/Change-VMs-Mac-Address-in-Virtual-box-300x188.jpg 300w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/11\/Change-VMs-Mac-Address-in-Virtual-box-768x481.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 2 &#8211; Change Host Name<\/strong> of Master Server<\/h3>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">$ hostnamectl <span class=\"hljs-keyword\">set<\/span>-hostname rajesh.master.com<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 3 &#8211; Stop and Disable Firewall<\/strong><\/h3>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">$ systemctl stop firewalld\n$ systemctl disable firewalld<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 4 &#8211; Disable swap<\/strong><\/h3>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$ sudo swapoff -a\n$ sudo sed -i <span class=\"hljs-string\">'\/ swap \/ s\/^\/#\/'<\/span> \/etc\/fstab\n\n<span class=\"hljs-comment\"># Reboot a machine after that.\t<\/span>\n$ shutdown -r now<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 5 &#8211; Install and Start Docker Community Editon in Master Server<\/strong><\/h3>\n\n\n\n<script src=\"https:\/\/gist.github.com\/devops-school\/e6a09200d0c3ea9ea8a7905b598f08be.js\"><\/script>\n\n\n\n<h3 class=\"wp-block-heading\">Special Step &#8211; For Docker Only with Kubernetes 1.22<\/h3>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-devopsschool-com wp-block-embed-devopsschool-com\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"b1CYM3al17\"><a href=\"https:\/\/www.devopsschool.com\/blog\/how-to-change-the-cgroup-driver-from-cgroupfs-systemd-in-docker\/\">How to change the cgroup driver from cgroupfs systemd in docker?<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;How to change the cgroup driver from cgroupfs systemd in docker?&#8221; &#8212; \" src=\"https:\/\/www.devopsschool.com\/blog\/how-to-change-the-cgroup-driver-from-cgroupfs-systemd-in-docker\/embed\/#?secret=C5PruCKdC4#?secret=b1CYM3al17\" data-secret=\"b1CYM3al17\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 6 &#8211; Setup yum repo for kubelet kubeadm kubectl<\/strong><\/h3>\n\n\n\n<script src=\"https:\/\/gist.github.com\/devops-school\/1e4f8759fdb1e42133497385e09f4c04.js\"><\/script>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 7 &#8211; Set SELinux in permissive mode (effectively disabling it)<\/strong><\/h3>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">$ setenforce <span class=\"hljs-number\">0<\/span>\n$ sed -i <span class=\"hljs-string\">'s\/^SELINUX=enforcing$\/SELINUX=permissive\/'<\/span> \/etc\/selinux\/config<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 8 &#8211; Install kubelet kubeadm kubectl and enable kubelet<\/strong><\/h3>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$ yum install -y kubelet<span class=\"hljs-number\">-1.22<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">-0.<\/span>x86_64 kubeadm<span class=\"hljs-number\">-1.22<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">-0.<\/span>x86_64 kubectl<span class=\"hljs-number\">-1.22<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">-0.<\/span>x86_64 --disableexcludes=kubernetes\n$ systemctl enable --now kubelet\n\n<span class=\"hljs-comment\"># Latest <\/span>\r\n$ yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes\r\n<span class=\"hljs-comment\"># Kubernetes 1.23 <\/span>\r\n$ yum install -y kubelet<span class=\"hljs-number\">-1.23<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">-0.<\/span>x86_64 kubeadm<span class=\"hljs-number\">-1.23<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">-0.<\/span>x86_64 kubectl<span class=\"hljs-number\">-1.23<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">-0.<\/span>x86_64 --disableexcludes=kubernetes\r\n<span class=\"hljs-comment\"># Kubernetes 1.22<\/span>\r\n$ yum install -y kubelet<span class=\"hljs-number\">-1.22<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">-0.<\/span>x86_64 kubeadm<span class=\"hljs-number\">-1.22<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">-0.<\/span>x86_64 kubectl<span class=\"hljs-number\">-1.22<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">-0.<\/span>x86_64 --disableexcludes=kubernetes\r\n<span class=\"hljs-comment\"># Kubernetes 1.21<\/span>\r\n$ yum install -y kubelet<span class=\"hljs-number\">-1.21<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">-0.<\/span>x86_64 kubeadm<span class=\"hljs-number\">-1.21<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">-0.<\/span>x86_64 kubectl<span class=\"hljs-number\">-1.21<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">-0.<\/span>x86_64 --disableexcludes=kubernetes\r\n<span class=\"hljs-comment\"># Kubernetes 1.20<\/span>\r\n$ yum install -y kubelet<span class=\"hljs-number\">-1.20<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">-0.<\/span>x86_64 kubeadm<span class=\"hljs-number\">-1.20<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">-0.<\/span>x86_64 kubectl<span class=\"hljs-number\">-1.20<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">-0.<\/span>x86_64 --disableexcludes=kubernetes<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 9 &#8211; Finally, initialize a kubernetes clusters<\/strong><\/h3>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$ kubeadm init --ignore-preflight-errors all\n\n<span class=\"hljs-comment\"># How to install older version of Kubernetes<\/span>\n<span class=\"hljs-comment\"># kubeadm init --kubernetes-version=v1.9.2  <\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 10 &#8211; Output<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"993\" height=\"588\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/09\/kubeadm-successful-output.jpg\" alt=\"\" class=\"wp-image-18539\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/09\/kubeadm-successful-output.jpg 993w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/09\/kubeadm-successful-output-300x178.jpg 300w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/09\/kubeadm-successful-output-768x455.jpg 768w\" sizes=\"auto, (max-width: 993px) 100vw, 993px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Workstation: Setting Up a Kubernetes Workstation<\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 11 &#8211; Setup Workstation in the Master node only. You can be regular user for it.<\/h3>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$ mkdir -p $HOME\/.kube\n$ sudo cp -i \/etc\/kubernetes\/admin.conf $HOME\/.kube\/config\n$ sudo chown $(id -u):$(id -g) $HOME\/.kube\/config<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 12 &#8211; Verify Clustors<\/strong><\/h3>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">$ kubectl <span class=\"hljs-keyword\">get<\/span> nodes\n$ kubectl <span class=\"hljs-keyword\">get<\/span> pods --all-namespaces<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"395\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/11\/Kubernetes-Clustors-without-pod-networking-1024x395.jpg\" alt=\"\" class=\"wp-image-19723\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/11\/Kubernetes-Clustors-without-pod-networking-1024x395.jpg 1024w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/11\/Kubernetes-Clustors-without-pod-networking-300x116.jpg 300w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/11\/Kubernetes-Clustors-without-pod-networking-768x296.jpg 768w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/11\/Kubernetes-Clustors-without-pod-networking.jpg 1352w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 13 &#8211; Install Kubernetes pod networking<\/strong><\/h3>\n\n\n\n<p>Weave Net provides networking and network policy, will carry on working on both sides of a network partition, and does not require an external database. Kubernetes versions 1.6 and above:<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">$ kubectl apply -f <span class=\"hljs-string\">\"https:\/\/cloud.weave.works\/k8s\/net?k8s-version=$(kubectl version | base64 | tr -d '\\n')\"<\/span>\n$ kubectl <span class=\"hljs-keyword\">get<\/span> nodes\n$ kubectl <span class=\"hljs-keyword\">get<\/span> pods --all-namespaces\n$ kubectl <span class=\"hljs-keyword\">get<\/span> nodes<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"512\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/11\/Install-Kubernetes-pod-networking-1024x512.jpg\" alt=\"\" class=\"wp-image-19721\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/11\/Install-Kubernetes-pod-networking-1024x512.jpg 1024w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/11\/Install-Kubernetes-pod-networking-300x150.jpg 300w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/11\/Install-Kubernetes-pod-networking-768x384.jpg 768w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/11\/Install-Kubernetes-pod-networking.jpg 1347w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Worker: Setting Up a Kubernetes Worker<\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 14 &#8211; Setup nodes [ In the node aka worker<\/strong><\/h3>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># Follow Step 1 <\/span>\n<span class=\"hljs-comment\"># Follow Step 2<\/span>\n<span class=\"hljs-comment\"># Follow Step 3<\/span>\n<span class=\"hljs-comment\"># Follow Step 4<\/span>\n<span class=\"hljs-comment\"># Follow Step 5<\/span>\n<span class=\"hljs-comment\"># Follow Step 6<\/span>\n<span class=\"hljs-comment\"># Follow Step 7<\/span>\n<span class=\"hljs-comment\"># Follow Step 8<\/span>\n\n<span class=\"hljs-comment\"># Run following commands which we got from kubeadm init<\/span>\n$ kubeadm join <span class=\"hljs-number\">172.31<\/span><span class=\"hljs-number\">.31<\/span><span class=\"hljs-number\">.106<\/span>:<span class=\"hljs-number\">6443<\/span> --token pdn6in.r0dzhpx1ucrs69au --discovery-token-ca-cert-hash sha256:a9385951e659a3c67f55ccfbdc1169b1f660ba09aaf8cc6d5cc96d71b71900d2<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<div class=\"epyt-gallery\" data-currpage=\"1\" id=\"epyt_gallery_17614\"><figure class=\"wp-block-embed wp-block-embed-youtube is-type-video is-provider-youtube epyt-figure\"><div class=\"wp-block-embed__wrapper\"><iframe loading=\"lazy\"  id=\"_ytid_57902\"  width=\"760\" height=\"427\"  data-origwidth=\"760\" data-origheight=\"427\" src=\"https:\/\/www.youtube.com\/embed\/?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=1&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;theme=dark&#038;color=red&#038;controls=1&#038;disablekb=0&#038;\" class=\"__youtube_prefs__  no-lazyload\" title=\"YouTube player\"  data-epytgalleryid=\"epyt_gallery_17614\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><\/div><\/figure><div class=\"epyt-gallery-list\"><div>Sorry, there was a YouTube error.<\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>What is Kubeadm? Kubeadm helps you bootstrap a minimum viable Kubernetes cluster that conforms to best practices. Kubeadm is a tool built to provide kubeadm init and kubeadm join as best-practice &#8220;fast paths&#8221; for creating Kubernetes clusters. Goal To Install a single master Kubernetes cluster To Install a high availability master Kubernetes cluster To Install&#8230;<\/p>\n","protected":false},"author":1,"featured_media":12781,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","_joinchat":[],"footnotes":""},"categories":[4859],"tags":[5530,95,5449,4947,4860,5231,5484],"class_list":["post-6427","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kubernetes","tag-clusters","tag-devops","tag-devopsschool","tag-kubeadm","tag-kubernetes","tag-rhel-7","tag-setting"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/6427","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=6427"}],"version-history":[{"count":35,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/6427\/revisions"}],"predecessor-version":[{"id":30121,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/6427\/revisions\/30121"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media\/12781"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=6427"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=6427"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=6427"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}