{"id":500688,"date":"2022-10-14T03:48:07","date_gmt":"2022-10-14T00:48:07","guid":{"rendered":"https:\/\/en.buradabiliyorum.com\/how-to-upgrade-a-kubernetes-cluster-created-with-kubeadm\/"},"modified":"2022-10-14T03:48:07","modified_gmt":"2022-10-14T00:48:07","slug":"how-to-upgrade-a-kubernetes-cluster-created-with-kubeadm","status":"publish","type":"post","link":"https:\/\/buradabiliyorum.com\/en\/how-to-upgrade-a-kubernetes-cluster-created-with-kubeadm\/","title":{"rendered":"#How to Upgrade a Kubernetes Cluster Created With Kubeadm"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a2ed53718937\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #dd3333;color:#dd3333\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #dd3333;color:#dd3333\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a2ed53718937\" checked aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-upgrade-a-kubernetes-cluster-created-with-kubeadm\/#%E2%80%9CHow_to_Upgrade_a_Kubernetes_Cluster_Created_With_Kubeadm%E2%80%9D\" >&#8220;How to Upgrade a Kubernetes Cluster Created With Kubeadm&#8221;<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-upgrade-a-kubernetes-cluster-created-with-kubeadm\/#Identifying_the_Precise_Version_to_Install\" >Identifying the Precise Version to Install<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-upgrade-a-kubernetes-cluster-created-with-kubeadm\/#Upgrading_the_Control_Plane\" >Upgrading the Control Plane<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-upgrade-a-kubernetes-cluster-created-with-kubeadm\/#Update_Kubeadm\" >Update Kubeadm<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-upgrade-a-kubernetes-cluster-created-with-kubeadm\/#Create_the_Upgrade_Plan\" >Create the Upgrade Plan<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-upgrade-a-kubernetes-cluster-created-with-kubeadm\/#Applying_the_Upgrade_Plan\" >Applying the Upgrade Plan<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-upgrade-a-kubernetes-cluster-created-with-kubeadm\/#Upgrading_Worker_Nodes\" >Upgrading Worker Nodes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-upgrade-a-kubernetes-cluster-created-with-kubeadm\/#Checking_Your_Cluster\" >Checking Your Cluster<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-upgrade-a-kubernetes-cluster-created-with-kubeadm\/#Recovering_From_an_Upgrade_Failure\" >Recovering From an Upgrade Failure<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-upgrade-a-kubernetes-cluster-created-with-kubeadm\/#Summary\" >Summary<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h1><span class=\"ez-toc-section\" id=\"%E2%80%9CHow_to_Upgrade_a_Kubernetes_Cluster_Created_With_Kubeadm%E2%80%9D\"><\/span>&#8220;How to Upgrade a Kubernetes Cluster Created With Kubeadm&#8221;<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<div>\n<img loading=\"lazy\" decoding=\"async\" class=\"type:primaryImage alignnone size-full wp-image-806255\" data-pagespeed-no-defer=\"\" src=\"https:\/\/www.howtogeek.com\/wp-content\/uploads\/2022\/05\/Kubernetes-New.jpg?width=1198&amp;trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"Graphic with the Kubernetes logo\" width=\"1202\" height=\"677\"\/><\/p>\n<p>Kubeadm is the official tool for installing and maintaining a cluster that\u2019s based on the default Kubernetes distribution. Created clusters don\u2019t automatically upgrade themselves and disabling package updates for Kubernetes components is part of the set up process. This means you have to manually migrate your cluster when a new Kubernetes release arrives.<\/p>\n<p>In this article you\u2019ll learn the steps involved in a Kubernetes upgrade by walking through a transition from v1.24 to v1.25 on Ubuntu 22.04. The process is usually similar for any Kubernetes minor release but you should always refer to <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/administer-cluster\/kubeadm\/kubeadm-upgrade\/#before-you-begin\">the official documentation<\/a> before you start, in case a new release carries specialist requirements.<\/p>\n<h2 id=\"identifying-the-precise-version-to-install\"><span class=\"ez-toc-section\" id=\"Identifying_the_Precise_Version_to_Install\"><\/span>Identifying the Precise Version to Install<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The first step is determining the version you\u2019re going to upgrade to. You can\u2019t skip minor versions \u2013 going directly from v1.23 to v1.25 is unsupported, for example \u2013 so you should pick the most recent patch release for the minor version that follows your cluster\u2019s current release.<\/p>\n<p>You can discover the latest patch version with the following command:<\/p>\n<pre>$ apt-cache policy kubeadm | grep 1.25&#13;\n1.25.1-00 500&#13;\n1.25.0-00 500<\/pre>\n<p>This shows that <code>1.25.1-00<\/code> is the newest release of Kubernetes v1.25. Replace <code>1.25<\/code> in the command with the minor version that you\u2019re going to be moving to.<\/p>\n<h2 id=\"upgrading-the-control-plane\"><span class=\"ez-toc-section\" id=\"Upgrading_the_Control_Plane\"><\/span>Upgrading the Control Plane<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Complete this section on the machine that\u2019s running your control plane. Don\u2019t touch the worker nodes yet \u2013 they can continue using their current Kubernetes release while the control plane is updated. If you have multiple control plane nodes, run this sequence on the first one and follow the worker node procedure in the next section on the others.<\/p>\n<h3 id=\"update-kubeadm\"><span class=\"ez-toc-section\" id=\"Update_Kubeadm\"><\/span>Update Kubeadm<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>First release the hold on the Kubeadm package and install the new version. Specify the exact release identified earlier so that Apt doesn\u2019t automatically grab the latest one, which could be an unsupported minor version bump.<\/p>\n<pre>$ sudo apt update&#13;\n$ sudo apt-mark unhold kubeadm&#13;\n$ sudo apt install -y kubeadm=1.25.1-00<\/pre>\n<p>Now re<a href=\"https:\/\/buradabiliyorum.com\/en\/category\/download-scripts-themes-apps\/\" data-internallinksmanager029f6b8e52c=\"9\" title=\"Download Scripts &amp; Themes &amp; Apps\" target=\"_blank\" rel=\"noopener\">app<\/a>ly the hold so that <code>apt upgrade<\/code> doesn\u2019t deliver unwanted releases in the future:<\/p>\n<pre>$ sudo apt-mark hold kubeadm&#13;\nkubeadm set on hold<\/pre>\n<p>Verify that Kubeadm is now the expected version:<\/p>\n<pre>$ kubeadm version --short&#13;\nkubeadm version: &amp;version.Info{Major:\"1\", Minor:\"25\", GitVersion:\"v1.25.1\"...<\/pre>\n<h3 id=\"create-the-upgrade-plan\"><span class=\"ez-toc-section\" id=\"Create_the_Upgrade_Plan\"><\/span>Create the Upgrade Plan<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Kubeadm automates the control plane upgrade process. First use the <code>upgrade plan<\/code> command to establish which versions you can migrate to. This checks your cluster to make sure it can accept the new release.<\/p>\n<pre>$ sudo kubeadm upgrade plan<\/pre>\n<p>The output is quite long but it\u2019s worth closely inspecting. The first section should report that all the Kubernetes components will upgrade to the version number you selected earlier. New versions may also be displayed for CoreDNS and etcd.<\/p>\n<pre>COMPONENT                 CURRENT   TARGET&#13;\nkube-apiserver            v1.24.5   v1.25.1&#13;\nkube-controller-manager   v1.24.5   v1.25.1&#13;\nkube-scheduler            v1.24.5   v1.25.1&#13;\nkube-proxy                v1.24.5   v1.25.1&#13;\nCoreDNS                   v1.8.6    v1.9.3&#13;\netcd                      3.5.3-0   3.5.4-0<\/pre>\n<p>The end of the output includes a table that surfaces any required config changes. You may occasionally need to take manual action to adjust these config files and supply them to the cluster. Refer to the documentation <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/administer-cluster\/kubeadm\/kubeadm-upgrade\">for your release<\/a> if you get a \u201cyes\u201d in the \u201cManual Upgrade Required\u201d column.<\/p>\n<pre>API GROUP                 CURRENT VERSION   PREFERRED VERSION   MANUAL UPGRADE REQUIRED&#13;\nkubeproxy.config.k8s.io   v1alpha1          v1alpha1            no&#13;\nkubelet.config.k8s.io     v1beta1           v1beta1             no<\/pre>\n<p>This cluster is now ready to upgrade. The plan has confirmed that Kubernetes v1.25.1 is available and no manual actions are required. Check you\u2019ve installed the correct Kubeadm version if no plan is produced or errors appear. You might be trying to move between more than one minor version.<\/p>\n<h3 id=\"applying-the-upgrade-plan\"><span class=\"ez-toc-section\" id=\"Applying_the_Upgrade_Plan\"><\/span>Applying the Upgrade Plan<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Now you can instruct Kubeadm to proceed with applying the upgrade plan by running <code>upgrade apply<\/code> with the correct version number:<\/p>\n<pre>$ sudo kubeadm upgrade apply v1.25.1<\/pre>\n<p>A confirmation prompt will appear:<\/p>\n<pre>[upgrade\/version] You have chosen to change the cluster version to \"v1.25.1\"&#13;\n[upgrade\/versions] Cluster version: v1.24.5&#13;\n[upgrade\/versions] kubeadm version: v1.25.1&#13;\n[upgrade] Are you sure you want to proceed? [y\/N]:<\/pre>\n<p>Press <code>y<\/code> to continue with the upgrade. The process may take several minutes while it pulls the images for the new components and restarts your control plane. You won\u2019t be able to reliably interact with your cluster\u2019s API during this time but any running Pods should remain operational on your Nodes.<\/p>\n<p>Eventually you should see a success message:<\/p>\n<pre>[upgrade\/successful] SUCCESS! Your cluster was upgraded to \"v1.25.1\". Enjoy!]<\/pre>\n<p>The control plane has now been upgraded.<\/p>\n<h2 id=\"upgrading-worker-nodes\"><span class=\"ez-toc-section\" id=\"Upgrading_Worker_Nodes\"><\/span>Upgrading Worker Nodes<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Now you can upgrade your worker nodes. These steps <strong>also need to be performed on your control plane nodes<\/strong>. Upgrade each node in sequence to minimize the effects of capacity being removed from your cluster. Pods will be rescheduled to other nodes while each one gets upgraded.<\/p>\n<p>First drain the node of its existing Pods and place a cordon around it. Substitute in the name of the node instead of <code>node-1<\/code> in the following commands.<\/p>\n<pre>$ kubectl cordon node-1&#13;\n$ kubectl drain node-1<\/pre>\n<p>This evicts the node\u2019s Pods and prevents any new ones from being scheduled. The node\u2019s now inactive in your cluster.<\/p>\n<p>Next release the package manager hold on the <code>kubeadm<\/code>, <code>kubectl<\/code>, and <code>kubelet<\/code> packages. Install the new version of each one. The versions of all three packages should exactly match. Remember to set the hold status again after you\u2019ve got the new releases.<\/p>\n<pre>$ sudo apt update&#13;\n$ sudo apt-mark unhold kubeadm kubectl kubelet&#13;\n$ sudo apt install -y kubeadm=1.25.1-00 kubectl=1.25.1-00 kubelet=1.25.1-00&#13;\n$ sudo apt-mark hold kubeadm kubectl kubelet<\/pre>\n<p>Next use Kubeadm\u2019s <code>upgrade node<\/code> command to apply the upgrade and update your node\u2019s configuration:<\/p>\n<pre>$ sudo kubeadm upgrade node<\/pre>\n<p>Finally restart the Kubelet service and uncordon the node. It should rejoin the cluster and start accepting new Pods.<\/p>\n<pre>$ sudo systemctl daemon-reload&#13;\n$ sudo systemctl restart kubelet&#13;\n$ kubectl uncordon node-1<\/pre>\n<h2 id=\"checking-your-cluster\"><span class=\"ez-toc-section\" id=\"Checking_Your_Cluster\"><\/span>Checking Your Cluster<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Once you\u2019ve finished your upgrade, run <code>kubectl version<\/code> to check the active release matches your expectations:<\/p>\n<pre>$ kubectl version --short&#13;\nClient Version: v1.25.1&#13;\n...&#13;\nServer Version: v1.25.1<\/pre>\n<p>Next check that all your nodes are reporting their new version and have entered the <code>Ready<\/code> state:<\/p>\n<pre>$ kubectl get nodes -o wide&#13;\nNAME       STATUS   ROLES           AGE   VERSION&#13;\nubuntu22   Ready    control-plane   70m   v1.25.1<\/pre>\n<p>The upgrade is now complete.<\/p>\n<h2 id=\"recovering-from-an-upgrade-failure\"><span class=\"ez-toc-section\" id=\"Recovering_From_an_Upgrade_Failure\"><\/span>Recovering From an Upgrade Failure<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Occasionally an upgrade could fail even though Kubeadm successfully plans a pathway and verifies your cluster\u2019s health. Problems can occur if the upgrade gets interrupted or a Kubernetes component stops responding. Kubeadm should automatically rollback to the previous version if this happens.<\/p>\n<p>The <code>upgrade apply<\/code> command <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/administer-cluster\/kubeadm\/kubeadm-upgrade\/#recovering-from-a-failure-state\">can be safely repeated<\/a> to retry a failed upgrade. It will detect the ways in which your cluster differs from the expected version, allowing it to attempt a recovery of both total failures and partial upgrades.<\/p>\n<p>When repeating the command doesn\u2019t work, you can try forcing the upgrade by adding the <code>--force<\/code> flag to the command:<\/p>\n<pre>$ kubeadm upgrade apply --force<\/pre>\n<p>This will allow the upgrade to continue in situations <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/kubernetes.io\/docs\/reference\/setup-tools\/kubeadm\/kubeadm-upgrade\/#cmd-upgrade-apply\">where requirements are missing<\/a> or can no longer be fulfilled.<\/p>\n<p>When disaster strikes and your cluster seems to be totally broken, you should be able to restore it <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/administer-cluster\/kubeadm\/kubeadm-upgrade\/#recovering-from-a-failure-state\">using the backup files<\/a> that Kubeadm writes automatically:<\/p>\n<ul>\n<li>Copy the contents of <code>\/etc\/kubernetes\/tmp\/kubeadm-backup-etcd-&lt;date&gt;-&lt;time&gt;<\/code> into your <code>\/var\/lib\/etcd<\/code> directory.<\/li>\n<li>Copy the contents of <code>\/etc\/kubernetes\/tmp\/kubeadm-backup-manifests-&lt;date&gt;-&lt;time&gt;<\/code> into your <code>\/etc\/kubernetes\/manifests<\/code> directory.<\/li>\n<\/ul>\n<p>These backups can be used to manually restore the previous Kubernetes version to a working state.<\/p>\n<h2 id=\"summary\"><span class=\"ez-toc-section\" id=\"Summary\"><\/span>Summary<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Upgrading Kubernetes with Kubeadm shouldn\u2019t be too stressful. Most of the process is automated with your involvement limited to installing the new packages and checking the upgrade plan.<\/p>\n<p>Before upgrading you should always consult the Kubernetes changelog and any documentation published by components you use in your cluster. Pod networking interfaces, Ingress controllers, storage providers, and other addons may all have incompatibilities with a new Kubernetes release or require their own upgrade routines.<\/p>\n<\/div>\n<p><script>\n setTimeout(function(){\n  !function(f,b,e,v,n,t,s)\n  {if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n  n.callMethod.apply(n,arguments):n.queue.push(arguments)};\n  if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n  n.queue=[];t=b.createElement(e);t.async=!0;\n  t.src=v;s=b.getElementsByTagName(e)[0];\n  s.parentNode.insertBefore(t,s) } (window, document,'script',\n  'https:\/\/connect.facebook.net\/en_US\/fbevents.js');\n   fbq('init', '335401813750447');\n   fbq('track', 'PageView');\n  },3000);\n<\/script><\/p>\n<blockquote><p><strong><span style=\"color: #ff6600;\">If you liked the article, do not forget to share it with your friends. Follow us on\u00a0<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/news.google.com\/publications\/CAAqBwgKMLG0nwswvr63Aw\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Google News<\/a><\/span>\u00a0too, click on the star and choose us from your favorites.<\/span><\/strong><\/p><\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\">For forums sites go to <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/forum.buradabiliyorum.com\/\" target=\"_blank\" rel=\"noopener\">Forum.BuradaBiliyorum.Com<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\"><strong>If you want to read more like this article, you can visit our <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/en.buradabiliyorum.com\/technology\/\" target=\"_blank\" rel=\"noopener\">Technology category.<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<p><span style=\"color: black;\"><a style=\"color: #ff9900;\" href=\"https:\/\/www.howtogeek.com\/devops\/how-to-upgrade-a-kubernetes-cluster-created-with-kubeadm\/\" target=\"_blank\" rel=\"noopener\">Source<\/a><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;How to Upgrade a Kubernetes Cluster Created With Kubeadm&#8221; Kubeadm is the official tool for installing and maintaining a cluster that\u2019s based on the default Kubernetes distribution. Created clusters don\u2019t automatically upgrade themselves and disabling package updates for Kubernetes components is part of the set up process. This means you have to manually migrate your&#8230;<\/p>\n","protected":false},"author":1,"featured_media":500689,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/www.howtogeek.com\/wp-content\/uploads\/2022\/05\/Kubernetes-New.jpg?height=200p&trim=2,2,2,2","fifu_image_alt":"","footnotes":""},"categories":[18],"tags":[],"class_list":["post-500688","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology"],"_links":{"self":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/500688","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/comments?post=500688"}],"version-history":[{"count":0,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/500688\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media\/500689"}],"wp:attachment":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media?parent=500688"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/categories?post=500688"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/tags?post=500688"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}