{"id":1881,"date":"2022-01-06T06:58:31","date_gmt":"2022-01-06T06:58:31","guid":{"rendered":"https:\/\/blog.samarthya.me\/wps\/?p=1881"},"modified":"2022-01-06T06:58:34","modified_gmt":"2022-01-06T06:58:34","slug":"adding-node-to-a-cluster","status":"publish","type":"post","link":"https:\/\/blog.samarthya.me\/wps\/2022\/01\/06\/adding-node-to-a-cluster\/","title":{"rendered":"Adding Node to a cluster"},"content":{"rendered":"\n<p>In this blog, I will try add a new node to the already running cluster.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">My Cluster<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>\nroot@master>k get nodes\nNAME                              STATUS   ROLES                  AGE     VERSION\nmydevmachine001830.samarthya.me   Ready    &lt;none>                 22h     v1.23.1\nmydevmachine002687.samarthya.me   Ready    &lt;none>                 41d     v1.23.1\nmydevmachine003277.samarthya.me   Ready    &lt;none>                 131d    v1.23.1\nmydevmachine003278.samarthya.me   Ready    &lt;none>                 131d    v1.23.1\nmydevmachine003417.samarthya.me   Ready    &lt;none>                 4m55s   v1.23.1\nmydevmachine003968.samarthya.me   Ready    &lt;none>                 131d    v1.23.1\nmydevmachine003969.samarthya.me   Ready    control-plane,master   131d    v1.23.1\nmydevmachine003970.samarthya.me   Ready    &lt;none>                 131d    v1.23.1\nmydevmachine003979.samarthya.me   Ready    &lt;none>                 29m     v1.23.1<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Steps to follow<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Install <code>docker<\/code><\/li><li>Install <code>kubeadm<\/code>, <code>kubectl<\/code> &amp; <code>kubelet<\/code><\/li><li>Join the cluster using the token<\/li><li>Check the node has joined the cluster<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Install docker<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo yum install -y yum-utils\nsudo yum-config-manager \\\n    --add-repo \\\n    https:&#47;&#47;download.docker.com\/linux\/centos\/docker-ce.repo<\/code><\/pre>\n\n\n\n<p>When adding repo make sure the repo has been added successfully to the machine<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Loaded plugins: fastestmirror, langpacks\nadding repo from: https:\/\/download.docker.com\/linux\/centos\/docker-ce.repo\ngrabbing file https:\/\/download.docker.com\/linux\/centos\/docker-ce.repo to \/etc\/yum.repos.d\/docker-ce.repo\nrepo saved to \/etc\/yum.repos.d\/docker-ce.repo<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Install the docker<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo yum install docker-ce docker-ce-cli containerd.io<\/code><\/pre>\n\n\n\n<p>You may see the output as under<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Total                                                                                                                                                                                                    14 MB\/s |  93 MB  00:00:06     \nRetrieving key from https:\/\/download.docker.com\/linux\/centos\/gpg\nImporting GPG key 0x621E9F35:\n Userid     : \"Docker Release (CE rpm) &lt;docker@docker.com>\"\n Fingerprint: 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35\n From       : https:\/\/download.docker.com\/linux\/centos\/gpg\nIs this ok &#91;y\/N]: y\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Installing : docker-scan-plugin-0.12.0-3.el7.x86_64                                                                                                                                                                               1\/9 \n  Installing : 1:docker-ce-cli-20.10.12-3.el7.x86_64                                                                                                                                                                                2\/9 \n  Installing : 2:container-selinux-2.119.2-1.911c772.el7_8.noarch                                                                                                                                                                   3\/9 \n  Installing : containerd.io-1.4.12-3.1.el7.x86_64                                                                                                                                                                                  4\/9 \n  Installing : slirp4netns-0.4.3-4.el7_8.x86_64                                                                                                                                                                                     5\/9 \n  Installing : fuse3-libs-3.6.1-4.el7.x86_64                                                                                                                                                                                        6\/9 \n  Installing : fuse-overlayfs-0.7.2-6.el7_8.x86_64                                                                                                                                                                                  7\/9 \n  Installing : 3:docker-ce-20.10.12-3.el7.x86_64                                                                                                                                                                                    8\/9 \n  Installing : docker-ce-rootless-extras-20.10.12-3.el7.x86_64                                                                                                                                                                      9\/9 \n  Verifying  : fuse3-libs-3.6.1-4.el7.x86_64                                                                                                                                                                                        1\/9 \n  Verifying  : 1:docker-ce-cli-20.10.12-3.el7.x86_64                                                                                                                                                                                2\/9 \n  Verifying  : fuse-overlayfs-0.7.2-6.el7_8.x86_64                                                                                                                                                                                  3\/9 \n  Verifying  : docker-scan-plugin-0.12.0-3.el7.x86_64                                                                                                                                                                               4\/9 \n  Verifying  : slirp4netns-0.4.3-4.el7_8.x86_64                                                                                                                                                                                     5\/9 \n  Verifying  : 2:container-selinux-2.119.2-1.911c772.el7_8.noarch                                                                                                                                                                   6\/9 \n  Verifying  : docker-ce-rootless-extras-20.10.12-3.el7.x86_64                                                                                                                                                                      7\/9 \n  Verifying  : containerd.io-1.4.12-3.1.el7.x86_64                                                                                                                                                                                  8\/9 \n  Verifying  : 3:docker-ce-20.10.12-3.el7.x86_64                                                                                                                                                                                    9\/9 \n\nInstalled:\n  containerd.io.x86_64 0:1.4.12-3.1.el7                                         docker-ce.x86_64 3:20.10.12-3.el7                                         docker-ce-cli.x86_64 1:20.10.12-3.el7                                        \n\nDependency Installed:\n  container-selinux.noarch 2:2.119.2-1.911c772.el7_8    docker-ce-rootless-extras.x86_64 0:20.10.12-3.el7    docker-scan-plugin.x86_64 0:0.12.0-3.el7    fuse-overlayfs.x86_64 0:0.7.2-6.el7_8    fuse3-libs.x86_64 0:3.6.1-4.el7   \n  slirp4netns.x86_64 0:0.4.3-4.el7_8                   \n\nComplete!<\/code><\/pre>\n\n\n\n<p>This marks docker installation as complete. Time to enable the docker, and run it.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>> systemctl enable docker\nCreated symlink from \/etc\/systemd\/system\/multi-user.target.wants\/docker.service to \/usr\/lib\/systemd\/system\/docker.service.<\/code><\/pre>\n\n\n\n<p>I am going to configure <code>systemd<\/code> as the <code>cgroupdriver<\/code> so will configure the <code>daemon.json<\/code> for the same; first lets start the docker and then configure the file <code>\/etc\/docker\/daemon.json<\/code> as under<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"exec-opts\": &#91;\"native.cgroupdriver=systemd\"]\n}<\/code><\/pre>\n\n\n\n<p>Restart the docker and check the <code>docker info<\/code> status<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client:\n Context:    default\n Debug Mode: false\n Plugins:\n  app: Docker App (Docker Inc., v0.9.1-beta3)\n  buildx: Docker Buildx (Docker Inc., v0.7.1-docker)\n  scan: Docker Scan (Docker Inc., v0.12.0)\n\nServer:\n Containers: 20\n  Running: 8\n  Paused: 0\n  Stopped: 12\n Images: 6\n Server Version: 20.10.12\n Storage Driver: overlay2\n  Backing Filesystem: xfs\n  Supports d_type: true\n  Native Overlay Diff: true\n  userxattr: false\n Logging Driver: json-file\n Cgroup Driver: <strong>systemd<\/strong><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Install <code>Kubeadm<\/code> &amp; others<\/h3>\n\n\n\n<p>Configure the repository first<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat &lt;&lt;EOF > \/etc\/yum.repos.d\/kubernetes.repo\n&#91;kubernetes]\nname=Kubernetes\nbaseurl=https:\/\/packages.cloud.google.com\/yum\/repos\/kubernetes-el7-x86_64\nenabled=1\ngpgcheck=1\nrepo_gpgcheck=1\ngpgkey=https:\/\/packages.cloud.google.com\/yum\/doc\/yum-key.gpg https:\/\/packages.cloud.google.com\/yum\/doc\/rpm-package-key.gpg\nEOF<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Install <code>kubeadm<\/code><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>yum install -y kubeadm-1.23.1<\/code><\/pre>\n\n\n\n<p>It will show an output as under<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Running transaction\n  Installing : libnetfilter_cthelper-1.0.0-11.el7.x86_64                                                                                                                                                                           1\/10 \n  Installing : socat-1.7.3.2-2.el7.x86_64                                                                                                                                                                                          2\/10 \n  Installing : libnetfilter_cttimeout-1.0.0-7.el7.x86_64                                                                                                                                                                           3\/10 \n  Installing : kubectl-1.23.1-0.x86_64                                                                                                                                                                                             4\/10 \n  Installing : libnetfilter_queue-1.0.2-2.el7_2.x86_64                                                                                                                                                                             5\/10 \n  Installing : conntrack-tools-1.4.4-7.el7.x86_64                                                                                                                                                                                  6\/10 \n  Installing : kubernetes-cni-0.8.7-0.x86_64                                                                                                                                                                                       7\/10 \n  Installing : kubelet-1.23.1-0.x86_64                                                                                                                                                                                             8\/10 \n  Installing : cri-tools-1.19.0-0.x86_64                                                                                                                                                                                           9\/10 \n  Installing : kubeadm-1.23.1-0.x86_64                                                                                                                                                                                            10\/10 \n  Verifying  : cri-tools-1.19.0-0.x86_64                                                                                                                                                                                           1\/10 \n  Verifying  : kubeadm-1.23.1-0.x86_64                                                                                                                                                                                             2\/10 \n  Verifying  : kubelet-1.23.1-0.x86_64                                                                                                                                                                                             3\/10 \n  Verifying  : conntrack-tools-1.4.4-7.el7.x86_64                                                                                                                                                                                  4\/10 \n  Verifying  : kubernetes-cni-0.8.7-0.x86_64                                                                                                                                                                                       5\/10 \n  Verifying  : libnetfilter_queue-1.0.2-2.el7_2.x86_64                                                                                                                                                                             6\/10 \n  Verifying  : kubectl-1.23.1-0.x86_64                                                                                                                                                                                             7\/10 \n  Verifying  : libnetfilter_cttimeout-1.0.0-7.el7.x86_64                                                                                                                                                                           8\/10 \n  Verifying  : socat-1.7.3.2-2.el7.x86_64                                                                                                                                                                                          9\/10 \n  Verifying  : libnetfilter_cthelper-1.0.0-11.el7.x86_64                                                                                                                                                                          10\/10 \n\nInstalled:\n  kubeadm.x86_64 0:1.23.1-0                                                                                                                                                                                                             \n\nDependency Installed:\n  conntrack-tools.x86_64 0:1.4.4-7.el7          cri-tools.x86_64 0:1.19.0-0                 kubectl.x86_64 0:1.23.1-0      kubelet.x86_64 0:1.23.1-0   kubernetes-cni.x86_64 0:0.8.7-0   libnetfilter_cthelper.x86_64 0:1.0.0-11.el7  \n  libnetfilter_cttimeout.x86_64 0:1.0.0-7.el7   libnetfilter_queue.x86_64 0:1.0.2-2.el7_2   socat.x86_64 0:1.7.3.2-2.el7  \n\nComplete!<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Install the <code>kubelet<\/code> and <code>kubectl<\/code><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>yum install -y kubelet-1.23.1 kubectl-1.23.1<\/code><\/pre>\n\n\n\n<p>If the <code>kubeadm<\/code> was installed successfully it should already be installed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Enable the kubelet<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>> systemctl enable kubelet\n\nCreated symlink from \/etc\/systemd\/system\/multi-user.target.wants\/kubelet.service to \/usr\/lib\/systemd\/system\/kubelet.service.<\/code><\/pre>\n\n\n\n<p>Now time to join the cluster using the <code>token<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubeadm join 10.80.241.78:6443 --token MYTOKENFROMKUBEMASTER  --discovery-token-ca-cert-hash sha256:HASHGENERATED<\/code><\/pre>\n\n\n\n<p>Most likely it should sail through but in case you see errors like under<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;preflight] Running pre-flight checks\n&#91;preflight] Reading configuration from the cluster...\n&#91;preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'\n&#91;kubelet-start] Writing kubelet configuration to file \"\/var\/lib\/kubelet\/config.yaml\"\n&#91;kubelet-start] Writing kubelet environment file with flags to file \"\/var\/lib\/kubelet\/kubeadm-flags.env\"\n&#91;kubelet-start] Starting the kubelet\n&#91;kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...\n&#91;kubelet-check] Initial timeout of 40s passed.\n&#91;kubelet-check] It seems like the kubelet isn't running or healthy.\n&#91;kubelet-check] The HTTP call equal to 'curl -sSL http:\/\/localhost:10248\/healthz' failed with error: Get \"http:\/\/localhost:10248\/healthz\": dial tcp &#91;::1]:10248: connect: connection refused.\n&#91;kubelet-check] It seems like the kubelet isn't running or healthy.\n&#91;kubelet-check] The HTTP call equal to 'curl -sSL http:\/\/localhost:10248\/healthz' failed with error: Get \"http:\/\/localhost:10248\/healthz\": dial tcp &#91;::1]:10248: connect: connection refused.\n&#91;kubelet-check] It seems like the kubelet isn't running or healthy.\n&#91;kubelet-check] The HTTP call equal to 'curl -sSL http:\/\/localhost:10248\/healthz' failed with error: Get \"http:\/\/localhost:10248\/healthz\": dial tcp &#91;::1]:10248: connect: connection refused.\n&#91;kubelet-check] It seems like the kubelet isn't running or healthy.\n&#91;kubelet-check] The HTTP call equal to 'curl -sSL http:\/\/localhost:10248\/healthz' failed with error: Get \"http:\/\/localhost:10248\/healthz\": dial tcp &#91;::1]:10248: connect: connection refused.\n&#91;kubelet-check] It seems like the kubelet isn't running or healthy.\n&#91;kubelet-check] The HTTP call equal to 'curl -sSL http:\/\/localhost:10248\/healthz' failed with error: Get \"http:\/\/localhost:10248\/healthz\": dial tcp &#91;::1]:10248: connect: connection refused.\nerror execution phase kubelet-start: error uploading crisocket: nodes \"ibndev004518.bpc.broadcom.net\" not found\nTo see the stack trace of this error execute with --v=5 or higher<\/code><\/pre>\n\n\n\n<p>You can refer to this <a href=\"https:\/\/blog.samarthya.me\/wps\/2021\/10\/28\/calico-cni-failures\/\">blog<\/a> to how to allow it. In case you need to run the command again, first you will have to reset<\/p>\n\n\n\n<p>using <code>kubeadm reset<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubeadm reset\n&#91;reset] WARNING: Changes made to this host by 'kubeadm init' or 'kubeadm join' will be reverted.\n&#91;reset] Are you sure you want to proceed? &#91;y\/N]: y\n&#91;preflight] Running pre-flight checks\nW0106 06:29:42.289836  119690 removeetcdmember.go:80] &#91;reset] No kubeadm config, using etcd pod spec to get data directory\n&#91;reset] No etcd config found. Assuming external etcd\n&#91;reset] Please, manually reset etcd to prevent further issues\n&#91;reset] Stopping the kubelet service\n&#91;reset] Unmounting mounted directories in \"\/var\/lib\/kubelet\"\n&#91;reset] Deleting contents of config directories: &#91;\/etc\/kubernetes\/manifests \/etc\/kubernetes\/pki]\n&#91;reset] Deleting files: &#91;\/etc\/kubernetes\/admin.conf \/etc\/kubernetes\/kubelet.conf \/etc\/kubernetes\/bootstrap-kubelet.conf \/etc\/kubernetes\/controller-manager.conf \/etc\/kubernetes\/scheduler.conf]\n&#91;reset] Deleting contents of stateful directories: &#91;\/var\/lib\/kubelet \/var\/lib\/dockershim \/var\/run\/kubernetes \/var\/lib\/cni]\n\nThe reset process does not clean CNI configuration. To do so, you must remove \/etc\/cni\/net.d\n\nThe reset process does not reset or clean up iptables rules or IPVS tables.\nIf you wish to reset iptables, you must do so manually by using the \"iptables\" command.\n\nIf your cluster was setup to utilize IPVS, run ipvsadm --clear (or similar)\nto reset your system's IPVS tables.\n\nThe reset process does not clean your kubeconfig files and you must remove them manually.\nPlease, check the contents of the $HOME\/.kube\/config file.<\/code><\/pre>\n\n\n\n<p>and then run the <code>kubeadm join<\/code> again. If all goes well you should see a message like below<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;preflight] Running pre-flight checks\n&#91;preflight] Reading configuration from the cluster...\n&#91;preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'\n&#91;kubelet-start] Writing kubelet configuration to file \"\/var\/lib\/kubelet\/config.yaml\"\n&#91;kubelet-start] Writing kubelet environment file with flags to file \"\/var\/lib\/kubelet\/kubeadm-flags.env\"\n&#91;kubelet-start] Starting the kubelet\n&#91;kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...\n\nThis node has joined the cluster:\n* Certificate signing request was sent to apiserver and a response was received.\n* The Kubelet was informed of the new secure connection details.\n\nRun 'kubectl get nodes' on the control-plane to see this node join the cluster.<\/code><\/pre>\n\n\n\n<p>The cluster looks like below now<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>root@master>k get nodes\nNAME                              STATUS   ROLES                  AGE     VERSION\nmydevmachine004518.samarthya.me   Ready    &lt;none>                 55s     v1.23.1\nmydevmachine001830.samarthya.me   Ready    &lt;none>                 22h     v1.23.1\nmydevmachine002687.samarthya.me   Ready    &lt;none>                 41d     v1.23.1\nmydevmachine003277.samarthya.me   Ready    &lt;none>                 131d    v1.23.1\nmydevmachine003278.samarthya.me   Ready    &lt;none>                 131d    v1.23.1\nmydevmachine003417.samarthya.me   Ready    &lt;none>                 4m55s   v1.23.1\nmydevmachine003968.samarthya.me   Ready    &lt;none>                 131d    v1.23.1\nmydevmachine003969.samarthya.me   Ready    control-plane,master   131d    v1.23.1\nmydevmachine003970.samarthya.me   Ready    &lt;none>                 131d    v1.23.1\nmydevmachine003979.samarthya.me   Ready    &lt;none>                 29m     v1.23.1<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-pullquote has-background has-vivid-cyan-blue-background-color is-style-solid-color\"><blockquote class=\"has-text-color has-white-color\"><p>Do lookout for <code>selinux<\/code> settings if it is enforcing you might have to change it before you try joining the cluster<\/p><\/blockquote><\/figure>\n\n\n\n<p>In my case the selinux was enforcing so I had to do like below<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@mydevmachine004518 ~]# getenforce\nEnforcing \n&#91;root@mydevmachine004518 ~]# setenforce 0\n&#91;root@mydevmachine004518 ~]# getenforce \nPermissive\n\n&#91;root@mydevmachine004518 ~]# cat \/etc\/selinux\/config \n\n# This file controls the state of SELinux on the system.\n# SELINUX= can take one of these three values:\n#     enforcing - SELinux security policy is enforced.\n#     permissive - SELinux prints warnings instead of enforcing.\n#     disabled - No SELinux policy is loaded.\nSELINUX=enforcing\n# SELINUXTYPE= can take one of three values:\n#     targeted - Targeted processes are protected,\n#     minimum - Modification of targeted policy. Only selected processes are protected. \n#     mls - Multi Level Security protection.\nSELINUXTYPE=targeted\n\n\n&#91;root@mydevmachine004518 ~]# sed -i 's\/^SELINUX=enforcing$\/SELINUX=permissive\/' \/etc\/selinux\/config\n&#91;root@mydevmachine004518 ~]# cat \/etc\/selinux\/config \n\n# This file controls the state of SELinux on the system.\n# SELINUX= can take one of these three values:\n#     enforcing - SELinux security policy is enforced.\n#     permissive - SELinux prints warnings instead of enforcing.\n#     disabled - No SELinux policy is loaded.\nSELINUX=permissive\n# SELINUXTYPE= can take one of three values:\n#     targeted - Targeted processes are protected,\n#     minimum - Modification of targeted policy. Only selected processes are protected. \n#     mls - Multi Level Security protection.\nSELINUXTYPE=targeted<\/code><\/pre>\n\n\n\n<p>I also edited the <code>\/etc\/sysconfig\/syslinux<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\n# This file controls the state of SELinux on the system.\n# SELINUX= can take one of these three values:\n#     enforcing - SELinux security policy is enforced.\n#     permissive - SELinux prints warnings instead of enforcing.\n#     disabled - No SELinux policy is loaded.\nSELINUX=disabled\n# SELINUXTYPE= can take one of three values:\n#     targeted - Targeted processes are protected,\n#     minimum - Modification of targeted policy. Only selected processes are protected.\n#     mls - Multi Level Security protection.\nSELINUXTYPE=targeted<\/code><\/pre>\n\n\n\n<p>Reboot is recommended for a better success.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/blogs.bhanuni.in\/bg\/wp-content\/uploads\/2021\/12\/claps-1.gif\" alt=\"\"\/><figcaption>Finally!<\/figcaption><\/figure><\/div>\n","protected":false},"excerpt":{"rendered":"<p>In this blog, I will try add a new node to the already running cluster. My Cluster Steps to follow Install docker Install kubeadm, kubectl &amp; kubelet Join the cluster using the token Check the node has joined the cluster Step 1: Install docker When adding repo make sure the repo has been added successfully [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1882,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"image","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[195,34],"tags":[45,18,222,221],"class_list":["post-1881","post","type-post","status-publish","format-image","has-post-thumbnail","hentry","category-kubernetes","category-technical","tag-cluster","tag-k8s","tag-new","tag-node","post_format-post-format-image"],"_links":{"self":[{"href":"https:\/\/blog.samarthya.me\/wps\/wp-json\/wp\/v2\/posts\/1881","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.samarthya.me\/wps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.samarthya.me\/wps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.samarthya.me\/wps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.samarthya.me\/wps\/wp-json\/wp\/v2\/comments?post=1881"}],"version-history":[{"count":0,"href":"https:\/\/blog.samarthya.me\/wps\/wp-json\/wp\/v2\/posts\/1881\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.samarthya.me\/wps\/wp-json\/wp\/v2\/media\/1882"}],"wp:attachment":[{"href":"https:\/\/blog.samarthya.me\/wps\/wp-json\/wp\/v2\/media?parent=1881"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.samarthya.me\/wps\/wp-json\/wp\/v2\/categories?post=1881"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.samarthya.me\/wps\/wp-json\/wp\/v2\/tags?post=1881"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}