{"id":1095,"date":"2024-07-08T14:48:25","date_gmt":"2024-07-08T06:48:25","guid":{"rendered":"http:\/\/zkeeer.space\/?p=1095"},"modified":"2024-07-08T14:48:25","modified_gmt":"2024-07-08T06:48:25","slug":"kubernetes%ef%bc%9aunable-to-connect-to-the-server-x509-certificate-has-expired-or-is-not-yet-valid","status":"publish","type":"post","link":"http:\/\/zkeeer.space\/?p=1095","title":{"rendered":"kubernetes\uff1aunable to connect to the server x509 certificate has expired or is not yet valid"},"content":{"rendered":"<p>kubernetes\u5728\u6267\u884ckubectl\u547d\u4ee4\u65f6\u9047\u5230kubeconfig\u8fc7\u671f\u7684\u95ee\u9898\uff0c\u63d0\u793acertificate has expired\uff0c\u89e3\u51b3\u65b9\u6cd5\u5982\u4e0b\uff1a<\/p>\n<p>For version 1.22.5 this my solution:<\/p>\n<p>&nbsp;<\/p>\n<p>step 1:<\/p>\n<p>ssh to the master node, then check certificates in step 2.<\/p>\n<p>&nbsp;<\/p>\n<p>step 2:<\/p>\n<p>run this command: kubeadm certs check-expiration<\/p>\n<pre><code>root@kube-master-1:~# kubeadm certs check-expiration\r\n[check-expiration] Reading configuration from the cluster...\r\n[check-expiration] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'\r\n[check-expiration] Error reading configuration from the Cluster. Falling back to default configuration\r\n\r\n\r\nCERTIFICATE\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0EXPIRES\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0RESIDUAL TIME\u00a0\u00a0\u00a0CERTIFICATE AUTHORITY\u00a0\u00a0\u00a0EXTERNALLY MANAGEDadmin.conf\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Oct 21, 2022 16:05 UTC\u00a0\u00a0\u00a0&lt;invalid&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0no\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\napiserver\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Oct 21, 2022 16:05 UTC\u00a0\u00a0\u00a0&lt;invalid&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ca\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0no\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n!MISSING! apiserver-etcd-client\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\napiserver-kubelet-client\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Oct 21, 2022 16:05 UTC\u00a0\u00a0\u00a0&lt;invalid&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ca\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0no\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\ncontroller-manager.conf\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Oct 21, 2022 16:05 UTC\u00a0\u00a0\u00a0&lt;invalid&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0no\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n!MISSING! etcd-healthcheck-client\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n!MISSING! etcd-peer\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n!MISSING! etcd-server\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\nfront-proxy-client\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Oct 21, 2022 16:05 UTC\u00a0\u00a0\u00a0&lt;invalid&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0front-proxy-ca\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0no\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\nscheduler.conf\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Oct 21, 2022 16:05 UTC\u00a0\u00a0\u00a0&lt;invalid&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0no\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n\r\n\r\nCERTIFICATE AUTHORITY\u00a0\u00a0\u00a0EXPIRES\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0RESIDUAL TIME\u00a0\u00a0\u00a0EXTERNALLY MANAGEDca\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Oct 19, 2031 16:05 UTC\u00a0\u00a0\u00a08y\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0no\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n!MISSING! etcd-ca\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\nfront-proxy-ca\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Oct 19, 2031 16:05 UTC\u00a0\u00a0\u00a08y\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0no\r\n<\/code><\/pre>\n<p>and see all of them expired yesterday.<\/p>\n<p>&nbsp;<\/p>\n<p>step 3:<\/p>\n<p>backup from all exists certificates:<\/p>\n<pre><code>root@kube-master-1:~# cp -R \/etc\/kubernetes\/ssl \/etc\/kubernetes\/ssl.backup\r\nroot@kube-master-1:~# cp \/etc\/kubernetes\/admin.conf \/etc\/kubernetes\/admin.conf.backup\r\nroot@kube-master-1:~# cp \/etc\/kubernetes\/controller-manager.conf \/etc\/kubernetes\/controller-manager.conf.backup\r\nroot@kube-master-1:~# cp \/etc\/kubernetes\/kubelet.conf \/etc\/kubernetes\/kubelet.conf.backup\r\nroot@kube-master-1:~# cp \/etc\/kubernetes\/scheduler.conf \/etc\/kubernetes\/scheduler.conf.backup\r\n<\/code><\/pre>\n<p>step 4:<\/p>\n<p>for renew all, run this command: kubeadm certs renew all<\/p>\n<pre><code>root@kube-master-1:~# kubeadm certs renew all\r\n[renew] Reading configuration from the cluster...\r\n[renew] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'W1023 15:15:16.234334 2175921 utils.go:69] The recommended value for \"clusterDNS\" in \"KubeletConfiguration\" is: [10.233.0.10]; the provided value is: [169.254.25.10]\r\n\r\n\r\ncertificate embedded in the kubeconfig file for the admin to use and for kubeadm itself renewedcertificate for serving the Kubernetes API renewedcertificate for the API server to connect to kubelet renewedcertificate embedded in the kubeconfig file for the controller manager to use renewedcertificate for the front proxy client renewedcertificate embedded in the kubeconfig file for the scheduler manager to use renewed\r\n\r\n\r\nDone renewing certificates. You must restart the kube-apiserver, kube-controller-manager, kube-scheduler and etcd, so that they can use the new certificates.\r\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>step 5: the last line of step 4 tells us important note:<\/p>\n<pre><code>Done renewing certificates. You must restart the kube-apiserver, kube-controller-manager, kube-scheduler and etcd, so that they can use the new certificates\r\n<\/code><\/pre>\n<p>for complete this run:<\/p>\n<pre><code>kubectl -n kube-system delete pod -l 'component=kube-apiserver'\r\nkubectl -n kube-system delete pod -l 'component=kube-controller-manager'\r\nkubectl -n kube-system delete pod -l 'component=kube-scheduler'\r\nkubectl -n kube-system delete pod -l 'component=etcd'\r\n<\/code><\/pre>\n<p><span style=\"color: unset; font-family: unset; font-size: unset;\">step 6: then reboot the master node.<\/span><\/p>\n<p>step 7: see the result:<\/p>\n<pre><code>root@kube-master-1:~# kubeadm certs check-expiration\r\n[check-expiration] Reading configuration from the cluster...\r\n[check-expiration] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'W1023 15:15:23.141925 2177263 utils.go:69] The recommended value for \"clusterDNS\" in \"KubeletConfiguration\" is: [10.233.0.10]; the provided value is: [169.254.25.10]\r\n\r\n\r\nCERTIFICATE\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0EXPIRES\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0RESIDUAL TIME\u00a0\u00a0\u00a0CERTIFICATE AUTHORITY\u00a0\u00a0\u00a0EXTERNALLY MANAGEDadmin.conf\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Oct 23, 2023 07:15 UTC\u00a0\u00a0\u00a0364d\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0no\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\napiserver\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Oct 23, 2023 07:15 UTC\u00a0\u00a0\u00a0364d\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ca\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0no\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\napiserver-kubelet-client\u00a0\u00a0\u00a0Oct 23, 2023 07:15 UTC\u00a0\u00a0\u00a0364d\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ca\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0no\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\ncontroller-manager.conf\u00a0\u00a0\u00a0\u00a0Oct 23, 2023 07:15 UTC\u00a0\u00a0\u00a0364d\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0no\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\nfront-proxy-client\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Oct 23, 2023 07:15 UTC\u00a0\u00a0\u00a0364d\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0front-proxy-ca\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0no\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\nscheduler.conf\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Oct 23, 2023 07:15 UTC\u00a0\u00a0\u00a0364d\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0no\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n\r\n\r\nCERTIFICATE AUTHORITY\u00a0\u00a0\u00a0EXPIRES\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0RESIDUAL TIME\u00a0\u00a0\u00a0EXTERNALLY MANAGEDca\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Oct 19, 2031 16:05 UTC\u00a0\u00a0\u00a08y\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0no\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\nfront-proxy-ca\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Oct 19, 2031 16:05 UTC\u00a0\u00a0\u00a08y\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0no\r\n<\/code><\/pre>\n<p>all of them renew to 2023<\/p>\n","protected":false},"excerpt":{"rendered":"<p>kubernetes\u5728\u6267\u884ckubectl\u547d\u4ee4\u65f6\u9047\u5230kubeconfig\u8fc7\u671f\u7684\u95ee\u9898\uff0c\u63d0\u793acertificate has expired\uff0c\u89e3\u51b3\u65b9\u6cd5\u5982\u4e0b\uff1a<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[113,58,6,77],"tags":[111,110,112],"_links":{"self":[{"href":"http:\/\/zkeeer.space\/index.php?rest_route=\/wp\/v2\/posts\/1095"}],"collection":[{"href":"http:\/\/zkeeer.space\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/zkeeer.space\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/zkeeer.space\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/zkeeer.space\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1095"}],"version-history":[{"count":1,"href":"http:\/\/zkeeer.space\/index.php?rest_route=\/wp\/v2\/posts\/1095\/revisions"}],"predecessor-version":[{"id":1096,"href":"http:\/\/zkeeer.space\/index.php?rest_route=\/wp\/v2\/posts\/1095\/revisions\/1096"}],"wp:attachment":[{"href":"http:\/\/zkeeer.space\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1095"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/zkeeer.space\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1095"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/zkeeer.space\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1095"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}