{"id":7570,"date":"2018-06-13T08:05:09","date_gmt":"2018-06-13T00:05:09","guid":{"rendered":"http:\/\/rmohan.com\/?p=7570"},"modified":"2018-06-13T08:05:09","modified_gmt":"2018-06-13T00:05:09","slug":"kubernetes-centos7-3","status":"publish","type":"post","link":"https:\/\/mohan.sg\/?p=7570","title":{"rendered":"kubernetes  centos7.3"},"content":{"rendered":"<p>Last login: Thu Mar 1 00:45:37 2018 from 192.168.1.248<br \/>\n[root@clusterserver1 ~]# uname -a<br \/>\nLinux clusterserver1.rmohan.com 3.10.0-693.17.1.el7.x86_64 #1 SMP Thu Jan 25 20:13:58 UTC 2018 x86_64 x86_64 x86_64 GNU\/Linux<br \/>\n[root@clusterserver1 ~]#<\/p>\n<p>Master : 192.168.1.20<br \/>\nWorker1 : 192.168.1.21<br \/>\nWorker2 : 192.168.1.23<br \/>\nworker3 : 192.168.1.24<\/p>\n<p>hostnamectl set-hostname &#8216;clusterserver1.rmohan.com&#8217;<br \/>\nexec bash<br \/>\nsetenforce 0<br \/>\nsed -i &#8211;follow-symlinks &#8216;s\/SELINUX=enforcing\/SELINUX=disabled\/g&#8217; \/etc\/sysconfig\/selinux<\/p>\n<p>[root@clusterserver1 ~]# cat \/etc\/redhat-release<br \/>\nCentOS Linux release 7.4.1708 (Core)<br \/>\n[root@clusterserver1 ~]#<\/p>\n<p>CentOS Linux release 7.4.1708 (Core)<br \/>\n[root@clusterserver1 ~]# cat \/etc\/hosts<br \/>\n127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4<br \/>\n::1 localhost localhost.localdomain localhost6 localhost6.localdomain6<br \/>\n192.168.1.20 clusterserver1.rmohan.com clusterserver1 master<br \/>\n192.168.1.21 clusterserver2.rmohan.com clusterserver2 worker1<br \/>\n192.168.1.22 clusterserver3.rmohan.com clusterserver3 worker2<br \/>\n192.168.1.23 clusterserver4.rmohan.com clusterserver4 worker3<br \/>\n[root@clusterserver1 ~]#<\/p>\n<p>[root@clusterserver1 ~]#systemctl stop firewalld &amp;&amp; systemctl disable firewalld<\/p>\n<p>[root@clusterserver1 ~]#yum update -y<br \/>\n[root@clusterserver1 ~]# modprobe br_netfilter<br \/>\n[root@clusterserver1 ~]#sysctl net.bridge.bridge-nf-call-iptables=1<br \/>\n[root@clusterserver1 ~]#sysctl net.bridge.bridge-nf-call-ip6tables=1<\/p>\n<p>[root@clusterserver1 ~]# cat &lt;&lt;EOF &gt; \/etc\/sysctl.d\/k8s.conf<br \/>\nnet.bridge.bridge-nf-call-ip6tables = 1<br \/>\nnet.bridge.bridge-nf-call-iptables = 1<br \/>\nEOF<br \/>\n[root@clusterserver1 ~]# sysctl &#8211;system<\/p>\n<p>cat &lt;&lt;EOF &gt; \/etc\/yum.repos.d\/virt7-dockerrelease.repo<br \/>\n[virt7-docker-common-release]<br \/>\nname=virt7-docker-common-release<br \/>\nbaseurl=http:\/\/cbs.centos.org\/repos\/virt7-docker-common-release\/x86_64\/os\/<br \/>\ngpgcheck=0<br \/>\nEOF<\/p>\n<p>cat &lt;&lt;eof &gt; \/etc\/yum.repos.d\/kubernetes.repo<br \/>\n[kubernetes]<br \/>\nname=kubernetes<br \/>\nbaseurl=https:\/\/packages.cloud.google.com\/yum\/repos\/kubernetes-el7-x86_64<br \/>\nenabled=1<br \/>\ngpgcheck=1<br \/>\nrepo_gpgcheck=1<br \/>\ngpgkey=https:\/\/packages.cloud.google.com\/yum\/doc\/yum-key.gpg<br \/>\nhttps:\/\/packages.cloud.google.com\/yum\/doc\/rpm-package-key.gpg<br \/>\neof<\/p>\n<p>[root@clusterserver1 ~]# yum install ebtables ethtool<\/p>\n<p>[root@clusterserver1 ~]# yum install -y kubelet kubeadm kubectl docker<\/p>\n<p>#systemctl enable kubelet &amp;&amp; systemctl start kubelet<\/p>\n<p>After this Check Kubelet is running fine<\/p>\n<p>#systemctl status kubelet -l<\/p>\n<p>[root@clusterserver1 ~]# systemctl status kubelet -l<br \/>\n? kubelet.service &#8211; kubelet: The Kubernetes Node Agent<br \/>\nLoaded: loaded (\/etc\/systemd\/system\/kubelet.service; enabled; vendor preset: disabled)<br \/>\nDrop-In: \/etc\/systemd\/system\/kubelet.service.d<br \/>\n??10-kubeadm.conf<br \/>\nActive: activating (auto-restart) (Result: exit-code) since Thu 2018-03-01 16:16:40 +08; 8s ago<br \/>\nDocs: http:\/\/kubernetes.io\/docs\/<br \/>\nProcess: 2504 ExecStart=\/usr\/bin\/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_CADVISOR_ARGS $KUBELET_CGROUP_ARGS $KUBELET_CERTIFICATE_ARGS $KUBELET_EXTRA_ARGS (code=exited, status=1\/FAILURE)<br \/>\nMain PID: 2504 (code=exited, status=1\/FAILURE)<\/p>\n<p>Mar 01 16:16:40 clusterserver1.rmohan.com systemd[1]: kubelet.service: main process exited, code=exited, status=1\/FAILURE<br \/>\nMar 01 16:16:40 clusterserver1.rmohan.com systemd[1]: Unit kubelet.service entered failed state.<br \/>\nMar 01 16:16:40 clusterserver1.rmohan.com systemd[1]: kubelet.service failed.<br \/>\n[root@clusterserver1 ~]# ystemctl status kubelet -l<br \/>\n-bash: ystemctl: command not found<br \/>\n[root@clusterserver1 ~]# systemctl status kubelet -l<br \/>\n? kubelet.service &#8211; kubelet: The Kubernetes Node Agent<br \/>\nLoaded: loaded (\/etc\/systemd\/system\/kubelet.service; enabled; vendor preset: disabled)<br \/>\nDrop-In: \/etc\/systemd\/system\/kubelet.service.d<br \/>\n??10-kubeadm.conf<br \/>\nActive: activating (auto-restart) (Result: exit-code) since Thu 2018-03-01 16:17:01 +08; 1s ago<br \/>\nDocs: http:\/\/kubernetes.io\/docs\/<br \/>\nProcess: 2517 ExecStart=\/usr\/bin\/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_CADVISOR_ARGS $KUBELET_CGROUP_ARGS $KUBELET_CERTIFICATE_ARGS $KUBELET_EXTRA_ARGS (code=exited, status=1\/FAILURE)<br \/>\nMain PID: 2517 (code=exited, status=1\/FAILURE)<\/p>\n<p>Can verify errors in \/var\/log\/message<br \/>\n[root@clusterserver1 ~]# tail -f \/var\/log\/messages<br \/>\nMar 1 16:17:11 clusterserver1 systemd: kubelet.service holdoff time over, scheduling restart.<br \/>\nMar 1 16:17:11 clusterserver1 systemd: Started kubelet: The Kubernetes Node Agent.<br \/>\nMar 1 16:17:11 clusterserver1 systemd: Starting kubelet: The Kubernetes Node Agent&#8230;<br \/>\nMar 1 16:17:11 clusterserver1 kubelet: I0301 16:17:11.580912 2523 feature_gate.go:226] feature gates: &amp;{{} map[]}<br \/>\nMar 1 16:17:11 clusterserver1 kubelet: I0301 16:17:11.581022 2523 controller.go:114] kubelet config controller: starting controller<br \/>\nMar 1 16:17:11 clusterserver1 kubelet: I0301 16:17:11.581030 2523 controller.go:118] kubelet config controller: validating combination of defaults and flags<br \/>\nMar 1 16:17:11 clusterserver1 kubelet: error: unable to load client CA file \/etc\/kubernetes\/pki\/ca.crt: open \/etc\/kubernetes\/pki\/ca.crt: no such file or directory<br \/>\nMar 1 16:17:11 clusterserver1 systemd: kubelet.service: main process exited, code=exited, status=1\/FAILURE<br \/>\nMar 1 16:17:11 clusterserver1 systemd: Unit kubelet.service entered failed state.<br \/>\nMar 1 16:17:11 clusterserver1 systemd: kubelet.service failed.<br \/>\nMar 1 16:17:21 clusterserver1 systemd: kubelet.service holdoff time over, scheduling restart.<br \/>\nMar 1 16:17:21 clusterserver1 systemd: Started kubelet: The Kubernetes Node Agent.<br \/>\nMar 1 16:17:21 clusterserver1 systemd: Starting kubelet: The Kubernetes Node Agent&#8230;<br \/>\nMar 1 16:17:21 clusterserver1 kubelet: I0301 16:17:21.830092 2535 feature_gate.go:226] feature gates: &amp;{{} map[]}<br \/>\nMar 1 16:17:21 clusterserver1 kubelet: I0301 16:17:21.830201 2535 controller.go:114] kubelet config controller: starting controller<br \/>\nMar 1 16:17:21 clusterserver1 kubelet: I0301 16:17:21.830209 2535 controller.go:118] kubelet config controller: validating combination of defaults and flags<br \/>\nMar 1 16:17:21 clusterserver1 kubelet: error: unable to load client CA file \/etc\/kubernetes\/pki\/ca.crt: open \/etc\/kubernetes\/pki\/ca.crt: no such file or directory<br \/>\nMar 1 16:17:21 clusterserver1 systemd: kubelet.service: main process exited, code=exited, status=1\/FAILURE<br \/>\nMar 1 16:17:21 clusterserver1 systemd: Unit kubelet.service entered failed state.<br \/>\nMar 1 16:17:21 clusterserver1 systemd: kubelet.service failed.<\/p>\n<p>So here Issue is &#8220;error: unable to load client CA file \/etc\/kubernetes\/pki\/ca.crt&#8221; As we have not installed kubeadm here<\/p>\n<p>So now if this you are trying on worker node and already installed kubeadm on master then you can try Copying files from Master.<\/p>\n<p>If this is you Master Node setup then let Start Master Node setup here<\/p>\n<p>If kubernates was tried\/installed any time on your machine then you need to reset kubeadm<br \/>\nrun command on Master Node<\/p>\n<p>[root@clusterserver1 ~]# kubeadm reset<br \/>\n[preflight] Running pre-flight checks.<br \/>\n[reset] Stopping the kubelet service.<br \/>\n[reset] Unmounting mounted directories in &#8220;\/var\/lib\/kubelet&#8221;<br \/>\n[reset] Removing kubernetes-managed containers.<br \/>\n[reset] Docker doesn&#8217;t seem to be running. Skipping the removal of running Kubernetes containers.<br \/>\n[reset] No etcd manifest found in &#8220;\/etc\/kubernetes\/manifests\/etcd.yaml&#8221;. Assuming external etcd.<br \/>\n[reset] Deleting contents of stateful directories: [\/var\/lib\/kubelet \/etc\/cni\/net.d \/var\/lib\/dockershim \/var\/run\/kubernetes]<br \/>\n[reset] Deleting contents of config directories: [\/etc\/kubernetes\/manifests \/etc\/kubernetes\/pki]<br \/>\n[reset] Deleting files: [\/etc\/kubernetes\/admin.conf \/etc\/kubernetes\/kubelet.conf \/etc\/kubernetes\/controller-manager.conf \/etc\/kubernetes\/scheduler.conf]<br \/>\n[root@clusterserver1 ~]#<\/p>\n<p>[root@clusterserver1 ~]# kubeadm init<br \/>\n[init] Using Kubernetes version: v1.9.3<br \/>\n[init] Using Authorization modes: [Node RBAC]<br \/>\n[preflight] Running pre-flight checks.<br \/>\n[preflight] The system verification failed. Printing the output from the verification:<br \/>\nKERNEL_VERSION: 3.10.0-693.17.1.el7.x86_64<br \/>\nCONFIG_NAMESPACES: enabled<br \/>\nCONFIG_NET_NS: enabled<br \/>\nCONFIG_PID_NS: enabled<br \/>\nCONFIG_IPC_NS: enabled<br \/>\nCONFIG_UTS_NS: enabled<br \/>\nCONFIG_CGROUPS: enabled<br \/>\nCONFIG_CGROUP_CPUACCT: enabled<br \/>\nCONFIG_CGROUP_DEVICE: enabled<br \/>\nCONFIG_CGROUP_FREEZER: enabled<br \/>\nCONFIG_CGROUP_SCHED: enabled<br \/>\nCONFIG_CPUSETS: enabled<br \/>\nCONFIG_MEMCG: enabled<br \/>\nCONFIG_INET: enabled<br \/>\nCONFIG_EXT4_FS: enabled (as module)<br \/>\nCONFIG_PROC_FS: enabled<br \/>\nCONFIG_NETFILTER_XT_TARGET_REDIRECT: enabled (as module)<br \/>\nCONFIG_NETFILTER_XT_MATCH_COMMENT: enabled (as module)<br \/>\nCONFIG_OVERLAY_FS: enabled (as module)<br \/>\nCONFIG_AUFS_FS: not set &#8211; Required for aufs.<br \/>\nCONFIG_BLK_DEV_DM: enabled (as module)<br \/>\nOS: Linux<br \/>\nCGROUPS_CPU: enabled<br \/>\nCGROUPS_CPUACCT: enabled<br \/>\nCGROUPS_CPUSET: enabled<br \/>\nCGROUPS_DEVICES: enabled<br \/>\nCGROUPS_FREEZER: enabled<br \/>\nCGROUPS_MEMORY: enabled<br \/>\n[WARNING FileExisting-crictl]: crictl not found in system path<br \/>\n[WARNING Service-Docker]: docker service is not enabled, please run &#8216;systemctl enable docker.service&#8217;<br \/>\n[preflight] Some fatal errors occurred:<br \/>\n[ERROR SystemVerification]: failed to get docker info: Cannot connect to the Docker daemon at unix:\/\/\/var\/run\/docker.sock. Is the docker daemon running?<br \/>\n[ERROR Swap]: running with swap on is not supported. Please disable swap<br \/>\n[ERROR Service-Docker]: docker service is not active, please run &#8216;systemctl start docker.service&#8217;<br \/>\n[preflight] If you know what you are doing, you can make a check non-fatal with `&#8211;ignore-preflight-errors=&#8230;`<\/p>\n<p>Disable swap<\/p>\n<p>swapoff -a<\/p>\n<p>enable docker and start the docker services<\/p>\n<p>[root@clusterserver1 ~]# kubeadm init<br \/>\n[init] Using Kubernetes version: v1.9.3<br \/>\n[init] Using Authorization modes: [Node RBAC]<br \/>\n[preflight] Running pre-flight checks.<br \/>\n[WARNING FileExisting-crictl]: crictl not found in system path<br \/>\n[preflight] Starting the kubelet service<br \/>\n[certificates] Generated ca certificate and key.<br \/>\n[certificates] Generated apiserver certificate and key.<br \/>\n[certificates] apiserver serving cert is signed for DNS names [clusterserver1.rmohan.com kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 192.168.1.20]<br \/>\n[certificates] Generated apiserver-kubelet-client certificate and key.<br \/>\n[certificates] Generated sa key and public key.<br \/>\n[certificates] Generated front-proxy-ca certificate and key.<br \/>\n[certificates] Generated front-proxy-client certificate and key.<br \/>\n[certificates] Valid certificates and keys now exist in &#8220;\/etc\/kubernetes\/pki&#8221;<br \/>\n[kubeconfig] Wrote KubeConfig file to disk: &#8220;admin.conf&#8221;<br \/>\n[kubeconfig] Wrote KubeConfig file to disk: &#8220;kubelet.conf&#8221;<br \/>\n[kubeconfig] Wrote KubeConfig file to disk: &#8220;controller-manager.conf&#8221;<br \/>\n[kubeconfig] Wrote KubeConfig file to disk: &#8220;scheduler.conf&#8221;<br \/>\n[controlplane] Wrote Static Pod manifest for component kube-apiserver to &#8220;\/etc\/kubernetes\/manifests\/kube-apiserver.yaml&#8221;<br \/>\n[controlplane] Wrote Static Pod manifest for component kube-controller-manager to &#8220;\/etc\/kubernetes\/manifests\/kube-controller-manager.yaml&#8221;<br \/>\n[controlplane] Wrote Static Pod manifest for component kube-scheduler to &#8220;\/etc\/kubernetes\/manifests\/kube-scheduler.yaml&#8221;<br \/>\n[etcd] Wrote Static Pod manifest for a local etcd instance to &#8220;\/etc\/kubernetes\/manifests\/etcd.yaml&#8221;<br \/>\n[init] Waiting for the kubelet to boot up the control plane as Static Pods from directory &#8220;\/etc\/kubernetes\/manifests&#8221;.<br \/>\n[init] This might take a minute or longer if the control plane images have to be pulled.<br \/>\n[apiclient] All control plane components are healthy after 85.002972 seconds<br \/>\n[uploadconfig]\u00a0Storing the configuration used in ConfigMap &#8220;kubeadm-config&#8221; in the &#8220;kube-system&#8221; Namespace<br \/>\n[markmaster] Will mark node clusterserver1.rmohan.com as master by adding a label and a taint<br \/>\n[markmaster] Master clusterserver1.rmohan.com tainted and labelled with key\/value: node-role.kubernetes.io\/master=&#8221;&#8221;<br \/>\n[bootstraptoken] Using token: 8c45ed.70033b8135e5439a<br \/>\n[bootstraptoken] Configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials<br \/>\n[bootstraptoken] Configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token<br \/>\n[bootstraptoken] Configured RBAC rules to allow certificate rotation for all node client certificates in the cluster<br \/>\n[bootstraptoken] Creating the &#8220;cluster-info&#8221; ConfigMap in the &#8220;kube-public&#8221; namespace<br \/>\n[addons] Applied essential addon: kube-dns<br \/>\n[addons] Applied essential addon: kube-proxy<\/p>\n<p>Your Kubernetes master has initialized successfully!<\/p>\n<p>To start using your cluster, you need to run the following as a regular user:<\/p>\n<p>mkdir -p $HOME\/.kube<br \/>\nsudo cp -i \/etc\/kubernetes\/admin.conf $HOME\/.kube\/config<br \/>\nsudo chown $(id -u):$(id -g) $HOME\/.kube\/config<\/p>\n<p>You should now deploy a pod network to the cluster.<br \/>\nRun &#8220;kubectl apply -f [podnetwork].yaml&#8221; with one of the options listed at:<br \/>\nhttps:\/\/kubernetes.io\/docs\/concepts\/cluster-administration\/addons\/<\/p>\n<p>You can now join any number of machines by running the following on each node<br \/>\nas root:<\/p>\n<p>kubeadm join &#8211;token 8c45ed.70033b8135e5439a 192.168.1.20:6443 &#8211;discovery-token-ca-cert-hash sha256:1df9c0250f28e5a4d137f29307b787954948fc417f2fa9a06a195d65f41b959d<\/p>\n<p>[root@clusterserver1 ~]# mkdir -p $HOME\/.kube<br \/>\n[root@clusterserver1 ~]# cp -i \/etc\/kubernetes\/admin.conf $HOME\/.kube\/config<br \/>\n[root@clusterserver1 ~]# chown $(id -u):$(id -g) $HOME\/.kube\/config<\/p>\n<p>[root@clusterserver1 ~]# kubectl get nodes<br \/>\nNAME STATUS ROLES AGE VERSION<br \/>\nclusterserver1.rmohan.com NotReady master 2m v1.9.3<br \/>\n[root@clusterserver1 ~]#<\/p>\n<p>Install kubeadm and docker package on both nodes<\/p>\n<p>[root@clusterserver2 ~]# yum install kubeadm docker -y<br \/>\n[root@clusterserver3 ~]# yum install kubeadm docker -y<br \/>\n[root@clusterserver4 ~]# yum install kubeadm docker -y<\/p>\n<p>Start and enable docker service<\/p>\n<p>[root@clusterserver2 ~]# systemctl restart docker &amp;&amp; systemctl enable docker<br \/>\n[root@clusterserver3 ~]# systemctl restart docker &amp;&amp; systemctl enable docker<br \/>\n[root@clusterserver4 ~]# systemctl restart docker &amp;&amp; systemctl enable docker<\/p>\n<p>Step 4: Now Join worker nodes to master node<\/p>\n<p>To join worker nodes to Master node, a token is required. Whenever kubernetes master initialized , then in the output we get command and token. Copy that command and run on both nodes.<\/p>\n<p>[root@worker-node1 ~]# kubeadm join &#8211;token 8c45ed.70033b8135e5439a 192.168.1.20:6443 &#8211;discovery-token-ca-cert-hash sha256:1df9c0250f28e5a4d137f29307b787954948fc417f2fa9a06a195d65f41b959d<\/p>\n<p>yum install epel-release -y<\/p>\n<p>yum install ansible -y<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last login: Thu Mar 1 00:45:37 2018 from 192.168.1.248 [root@clusterserver1 ~]# uname -a Linux clusterserver1.rmohan.com 3.10.0-693.17.1.el7.x86_64 #1 SMP Thu Jan 25 20:13:58 UTC 2018 x86_64 x86_64 x86_64 GNU\/Linux [root@clusterserver1 ~]#<\/p>\n<p>Master : 192.168.1.20 Worker1 : 192.168.1.21 Worker2 : 192.168.1.23 worker3 : 192.168.1.24<\/p>\n<p>hostnamectl set-hostname &#8216;clusterserver1.rmohan.com&#8217; exec bash setenforce 0 sed -i &#8211;follow-symlinks &#8216;s\/SELINUX=enforcing\/SELINUX=disabled\/g&#8217; \/etc\/sysconfig\/selinux<\/p>\n<p>[root@clusterserver1 [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[82],"tags":[],"_links":{"self":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/7570"}],"collection":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7570"}],"version-history":[{"count":1,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/7570\/revisions"}],"predecessor-version":[{"id":7571,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/7570\/revisions\/7571"}],"wp:attachment":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7570"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7570"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7570"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}