{"id":2304,"date":"2022-07-21T10:59:45","date_gmt":"2022-07-21T10:59:45","guid":{"rendered":"https:\/\/www.checkmateq.com\/blog\/?p=2304"},"modified":"2024-10-19T17:39:00","modified_gmt":"2024-10-19T17:39:00","slug":"setup-kubernetes-using-kubeadm","status":"publish","type":"post","link":"https:\/\/www.checkmateq.com\/blog\/setup-kubernetes-using-kubeadm","title":{"rendered":"How To Setup Kubernetes Cluster using kubeadm on RHEL"},"content":{"rendered":"<h3>What is kubeadm?<\/h3>\n<p>Kubeadm is a tool to set up\u00a0 <a href=\"https:\/\/www.checkmateq.com\/kubernetes\">Kubernetes<\/a> cluster ,It is developed and maintained by the official Kubernetes community, it is a tool built to provide &#8220;kubeadm init&#8221; and &#8220;kubeadm join&#8221; considered as best practice &#8220;fast paths&#8221; for creating Kubernetes clusters.<\/p>\n<p><strong>kubeadm init\u00a0<\/strong>command \u00a0initializes a Kubernetes control-plane node by executing a number of steps like running pre\u00a0 flight checks,\u00a0 writing kubeconfig files, Apllying labels and taints to control plane , generating token that additional nodes can use to attach themselves to the master node as a worker node, Installing DNS server.<\/p>\n<p><strong>kubeadm join\u00a0<\/strong>command \u00a0downloads necessary cluster information from the API server and adds the worker node to the cluster<\/p>\n<p><strong>Note:<\/strong> A minimum of two nodes or more , one for\u00a0 master and one for slave , you can have as many worker nodes as required , Should have a minimum of <strong>2 vCPU and 2GB RAM\u00a0<\/strong>per machine.<\/p>\n<p><strong>Perform below given steps in all the Nodes<\/strong><\/p>\n<p>Start with updating your nodes<\/p>\n<pre>yum update -y<\/pre>\n<p><strong>Allow\u00a0 traffic on required ports<\/strong><\/p>\n<p>Execute below commands to install and enable <strong>firewalld ,\u00a0<\/strong>do it on all the nodes.<\/p>\n<pre>yum install firewalld -y\r\nsystemctl enable --now firewalld<\/pre>\n<p>Execute below commands on master node<\/p>\n<pre>firewall-cmd --zone=public --permanent --add-port={6443\/tcp,2379-2380\/tcp,10250\/tcp,10251\/tcp,10252\/tcp}\r\nfirewall-cmd --reload<\/pre>\n<p>Execute\u00a0 below commands on worker nodes<\/p>\n<pre>firewall-cmd --zone=public --permanent --add-port={10250\/tcp,30000-32767\/tcp}\r\nfirewall-cmd --reload<\/pre>\n<p>For kubeadm to work properly\u00a0 you have to disable swapp , execute below command on your terminal on all nodes<\/p>\n<pre>swapoff -a<\/pre>\n<p><strong>Make changes to the IP tables to see the bridged traffic on all nodes<\/strong><\/p>\n<pre>cat &lt;&lt;EOF | sudo tee \/etc\/modules-load.d\/k8s.conf\r\nbr_netfilter\r\nEOF\r\n\r\ncat &lt;&lt;EOF | sudo tee \/etc\/sysctl.d\/k8s.con f\r\nnet.bridge.bridge-nf-call-ip6tables = 1\r\nnet.bridge.bridge-nf-call-iptables = 1\r\nEOF\r\nsudo sysctl --system\r\n<\/pre>\n<p><strong>br_netfilter<\/strong>\u00a0 enables\u00a0 Virtual Extensible LAN (VxLAN) traffic for communication between Kubernetes pods across the cluster<\/p>\n<p><strong>sudo sysctl &#8211;system\u00a0<\/strong> is a administrator command, loads settings from all system configuration files.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" class=\" wp-image-2359 aligncenter\" src=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-DevOps-Engineer-300x167.jpeg\" alt=\"\" width=\"845\" height=\"471\" srcset=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-DevOps-Engineer-300x167.jpeg 300w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-DevOps-Engineer-1024x569.jpeg 1024w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-DevOps-Engineer-768x427.jpeg 768w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/p>\n<p><strong>Install Container Runtime on All Nodes<\/strong><\/p>\n<p>before you install kubeadm you need a container run time up and running , I am using docker<\/p>\n<pre>yum install docker -y<\/pre>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" class=\" wp-image-2360 aligncenter\" src=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-DevOps-Engineer-1-300x164.jpeg\" alt=\"\" width=\"604\" height=\"330\" srcset=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-DevOps-Engineer-1-300x164.jpeg 300w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-DevOps-Engineer-1-1024x561.jpeg 1024w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-DevOps-Engineer-1-768x421.jpeg 768w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-DevOps-Engineer-1-1536x842.jpeg 1536w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-DevOps-Engineer-1-1200x658.jpeg 1200w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-DevOps-Engineer-1.jpeg 1792w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/p>\n<p>Configure docker to use systemd<\/p>\n<pre>sudo mkdir \/etc\/docker\r\ncat &lt;&lt;EOF | sudo tee \/etc\/docker\/daemon.json\r\n{\r\n\"exec-opts\": [\"native.cgroupdriver=systemd\"],\r\n\"log-driver\": \"json-file\",\r\n\"log-opts\": {\r\n\"max-size\": \"100m\"\r\n},\r\n\"storage-driver\": \"overlay2\"\r\n}\r\nEOF\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Start and enable Docker<\/p>\n<pre>sudo systemctl enable docker\r\nsudo systemctl daemon-reload\r\nsudo systemctl restart docker\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Installing kubeadm, kubelet and kubectl<\/strong><\/p>\n<p class=\"contains-headerlink\">Configure the package management system so that you can directly using yum on all the nodes.<\/p>\n<pre> sudo tee \/etc\/yum.repos.d\/kubernetes.repo\r\n[kubernetes]\r\nname=Kubernetes\r\nbaseurl=https:\/\/packages.cloud.google.com\/yum\/repos\/kubernetes-el7-\\$basearch\r\nenabled=1\r\ngpgcheck=1\r\ngpgkey=https:\/\/packages.cloud.google.com\/yum\/doc\/yum-key.gpg https:\/\/packages.cloud.google.com\/yum\/doc\/rpm-package-key.gpg\r\nexclude=kubelet kubeadm kubectl\r\nEOF\r\n<\/pre>\n<p>Set Selinux in permissive mode<\/p>\n<pre>sudo setenforce 0\r\nsudo sed -i 's\/^SELINUX=enforcing$\/SELINUX=permissive\/' \/etc\/selinux\/config\r\n<\/pre>\n<p>Setting SELinux in permissive mode by running setenforce 0, is required to allow containers to access the host filesystem.<\/p>\n<p>Now execute below given command\u00a0 to install kubelet, kubeadm, kubectl.<\/p>\n<pre>yum install install -y kubelet-1.22.8-0 kubectl-1.22.8-0 kubeadm-1.22.8-0 --disableexcludes=kubernetes<\/pre>\n<p><img loading=\"lazy\" class=\" wp-image-2362 aligncenter\" src=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-300x165.jpeg\" alt=\"\" width=\"591\" height=\"325\" srcset=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-300x165.jpeg 300w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-1024x565.jpeg 1024w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-768x424.jpeg 768w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-1536x847.jpeg 1536w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-1200x662.jpeg 1200w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer.jpeg 1889w\" sizes=\"(max-width: 591px) 85vw, 591px\" \/><\/p>\n<p>enable kublet using below given systemctl command.<\/p>\n<pre>sudo systemctl enable --now kubelet<\/pre>\n<p><img loading=\"lazy\" class=\" wp-image-2363 aligncenter\" src=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-1-300x23.jpeg\" alt=\"\" width=\"1306\" height=\"100\" srcset=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-1-300x23.jpeg 300w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-1-1024x79.jpeg 1024w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-1-768x59.jpeg 768w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-1-1536x118.jpeg 1536w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-1-1200x93.jpeg 1200w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-1.jpeg 1920w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>to make the kubelet functioning as expected you have to configure the cggroup drivers, create a file kube-config.yaml and save the below configuration in it.<\/p>\n<pre># kubeadm-config.yaml\r\nkind: ClusterConfiguration\r\napiVersion: kubeadm.k8s.io\/v1beta3\r\nkubernetesVersion: v1.21.0\r\n---\r\nkind: KubeletConfiguration\r\napiVersion: kubelet.config.k8s.io\/v1beta1\r\ncgroupDriver: systemd\r\n<\/pre>\n<h3><strong>Initializing Kubernetes Cluster\u00a0<\/strong><\/h3>\n<p><strong>perform this step only on Master Node<\/strong><\/p>\n<p>Now we will initialize the cluster with the kudeadm -config file created in previous step we will also use ignore-preflight-error argument to ignore any warnings while initializing the cluster, run below commands only on only master node<\/p>\n<pre>kubeadm init --config kubeadm-config.yaml --ignore-preflight-errors=all<\/pre>\n<p><img loading=\"lazy\" class=\" wp-image-2364 aligncenter\" src=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Screenshot-666-300x169.png\" alt=\"\" width=\"773\" height=\"435\" srcset=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Screenshot-666-300x169.png 300w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Screenshot-666-1024x576.png 1024w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Screenshot-666-768x432.png 768w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Screenshot-666-1536x864.png 1536w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Screenshot-666-1200x675.png 1200w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Screenshot-666.png 1920w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/p>\n<p>To start using your cluster, you need to run the following as a regular user (you can also get this ) to copy the kubernetes config files in desired location, you will also get this command from output of kube init command as given above snapshot.<\/p>\n<pre>mkdir -p $HOME\/.kube\r\nsudo cp -i \/etc\/kubernetes\/admin.conf $HOME\/.kube\/config\r\nsudo chown $(id -u):$(id -g) $HOME\/.kube\/config\r\n<\/pre>\n<p>As you have initialized the cluster, now use &#8220;<strong>Kubectl get nodes<\/strong>&#8221; command to get the availability and status of master node.<\/p>\n<p><img loading=\"lazy\" class=\" wp-image-2365 aligncenter\" src=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-3-300x30.jpeg\" alt=\"\" width=\"760\" height=\"76\" srcset=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-3-300x30.jpeg 300w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-3-1024x102.jpeg 1024w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-3-768x76.jpeg 768w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-3.jpeg 1116w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/p>\n<p>As you can see status is &#8220;NotReady&#8221;, even though your cluster initialization is complete you have to install a network addon to establish the communication across pods, I am\u00a0 using\u00a0 Weave Net&#8217;s addon , it provides a network to connect all pods together.(refer this link for more information on\u00a0<a href=\"https:\/\/www.weave.works\/docs\/net\/latest\/kubernetes\/kube-addon\/\">Weave Net<\/a> )<\/p>\n<pre>sudo kubectl apply -f \"https:\/\/cloud.weave.works\/k8s\/net?k8s-version=$(kubectl version | base64 | tr -d '\\n')\"<\/pre>\n<p>Now agian\u00a0 use <strong>Kubectl get nodes<\/strong><\/p>\n<p><img loading=\"lazy\" class=\" wp-image-2366 aligncenter\" src=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-4-300x67.jpeg\" alt=\"\" width=\"945\" height=\"211\" srcset=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-4-300x67.jpeg 300w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-4-1024x230.jpeg 1024w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-4-1536x345.jpeg 1536w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/p>\n<p>As the Master node is ready now lets join worker nodes to the cluster<\/p>\n<h3>Join Worker Nodes to Cluster<\/h3>\n<p>execute the below given command on your\u00a0 master node terminal\u00a0 to create and get the join command , you will also get this command when you initialize the culsture\u00a0 using kubeinit command.<\/p>\n<pre>kubeadm token create --print-join-command<\/pre>\n<p><img loading=\"lazy\" class=\" wp-image-2370 aligncenter\" src=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-7-300x26.jpeg\" alt=\"\" width=\"831\" height=\"72\" srcset=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-7-300x26.jpeg 300w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-7-1024x90.jpeg 1024w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-7-768x67.jpeg 768w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-7-1536x135.jpeg 1536w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-7-1200x105.jpeg 1200w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-7.jpeg 1893w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/p>\n<p>now go on to the worker node and execute this command to add it to the cluster as a worker node.<\/p>\n<pre>kubeadm join 172.31.92.29:6443 --token k0pmud.64mq8t5om6sffih1 \\\r\n        --discovery-token-ca-cert-hash sha256:2266fc4315bf447b207c6fee04493fed8ab8b5ffdcef1dab9c059<\/pre>\n<p><img loading=\"lazy\" class=\" wp-image-2372 aligncenter\" src=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-9-300x65.jpeg\" alt=\"\" width=\"1278\" height=\"277\" srcset=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-9-300x65.jpeg 300w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-9-1024x221.jpeg 1024w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-9-768x165.jpeg 768w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-9-1200x259.jpeg 1200w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/p>\n<p>Let&#8217;s verify it from master node<\/p>\n<p><img loading=\"lazy\" class=\" wp-image-2373 aligncenter\" src=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-10-300x44.jpeg\" alt=\"\" width=\"805\" height=\"118\" srcset=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-10-300x44.jpeg 300w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-10-1024x149.jpeg 1024w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-10-768x112.jpeg 768w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-10-1536x224.jpeg 1536w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-10-1200x175.jpeg 1200w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/07\/Hire-Dedicated-Cloud-Engineer-10.jpeg 1580w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/p>\n<p>Please connect with Checkmate Management Consulting engineering director to learn more about <a href=\"https:\/\/www.checkmateq.com\/application\">product engineering<\/a>, AI\/ML development, <a href=\"https:\/\/www.checkmateq.com\/hire-developer\">IT Staff Augmentation Services in India<\/a>, <a href=\"https:\/\/www.checkmateq.com\/hire-developer\">Hire Software Developer in India<\/a>, data Lifecycle management and <a href=\"https:\/\/www.checkmateq.com\/cloud\">Cloud<\/a> Engineering Management and <a href=\"https:\/\/www.checkmateq.com\/virtual-cto-services\">Virtual CTO Services<\/a> . Schedule a meeting today.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What is kubeadm? Kubeadm is a tool to set up\u00a0 Kubernetes cluster ,It is developed and maintained by the official Kubernetes community, it is a tool built to provide &#8220;kubeadm init&#8221; and &#8220;kubeadm join&#8221; considered as best practice &#8220;fast paths&#8221; for creating Kubernetes clusters. kubeadm init\u00a0command \u00a0initializes a Kubernetes control-plane node by executing a number &hellip; <a href=\"https:\/\/www.checkmateq.com\/blog\/setup-kubernetes-using-kubeadm\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;How To Setup Kubernetes Cluster using kubeadm on RHEL&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":2475,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[3,2,71,70,69,68,59,11,63,23,16,24,8],"_links":{"self":[{"href":"https:\/\/www.checkmateq.com\/blog\/wp-json\/wp\/v2\/posts\/2304"}],"collection":[{"href":"https:\/\/www.checkmateq.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.checkmateq.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.checkmateq.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.checkmateq.com\/blog\/wp-json\/wp\/v2\/comments?post=2304"}],"version-history":[{"count":29,"href":"https:\/\/www.checkmateq.com\/blog\/wp-json\/wp\/v2\/posts\/2304\/revisions"}],"predecessor-version":[{"id":4629,"href":"https:\/\/www.checkmateq.com\/blog\/wp-json\/wp\/v2\/posts\/2304\/revisions\/4629"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.checkmateq.com\/blog\/wp-json\/wp\/v2\/media\/2475"}],"wp:attachment":[{"href":"https:\/\/www.checkmateq.com\/blog\/wp-json\/wp\/v2\/media?parent=2304"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.checkmateq.com\/blog\/wp-json\/wp\/v2\/categories?post=2304"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.checkmateq.com\/blog\/wp-json\/wp\/v2\/tags?post=2304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}