{"id":504356,"date":"2022-10-28T03:48:18","date_gmt":"2022-10-28T00:48:18","guid":{"rendered":"https:\/\/en.buradabiliyorum.com\/how-to-use-kubernetes-taints-and-tolerations-to-avoid-undesirable-scheduling\/"},"modified":"2022-10-28T03:48:18","modified_gmt":"2022-10-28T00:48:18","slug":"how-to-use-kubernetes-taints-and-tolerations-to-avoid-undesirable-scheduling","status":"publish","type":"post","link":"https:\/\/buradabiliyorum.com\/en\/how-to-use-kubernetes-taints-and-tolerations-to-avoid-undesirable-scheduling\/","title":{"rendered":"#How to Use Kubernetes Taints and Tolerations to Avoid Undesirable Scheduling"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 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-6a40e8c598639\" 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-6a40e8c598639\" 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-use-kubernetes-taints-and-tolerations-to-avoid-undesirable-scheduling\/#%E2%80%9CHow_to_Use_Kubernetes_Taints_and_Tolerations_to_Avoid_Undesirable_Scheduling%E2%80%9D\" >&#8220;How to Use Kubernetes Taints and Tolerations to Avoid Undesirable Scheduling&#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-use-kubernetes-taints-and-tolerations-to-avoid-undesirable-scheduling\/#How_Scheduling_Works\" >How Scheduling Works<\/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-use-kubernetes-taints-and-tolerations-to-avoid-undesirable-scheduling\/#Taint_Use_Cases\" >Taint Use Cases<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-use-kubernetes-taints-and-tolerations-to-avoid-undesirable-scheduling\/#Taint_Effects\" >Taint Effects<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-use-kubernetes-taints-and-tolerations-to-avoid-undesirable-scheduling\/#Tainting_a_Node\" >Tainting a Node<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-use-kubernetes-taints-and-tolerations-to-avoid-undesirable-scheduling\/#Adding_Tolerations_to_Pods\" >Adding Tolerations to Pods<\/a><\/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-use-kubernetes-taints-and-tolerations-to-avoid-undesirable-scheduling\/#Taint_and_Toleration_Matching_Rules\" >Taint and Toleration Matching Rules<\/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-use-kubernetes-taints-and-tolerations-to-avoid-undesirable-scheduling\/#Automatic_Taints\" >Automatic Taints<\/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-use-kubernetes-taints-and-tolerations-to-avoid-undesirable-scheduling\/#Summary\" >Summary<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h1><span class=\"ez-toc-section\" id=\"%E2%80%9CHow_to_Use_Kubernetes_Taints_and_Tolerations_to_Avoid_Undesirable_Scheduling%E2%80%9D\"><\/span>&#8220;How to Use Kubernetes Taints and Tolerations to Avoid Undesirable Scheduling&#8221;<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<div>\n<!-- UNCACHED CONTENT --><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"type:primaryImage alignnone size-full wp-image-803403\" data-pagespeed-no-defer=\"\" src=\"https:\/\/www.howtogeek.com\/wp-content\/uploads\/2022\/05\/Kubernetes.jpg?width=1198&amp;trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"Kubernetes logo\" width=\"1602\" height=\"902\"\/><\/p>\n<p>Taints and tolerations are a Kubernetes mechanism for controlling how Pods schedule to the Nodes in your cluster. Taints are <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>lied to Nodes and act as a repelling barrier against new Pods. Tainted Nodes will only accept Pods that have been marked with a corresponding toleration.<\/p>\n<p>Taints are one of the more advanced Kubernetes scheduling mechanisms. They facilitate many different use cases where you want to prevent Pods ending up on undesirable Nodes. In this article, you\u2019ll learn what taints and tolerations are and how you can utilize them in your own cluster.<\/p>\n<h2 id=\"how-scheduling-works\"><span class=\"ez-toc-section\" id=\"How_Scheduling_Works\"><\/span>How Scheduling Works<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Kubernetes is a distributed system where you can deploy containerized applications (Pods) across multiple physical hosts (Nodes). When you create a new Pod, Kubernetes needs to determine the set of Nodes it can be placed on. This is what scheduling refers to.<\/p>\n<p>The <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/scheduling-eviction\/kube-scheduler\">scheduler considers many different factors<\/a> to establish a suitable placement for each Pod. It\u2019ll default to selecting a Node that can provide sufficient resources to satisfy the Pod\u2019s <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/manage-resources-containers\">CPU and memory requests<\/a>.<\/p>\n<p>The selected Node won\u2019t necessarily be appropriate for your deployment though. It could lack required hardware or be reserved for development use. Node taints are a mechanism for enforcing these constraints by preventing arbitrary assignation of Pods to Nodes.<\/p>\n<h2 id=\"taint-use-cases\"><span class=\"ez-toc-section\" id=\"Taint_Use_Cases\"><\/span>Taint Use Cases<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Tainting a Node <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/scheduling-eviction\/taint-and-toleration\">means it will start to repel<\/a> Pods, forcing the scheduler to consider the next candidate Node instead. You can overcome the taint by setting a matching toleration on the Pod. This provides a mechanism for allowing specific Pods onto the Node.<\/p>\n<p>Taints are often used to keep Pods away from Nodes that are reserved for specific purposes. Some Kubernetes clusters might host several environments, such as staging and production. In this situation you\u2019ll want to prevent staging deployments from ending up on the dedicated production hardware.<\/p>\n<p>You can achieve the desired behavior by tainting the production Node and setting a matching toleration on production Pods. Staging Pods will be confined to the other Nodes in your cluster, preventing them from consuming production resources.<\/p>\n<p>Taints can also help distinguish between Nodes with particular hardware. Operators might deploy a subset of Nodes with dedicated GPUs for use with AI workloads. Tainting these Nodes ensures Pods that don\u2019t need the GPU can\u2019t schedule onto them.<\/p>\n<h2 id=\"taint-effects\"><span class=\"ez-toc-section\" id=\"Taint_Effects\"><\/span>Taint Effects<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Each Node taint can have one of three different effects on Kubernetes scheduling decisions:<\/p>\n<ul>\n<li><strong><code>NoSchedule<\/code><\/strong> \u2013 Pods that lack a toleration for the taint won\u2019t be scheduled onto the Node. Pods already scheduled to the Node aren\u2019t affected, even if they don\u2019t tolerate the taint.<\/li>\n<li><strong><code>PreferNoSchedule<\/code><\/strong> \u2013 Kubernetes will avoid scheduling Pods without the taint\u2019s toleration. The Pod could still be scheduled to the Node as a last resort option. This does not affect existing Pods.<\/li>\n<li><strong><code>NoExecute<\/code><\/strong> \u2013 This functions similarly to <code>NoSchedule<\/code> except that existing Pods are impacted too. Pods without the toleration will be im<a href=\"https:\/\/buradabiliyorum.com\/en\/category\/social-mediaa\/\" data-internallinksmanager029f6b8e52c=\"1\" title=\"Social Media\" target=\"_blank\" rel=\"noopener\">media<\/a>tely evicted from the Node, causing them to be rescheduled onto other Nodes in your cluster.<\/li>\n<\/ul>\n<p>The <code>NoExecute<\/code> effect is useful when you\u2019re changing the role of a Node that\u2019s already running some workloads. <code>NoSchedule<\/code> is more appropriate if you want to guard the Node against receiving new Pods, without disrupting existing deployments.<\/p>\n<h2 id=\"tainting-a-node\"><span class=\"ez-toc-section\" id=\"Tainting_a_Node\"><\/span>Tainting a Node<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Taints are applied to Nodes using the <code>kubectl taint<\/code> command. It takes the name of the target Node, a key and value for the taint, and an effect.<\/p>\n<p>Here\u2019s an example of tainting a Node to allocate it to a specific environment:<\/p>\n<pre>$ kubectl taint nodes demo-node env=production:NoSchedule&#13;\nnode\/demo-node tainted<\/pre>\n<p>You can apply multiple taints to a Node by repeating the command. The key value is optional \u2013 you can create binary taints by omitting it:<\/p>\n<pre>$ kubectl taint nodes demo-node has-gpu:NoSchedule<\/pre>\n<p>To remove a previously applied taint, repeat the command but append a hyphen (<code>-<\/code>) to the effect name:<\/p>\n<pre>$ kubectl taint nodes demo-node has-gpu:NoSchedule-&#13;\nnode\/demo-node untainted<\/pre>\n<p>This will delete the matching taint if it exists.<\/p>\n<p>You can retrieve a list of all the taints applied to a Node using the <code>describe<\/code> command. The taints will be shown near the top of the output, after the Node\u2019s labels and annotations:<\/p>\n<pre>$ kubectl describe node demo-node&#13;\nName:   demo-node&#13;\n...&#13;\nTaints: env=production:NoSchedule&#13;\n...<\/pre>\n<h2 id=\"adding-tolerations-to-pods\"><span class=\"ez-toc-section\" id=\"Adding_Tolerations_to_Pods\"><\/span>Adding Tolerations to Pods<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The example above tainted <code>demo-node<\/code> with the intention of reserving it for production workloads. The next step is to add an equivalent toleration to your production Pods so that they\u2019re permitted to schedule onto the Node.<\/p>\n<p>Pod tolerations are declared in the <code>spec.tolerations<\/code> manifest field:<\/p>\n<div class=\"wp-geshi-highlight-wrap5\">\n<div class=\"wp-geshi-highlight-wrap4\">\n<div class=\"wp-geshi-highlight-wrap3\">\n<div class=\"wp-geshi-highlight-wrap2\">\n<div class=\"wp-geshi-highlight-wrap\">\n<div class=\"wp-geshi-highlight\">\n<div class=\"yaml\">\n<pre class=\"de1\"><strong class=\"co3\">apiVersion<\/strong><strong class=\"sy2\">: <\/strong>v1<strong class=\"co3\">\nkind<\/strong><strong class=\"sy2\">: <\/strong>Pod<strong class=\"co4\">\nmetadata<\/strong>:<strong class=\"co3\">\n  name<\/strong><strong class=\"sy2\">: <\/strong>api<strong class=\"co4\">\nspec<\/strong>:<strong class=\"co4\">\n  containers<\/strong>:<strong class=\"co3\">\n    - name<\/strong><strong class=\"sy2\">: <\/strong>api<strong class=\"co3\">\n      image<\/strong><strong class=\"sy2\">: <\/strong>example.com\/api:latest<strong class=\"co4\">\n  tolerations<\/strong>:<strong class=\"co3\">\n    - key<\/strong><strong class=\"sy2\">: <\/strong>env<strong class=\"co3\">\n      operator<\/strong><strong class=\"sy2\">: <\/strong>Equals<strong class=\"co3\">\n      value<\/strong><strong class=\"sy2\">: <\/strong>production<strong class=\"co3\">\n      effect<\/strong><strong class=\"sy2\">: <\/strong>NoSchedule<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>This toleration allows the <code>api<\/code> Pod to schedule to Nodes that have an <code>env<\/code> taint with a value of <code>production<\/code> and <code>NoSchedule<\/code> as the effect. The example Pod can now be scheduled to <code>demo-node<\/code>.<\/p>\n<p>To tolerate taints without a value, use the <code>Exists<\/code> operator instead:<\/p>\n<div class=\"wp-geshi-highlight-wrap5\">\n<div class=\"wp-geshi-highlight-wrap4\">\n<div class=\"wp-geshi-highlight-wrap3\">\n<div class=\"wp-geshi-highlight-wrap2\">\n<div class=\"wp-geshi-highlight-wrap\">\n<div class=\"wp-geshi-highlight\">\n<div class=\"yaml\">\n<pre class=\"de1\"><strong class=\"co3\">apiVersion<\/strong><strong class=\"sy2\">: <\/strong>v1<strong class=\"co3\">\nkind<\/strong><strong class=\"sy2\">: <\/strong>Pod<strong class=\"co4\">\nmetadata<\/strong>:<strong class=\"co3\">\n  name<\/strong><strong class=\"sy2\">: <\/strong>api<strong class=\"co4\">\nspec<\/strong>:<strong class=\"co4\">\n  containers<\/strong>:<strong class=\"co3\">\n    - name<\/strong><strong class=\"sy2\">: <\/strong>api<strong class=\"co3\">\n      image<\/strong><strong class=\"sy2\">: <\/strong>example.com\/api:latest<strong class=\"co4\">\n  tolerations<\/strong>:<strong class=\"co3\">\n    - key<\/strong><strong class=\"sy2\">: <\/strong>has-gpu<strong class=\"co3\">\n      operator<\/strong><strong class=\"sy2\">: <\/strong>Exists<strong class=\"co3\">\n      effect<\/strong><strong class=\"sy2\">: <\/strong>NoSchedule<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>The Pod now tolerates the <code>has-gpu<\/code> taint, whether or not a value has been set.<\/p>\n<p>Tolerations do not <em>require<\/em> that the Pod is scheduled to a tainted Node. This is a common misconception around taints and tolerations. The mechanism only says that a Node can\u2019t host a Pod; it does not express the alternative view that a Pod must be placed on a particular Node. Taints are commonly combined with affinities to achieve this bi-directional behavior.<\/p>\n<h2 id=\"taint-and-toleration-matching-rules\"><span class=\"ez-toc-section\" id=\"Taint_and_Toleration_Matching_Rules\"><\/span>Taint and Toleration Matching Rules<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Tainted Nodes only receive Pods that tolerate all of their taints. Kubernetes first discovers the taints on the Node, then filters out taints that are tolerated by the Pod. The effects requested by the remaining set of taints will be applied to the Pod.<\/p>\n<p>There\u2019s a special case for the <code>NoExecute<\/code> effect. Pods that tolerate this kind of taint will usually get to stay on the Node after the taint is applied. You can modify this behavior so that Pods are voluntarily evicted after a given time, despite tolerating the trait:<\/p>\n<div class=\"wp-geshi-highlight-wrap5\">\n<div class=\"wp-geshi-highlight-wrap4\">\n<div class=\"wp-geshi-highlight-wrap3\">\n<div class=\"wp-geshi-highlight-wrap2\">\n<div class=\"wp-geshi-highlight-wrap\">\n<div class=\"wp-geshi-highlight\">\n<div class=\"yaml\">\n<pre class=\"de1\"><strong class=\"co3\">apiVersion<\/strong><strong class=\"sy2\">: <\/strong>v1<strong class=\"co3\">\nkind<\/strong><strong class=\"sy2\">: <\/strong>Pod<strong class=\"co4\">\nmetadata<\/strong>:<strong class=\"co3\">\n  name<\/strong><strong class=\"sy2\">: <\/strong>api<strong class=\"co4\">\nspec<\/strong>:<strong class=\"co4\">\n  containers<\/strong>:<strong class=\"co3\">\n    - name<\/strong><strong class=\"sy2\">: <\/strong>api<strong class=\"co3\">\n      image<\/strong><strong class=\"sy2\">: <\/strong>example.com\/api:latest<strong class=\"co4\">\n  tolerations<\/strong>:<strong class=\"co3\">\n    - key<\/strong><strong class=\"sy2\">: <\/strong>env<strong class=\"co3\">\n      operator<\/strong><strong class=\"sy2\">: <\/strong>Equals<strong class=\"co3\">\n      value<\/strong><strong class=\"sy2\">: <\/strong>production<strong class=\"co3\">\n      effect<\/strong><strong class=\"sy2\">: <\/strong>NoExecute<strong class=\"co3\">\n      tolerationSeconds<\/strong><strong class=\"sy2\">: <\/strong>900<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>A Node that\u2019s hosting this Pod but is subsequently tainted with <code>env=production:NoExecute<\/code> will allow the Pod to remain present for up to 15 minutes after the taint\u2019s applied. The Pod will then be evicted despite having the <code>NoExecute<\/code> toleration.<\/p>\n<h2 id=\"automatic-taints\"><span class=\"ez-toc-section\" id=\"Automatic_Taints\"><\/span>Automatic Taints<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Nodes are <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/scheduling-eviction\/taint-and-toleration\/#taint-based-evictions\">automatically tainted by<\/a> the Kubernetes control plane to evict Pods and prevent scheduling when resource contention occurs. Taints such as <code>node.kubernetes.io\/memory-pressure<\/code> and <code>node.kubernetes.io\/disk-pressure<\/code> mean Kubernetes is blocking the Node from taking new Pods because it lacks sufficient resources.<\/p>\n<p>Other commonly applied taints include <code>node.kubernetes.io\/not-ready<\/code>, when a new Node isn\u2019t accepting Pods, and <code>node.kubernetes.io\/unschedulable<\/code>. The latter is applied to <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/administer-cluster\/safely-drain-node\">cordoned Nodes<\/a> to halt all Pod scheduling activity.<\/p>\n<p>These taints implement the Kubernetes eviction and Node management systems. You don\u2019t normally need to think about them and you shouldn\u2019t manage these taints manually. If you see them on a Node, it\u2019s because Kubernetes has applied them in response to changing conditions or another command you\u2019ve issued. It is possible to create Pod tolerations for these taints but doing so could lead to resource exhaustion and unexpected behavior.<\/p>\n<h2 id=\"summary\"><span class=\"ez-toc-section\" id=\"Summary\"><\/span>Summary<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Taints and tolerations are a mechanism for repelling Pods away from individual Kubernetes Nodes. They help you avoid undesirable scheduling outcomes by preventing Pods from being automatically assigned to arbitrary Nodes.<\/p>\n<p>Tainting isn\u2019t the only mechanism that provides control over scheduling behavior. Pod affinities and anti-affinities are a related technique for constraining the Nodes that can receive a Pod. Affinity can also be defined at an inter-Pod level, allowing you to make scheduling decisions based on the Pods already running on a Node. You can combine affinity with taints and tolerations to set up advanced scheduling rules.<\/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-use-kubernetes-taints-and-tolerations-to-avoid-undesirable-scheduling\/\" target=\"_blank\" rel=\"noopener\">Source<\/a><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;How to Use Kubernetes Taints and Tolerations to Avoid Undesirable Scheduling&#8221; Taints and tolerations are a Kubernetes mechanism for controlling how Pods schedule to the Nodes in your cluster. Taints are applied to Nodes and act as a repelling barrier against new Pods. Tainted Nodes will only accept Pods that have been marked with a&#8230;<\/p>\n","protected":false},"author":1,"featured_media":504357,"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.jpg?height=200p&trim=2,2,2,2","fifu_image_alt":"","footnotes":""},"categories":[18],"tags":[],"class_list":["post-504356","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\/504356","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=504356"}],"version-history":[{"count":0,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/504356\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media\/504357"}],"wp:attachment":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media?parent=504356"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/categories?post=504356"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/tags?post=504356"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}