<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>3AZ Archives - OVHcloud Blog</title>
	<atom:link href="https://blog.ovhcloud.com/tag/3az/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.ovhcloud.com/tag/3az/</link>
	<description>Innovation for Freedom</description>
	<lastBuildDate>Tue, 31 Mar 2026 12:40:56 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://blog.ovhcloud.com/wp-content/uploads/2019/07/cropped-cropped-nouveau-logo-ovh-rebranding-32x32.gif</url>
	<title>3AZ Archives - OVHcloud Blog</title>
	<link>https://blog.ovhcloud.com/tag/3az/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Discover Kubernetes 1.33 features &#8211; Topology aware routing in multi-zones Kubernetes clusters</title>
		<link>https://blog.ovhcloud.com/discover-kubernetes-1-33-features-topology-aware-routing-in-multi-zones-kubernetes-clusters/</link>
		
		<dc:creator><![CDATA[Aurélie Vache]]></dc:creator>
		<pubDate>Tue, 17 Jun 2025 07:05:40 +0000</pubDate>
				<category><![CDATA[OVHcloud Engineering]]></category>
		<category><![CDATA[Tranches de Tech & Co — Tech bites]]></category>
		<category><![CDATA[3AZ]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[Kubernetes 1.33]]></category>
		<category><![CDATA[MKS]]></category>
		<category><![CDATA[multi-zone cluster]]></category>
		<category><![CDATA[OVHcloud]]></category>
		<category><![CDATA[Public Cloud]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=29191</guid>

					<description><![CDATA[Kubernetes 1.33 version has just been released few days/weeks ago.As this new release contains 64 enhancements (!), it can not [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fdiscover-kubernetes-1-33-features-topology-aware-routing-in-multi-zones-kubernetes-clusters%2F&amp;action_name=Discover%20Kubernetes%201.33%20features%20%26%238211%3B%20Topology%20aware%20routing%20in%20multi-zones%20Kubernetes%20clusters&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image aligncenter size-full is-resized"><img fetchpriority="high" decoding="async" width="1014" height="1022" src="https://blog.ovhcloud.com/wp-content/uploads/2025/06/mks3az-kubernetes-1.33-small.png" alt="" class="wp-image-29240" style="width:436px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/06/mks3az-kubernetes-1.33-small.png 1014w, https://blog.ovhcloud.com/wp-content/uploads/2025/06/mks3az-kubernetes-1.33-small-298x300.png 298w, https://blog.ovhcloud.com/wp-content/uploads/2025/06/mks3az-kubernetes-1.33-small-150x150.png 150w, https://blog.ovhcloud.com/wp-content/uploads/2025/06/mks3az-kubernetes-1.33-small-768x774.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/06/mks3az-kubernetes-1.33-small-70x70.png 70w" sizes="(max-width: 1014px) 100vw, 1014px" /></figure>



<p class="wp-block-paragraph"><a href="https://kubernetes.io/blog/2025/04/23/kubernetes-v1-33-release/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Kubernetes 1.33 version</a> has just been released few days/weeks ago.<br>As this new release contains 64 enhancements (!), it can not be easy to know what are the interesting and useful features and how to use them.</p>



<p class="wp-block-paragraph">In this blog post, let&#8217;s discover one of interesting and useful new feature: &#8220;Topology aware routing in multi-zones Kubernetes clusters&#8221;.</p>



<p class="wp-block-paragraph">⚠️ Kubernetes 1.33 should be available on OVHcloud MKS clusters at the end of June/beginning of July but the demo is working also on MKS with Kubernetes 1.32 release 😉.</p>



<h2 class="wp-block-heading">Topology aware routing</h2>



<p class="wp-block-paragraph">Since Kubernetes 1.33, the <a href="https://kubernetes.io/docs/concepts/services-networking/topology-aware-routing/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">topology aware routing and traffic distribution</a> feature is in General Availability (GA).</p>



<p class="wp-block-paragraph">This feature allows to optimize service traffic in multi-zone clusters and reduce latency and cross-zone data transfer cost.</p>



<p class="wp-block-paragraph">Topology Aware Routing provides a mechanism to help <strong>keep traffic within the zone</strong> it originated from.</p>



<p class="wp-block-paragraph">In a context of multi-zone clusters, it helps reliability, performance, <strong>reduce costs</strong> or <strong>improve network performance</strong>.</p>



<p class="wp-block-paragraph">As OVHcloud just released, in Beta, the launch of their <a href="https://labs.ovhcloud.com/en/managed-kubernetes-service-mks-premium-plan/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">Managed Kubernetes clusters (MKS) on 3 AZ (Availability Zones)</a>, it&#8217;s the perfect occasion for me to test this brand new Kubernetes feature 🙂.</p>



<h2 class="wp-block-heading">Demo</h2>



<p class="wp-block-paragraph">Prerequisite: Have a Kubernetes cluster with at least 2 nodes running in 2 different zones.</p>



<p class="wp-block-paragraph">If you already don&#8217;t have one, you can follow <a href="https://blog.ovhcloud.com/deploy-your-workloads-on-3-availability-zones-with-our-new-managed-kubernetes-services-mks-premium-plan/" data-wpel-link="internal">this blog post</a> in order to <a href="https://blog.ovhcloud.com/deploy-your-workloads-on-3-availability-zones-with-our-new-managed-kubernetes-services-mks-premium-plan/" data-wpel-link="internal">create an OVHcloud MKS cluster with 3 nodes pools</a>, one per AZ.</p>



<p class="wp-block-paragraph">On my side I set-up a MKS cluster in 3AZ (one per node pool), with 3 nodes per node pool:</p>



<pre class="wp-block-code"><code class="">$ kubectx kubernetes-admin@multi-zone-mks
Switched to context "kubernetes-admin@multi-zone-mks".

$ kubectl get np
NAME             FLAVOR   AUTOSCALED   MONTHLYBILLED   ANTIAFFINITY   DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   MIN   MAX   AGE
my-pool-zone-a   b3-8     false        false           false          3         3         3            3           0     100   20d
my-pool-zone-b   b3-8     false        false           false          3         3         3            3           0     100   20d
my-pool-zone-c   b3-8     false        false           false          3         3         3            3           0     100   20d

$ kubectl get no
NAME                         STATUS   ROLES    AGE   VERSION
my-pool-zone-a-b9ztj-brgpq   Ready    &lt;none&gt;   20d   v1.32.3
my-pool-zone-a-b9ztj-gt5vd   Ready    &lt;none&gt;   20d   v1.32.3
my-pool-zone-a-b9ztj-mss8j   Ready    &lt;none&gt;   20d   v1.32.3
my-pool-zone-b-tr6wf-5wfgz   Ready    &lt;none&gt;   20d   v1.32.3
my-pool-zone-b-tr6wf-ct7fs   Ready    &lt;none&gt;   20d   v1.32.3
my-pool-zone-b-tr6wf-vlkwg   Ready    &lt;none&gt;   20d   v1.32.3
my-pool-zone-c-wgrl6-b2f9s   Ready    &lt;none&gt;   20d   v1.32.3
my-pool-zone-c-wgrl6-lp22l   Ready    &lt;none&gt;   20d   v1.32.3
my-pool-zone-c-wgrl6-slkq5   Ready    &lt;none&gt;   20d   v1.32.3</code></pre>



<p class="wp-block-paragraph">⚠️ As you saw, the Kubernetes version installed on my cluster is not equals to 1.33, but the <code>ServiceTrafficDistribution</code> feature gate is in Beta and it is activated:</p>



<pre class="wp-block-code"><code class="">$ kubectl get --raw /metrics | grep kubernetes_feature_enabled | grep Traffic

kubernetes_feature_enabled{name="ServiceTrafficDistribution",stage="BETA"} 1</code></pre>



<p class="has-text-align-center wp-block-paragraph">A visual architecture of my MKS cluster:</p>



<figure class="wp-block-image size-full"><img decoding="async" width="800" height="556" src="https://blog.ovhcloud.com/wp-content/uploads/2025/06/image-11.png" alt="" class="wp-image-29192" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/06/image-11.png 800w, https://blog.ovhcloud.com/wp-content/uploads/2025/06/image-11-300x209.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/06/image-11-768x534.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p class="wp-block-paragraph">⚠️ In MKS Standard clusters, don&#8217;t forget to <a href="https://help.ovhcloud.com/csm/en-gb-public-cloud-kubernetes-customizing-cilium?id=kb_article_view&amp;sysparm_article=KB0074067" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">enable the topology aware routing for 3AZ region</a>. </p>



<p class="wp-block-paragraph">In order to test this feature, in a new namespace, we will deploy:</p>



<ul class="wp-block-list">
<li>a deployment with two pods named <code>receiver-xxx</code></li>



<li>a ClusterIP service named <code>svc-prefer-close</code> with the feature enabled</li>



<li>a Pod named <code>sender</code></li>
</ul>



<p class="wp-block-paragraph">Let&#8217;s do that!</p>



<p class="wp-block-paragraph">Create a <code>deploy.yaml</code> file with the following content:</p>



<pre class="wp-block-code"><code class="">apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/name: service-traffic-example
  name: receiver
  namespace: prefer-close
spec:
  replicas: 2
  selector:
    matchLabels:
      app: service-traffic-example
  template:
    metadata:
      labels:
        app: service-traffic-example
    spec:
      containers:
      - image: scraly/hello-pod:1.0.1
        name: receiver
        ports:
        - containerPort: 8080
        env:
          - name: NODE_NAME
            valueFrom:
              fieldRef:
                fieldPath: spec.nodeName</code></pre>



<p class="wp-block-paragraph">Create a <code>svc.yaml</code> file with the following content:</p>



<pre class="wp-block-code"><code class="">apiVersion: v1
kind: Service
metadata:
  name: svc-prefer-close
  namespace: prefer-close
  annotations:
    service.kubernetes.io/topology-mode: auto
spec:
  ports:
    - name: http
      protocol: TCP
      port: 8080
      targetPort: 8080
  selector:
    app: service-traffic-example
  type: ClusterIP
  trafficDistribution: PreferClose</code></pre>



<p class="wp-block-paragraph">As you can see, this Service has two specific configurations.<br>First, we added the <code>service.kubernetes.io/topology-mode: auto</code> annotation to enable Topology Aware Routing for a Service.<br>Then, we configured the <code>trafficDistribution</code> to <code>PreferClose</code> in order to ask Kubernetes to send the traffic, preferably, to a pod that is &#8220;closed&#8221; to the sender.</p>



<p class="wp-block-paragraph">Create a new namespace and apply the manifest files:</p>



<pre class="wp-block-code"><code class="">$ kubectl create ns prefer-close
$ kubectl apply -f deploy.yaml
$ kubectl apply -f svc.yaml</code></pre>



<p class="wp-block-paragraph">Result:<br>You should have two running Pods on 2 differents Nodes.</p>



<pre class="wp-block-code"><code class="">$ kubectl get po -o wide -n prefer-close

NAME                        READY   STATUS              RESTARTS   AGE   IP            NODE                         NOMINATED NODE   READINESS GATES
receiver-7cfd89d78d-dhv6z   1/1     Running             0          94s   10.240.4.91   my-pool-zone-c-wgrl6-slkq5   &lt;none&gt;           &lt;none&gt;
receiver-7cfd89d78d-hrxrt   1/1     Running             0          94s   10.240.5.63   my-pool-zone-a-b9ztj-mss8j   &lt;none&gt;           &lt;none&gt;</code></pre>



<p class="wp-block-paragraph">OK, <code>receiver-xxxxxxxx-dhv6z</code> is running on <code>my-pool-zone-c-xxxx</code> and the other pod is running on <code>my-pool-zone-a-xxxx</code>. There are running on differents Availability Zones.</p>



<p class="wp-block-paragraph">Now, we can create a Pod <code>sender</code>. it will be scheduled on a Node:</p>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="800" height="556" src="https://blog.ovhcloud.com/wp-content/uploads/2025/06/image-12.png" alt="" class="wp-image-29193" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/06/image-12.png 800w, https://blog.ovhcloud.com/wp-content/uploads/2025/06/image-12-300x209.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/06/image-12-768x534.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p class="wp-block-paragraph">Run it and execute a <code>curl</code> command to test the traffic redirection to the &#8220;svc-prefer-close&#8221; Service:</p>



<pre class="wp-block-code"><code class="">$ kubectl run sender -n prefer-close --image=curlimages/curl -it -- sh
If you don't see a command prompt, try pressing enter.
~ $ curl http://svc-prefer-close.prefer-close:8080
Version: 1.0.1
Hostname: receiver-7cfd89d78d-dhv6z
Node: my-pool-zone-c-wgrl6-slkq5</code></pre>



<p class="wp-block-paragraph">Let&#8217;s verify where are our Pods:</p>



<pre class="wp-block-code"><code class="">$ kubectl get po -n prefer-close -o wide
NAME                        READY   STATUS    RESTARTS     AGE   IP             NODE                         NOMINATED NODE   READINESS GATES
receiver-7cfd89d78d-dhv6z   1/1     Running   0            9d    10.240.4.91    my-pool-zone-c-wgrl6-slkq5   &lt;none&gt;           &lt;none&gt;
receiver-7cfd89d78d-hrxrt   1/1     Running   0            9d    10.240.5.63    my-pool-zone-a-b9ztj-mss8j   &lt;none&gt;           &lt;none&gt;
sender                      1/1     Running   1 (5s ago)   21s   10.240.3.134   my-pool-zone-c-wgrl6-b2f9s   &lt;none&gt;           &lt;none&gt;</code></pre>



<p class="wp-block-paragraph">Kube-proxy sent the traffic from <code>sender</code> to a <code>receiver-xx</code> Pod on the same Availability Zone 🎉</p>



<p class="wp-block-paragraph">⚠️ Note that because <code>preferClose</code> means &#8220;topologically proximate&#8221;, it may vary across implementations and could encompass endpoints within the same node, rack, zone, or even region.</p>



<h2 class="wp-block-heading"><a href="https://dev.to/aurelievache/discover-kubernetes-133-topology-aware-routing-with-trafficdistribution-preferclose-2m66-temp-slug-8063145?preview=9c6673fc1c1d618ab0b2d7e86274fa1bcad2630e2e947e73c16022ee80128700654e53730ba787bd5407154bcb2dde6f5bed3b7e112a11034df4aefc#how-is-it-working" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"></a> How is it working?</h2>



<p class="wp-block-paragraph">When calculating the endpoints for a Service, the EndpointSlice controller considers the topology (region and zone) of each endpoint and populates the hints field to allocate it to a zone.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="800" height="598" src="https://blog.ovhcloud.com/wp-content/uploads/2025/06/image-13.png" alt="" class="wp-image-29194" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/06/image-13.png 800w, https://blog.ovhcloud.com/wp-content/uploads/2025/06/image-13-300x224.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/06/image-13-768x574.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<p class="wp-block-paragraph">Cluster components such as <em>kube-proxy</em> can then consume those hints, and use them to influence how the traffic is routed (favoring topologically closer endpoints).</p>



<p class="wp-block-paragraph">So, with <code>PreferClose</code> value for <code>trafficDistribution</code>, we ask kube-proxy to redirect traffic to the nearest available endpoints based on the network topology.</p>



<p class="wp-block-paragraph">That&#8217;s why the option is called <code>Prefer</code><code>Close</code>.</p>



<h2 class="wp-block-heading"><a href="https://dev.to/aurelievache/discover-kubernetes-133-topology-aware-routing-with-trafficdistribution-preferclose-2m66-temp-slug-8063145?preview=9c6673fc1c1d618ab0b2d7e86274fa1bcad2630e2e947e73c16022ee80128700654e53730ba787bd5407154bcb2dde6f5bed3b7e112a11034df4aefc#whats-next" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"></a> What&#8217;s next?</h2>



<p class="wp-block-paragraph">In the future you will be able to configure the <code>trafficDistribution</code> field with other values.</p>



<p class="wp-block-paragraph">Indeed, two new values, more explicit, are currently in Alpha since the Kubernetes 1.33 release: <code>PreferSameZone</code> and <code>PreferSameNode</code>.</p>



<figure class="wp-block-image aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="800" height="917" src="https://blog.ovhcloud.com/wp-content/uploads/2025/06/image-14.png" alt="" class="wp-image-29195" style="width:527px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/06/image-14.png 800w, https://blog.ovhcloud.com/wp-content/uploads/2025/06/image-14-262x300.png 262w, https://blog.ovhcloud.com/wp-content/uploads/2025/06/image-14-768x880.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<p class="wp-block-paragraph">Personally I can&#8217;t wait to test them 😇.</p>



<h2 class="wp-block-heading">Want to go further?</h2>



<p class="wp-block-paragraph">Want to learn more on this topic? In the coming days, we will publish a blog post about MKS Premium plan.</p>



<p class="wp-block-paragraph">Visit our <a href="https://labs.ovhcloud.com/en/managed-kubernetes-service-mks-premium-plan/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">Managed Kubernetes Service (MKS) Premium plan</a> in the OVHcloud Labs website to know more about Premium MKS.</p>



<p class="wp-block-paragraph">Join the <strong>free</strong> Beta: <a href="https://labs.ovhcloud.com/en/managed-kubernetes-service-mks-premium-plan/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">https://labs.ovhcloud.com/en/managed-kubernetes-service-mks-premium-plan/</a></p>



<p class="wp-block-paragraph">Read the documentation about the new <a href="https://help.ovhcloud.com/csm/fr-public-cloud-kubernetes-premium?id=kb_article_view&amp;sysparm_article=KB0067581" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">Managed Kubernetes Service (MKS) Premium plan</a>.</p>



<p class="wp-block-paragraph">Join us on <a href="https://discord.com/channels/850031577277792286/1366761790150541402" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">Discord</a> and give us your feedbacks.</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fdiscover-kubernetes-1-33-features-topology-aware-routing-in-multi-zones-kubernetes-clusters%2F&amp;action_name=Discover%20Kubernetes%201.33%20features%20%26%238211%3B%20Topology%20aware%20routing%20in%20multi-zones%20Kubernetes%20clusters&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Deploy your workloads on 3 availability zones with our new Managed Kubernetes Services (MKS) &#8216;Premium&#8217; plan</title>
		<link>https://blog.ovhcloud.com/deploy-your-workloads-on-3-availability-zones-with-our-new-managed-kubernetes-services-mks-premium-plan/</link>
		
		<dc:creator><![CDATA[Aurélie Vache]]></dc:creator>
		<pubDate>Mon, 19 May 2025 05:20:42 +0000</pubDate>
				<category><![CDATA[OVHcloud Engineering]]></category>
		<category><![CDATA[Tranches de Tech & Co — Tech bites]]></category>
		<category><![CDATA[3AZ]]></category>
		<category><![CDATA[Beta]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[milti-AZ]]></category>
		<category><![CDATA[MKS]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=28796</guid>

					<description><![CDATA[This blog post will first explain briefly what is the new MKS Premium plan, for who and which use case, [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fdeploy-your-workloads-on-3-availability-zones-with-our-new-managed-kubernetes-services-mks-premium-plan%2F&amp;action_name=Deploy%20your%20workloads%20on%203%20availability%20zones%20with%20our%20new%20Managed%20Kubernetes%20Services%20%28MKS%29%20%26%238216%3BPremium%26%238217%3B%20plan&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="890" height="1024" src="https://blog.ovhcloud.com/wp-content/uploads/2025/05/mks-3Apremium-ovh-890x1024.png" alt="" class="wp-image-28908" style="width:336px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/05/mks-3Apremium-ovh-890x1024.png 890w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/mks-3Apremium-ovh-261x300.png 261w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/mks-3Apremium-ovh-768x884.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/mks-3Apremium-ovh-1335x1536.png 1335w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/mks-3Apremium-ovh-1780x2048.png 1780w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/mks-3Apremium-ovh.png 2048w" sizes="auto, (max-width: 890px) 100vw, 890px" /></figure>



<p class="wp-block-paragraph">This blog post will first explain briefly what is the new MKS Premium plan, for who and which use case, then you will see how to deploy a new MKS cluster in 3 availability zones and how to deploy your workloads with this new architecture of Kubernetes cluster.</p>



<h2 class="wp-block-heading">What&#8217;s inside the Premium MKS?</h2>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="120" height="120" src="https://blog.ovhcloud.com/wp-content/uploads/2025/05/pci_product-managed-kubernetes-service.png" alt="" class="wp-image-28902" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/05/pci_product-managed-kubernetes-service.png 120w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/pci_product-managed-kubernetes-service-70x70.png 70w" sizes="auto, (max-width: 120px) 100vw, 120px" /></figure>



<p class="wp-block-paragraph">The 30th of April, we launched, in Beta, our brand new &#8220;Premium plan&#8221; of our Managed Kubernetes Services (MKS) 🎉</p>



<p class="wp-block-paragraph">Concretely, with MKS Premium you will have:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="455" src="https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-19-1024x455.png" alt="" class="wp-image-28924" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-19-1024x455.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-19-300x133.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-19-768x341.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-19-1536x683.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-19.png 1570w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">💡 For the moment, only Paris is available for the 3AZ region but several new regions will be available in the coming months including Milan.</p>



<p class="wp-block-paragraph">Behind this new plan, this new version of our MKS offering actually represents a complete overhaul of our platform based on several <a href="https://www.cncf.io/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Cloud Native</a> Open Source projects like <a href="https://cluster-api.sigs.k8s.io/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Cluster API</a>, <a href="https://kamaji.clastix.io/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Kamaji</a>, <a href="https://argo-cd.readthedocs.io/en/stable/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">ArgoCD</a> and several homemade Kubernetes operators.</p>



<h2 class="wp-block-heading">For who? For what?</h2>



<p class="wp-block-paragraph">The new MKS Premium plan has been designed for those who wants high availability and scalability of their critical applications.</p>



<p class="wp-block-paragraph">Thanks to a dedicated and fully managed control plane, resilience across multiple availability zones, dedicated resources for the Kubernetes control plane, and the ability to deploy the data plane across multiple availability zones.</p>



<p class="wp-block-paragraph">You will be able to design cloud-native applications that are resilient to failures and deploy highly resilient cloud-native applications across our multi-zones region. </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="485" src="https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-1024x485.png" alt="" class="wp-image-28799" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-1024x485.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-300x142.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-768x364.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image.png 1120w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">You will have the full control on how to deploy your worker node in our <strong>new 3AZ region</strong> (EU-WEST-PAR).</p>



<p class="wp-block-paragraph">Deploying your cloud-native applications in our new Paris 3-AZ region also means enjoying the full range of services available:</p>



<ul class="wp-block-list">
<li>Well architected application relying on resilient managed services (MKS + Load Balancer + Gateway + DBaaS + Object Storage &#8230;),</li>



<li>Advanced internal cluster networking with the new <a href="https://cilium.io/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Cilium</a> CNI</li>



<li>Better API server performances and scaling capacity</li>



<li>And much more to come!</li>
</ul>



<h2 class="wp-block-heading">Let&#8217;s deploy a MKS Premium cluster in 3 AZ at Paris!</h2>



<figure class="wp-block-image aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="960" height="797" src="https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-14.png" alt="" class="wp-image-28906" style="width:300px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-14.png 960w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-14-300x249.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-14-768x638.png 768w" sizes="auto, (max-width: 960px) 100vw, 960px" /></figure>



<p class="wp-block-paragraph">Like the actual Standard MKS, you can deploy MKS on the 3AZ via the Control Panel (OVHcloud UI), the API and also our Infrastructure as Code (IaC) providers (Terraform/OpenTofu, Pulumi&#8230;).</p>



<p class="wp-block-paragraph">In this blog post, we will deploy a new MKS cluster, in a 3AZ region (Paris) with 3 node pools (one per availability zone).</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="547" src="https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-21-1024x547.png" alt="" class="wp-image-28933" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-21-1024x547.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-21-300x160.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-21-768x410.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-21-1536x820.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-21.png 1854w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">With OVHcloud Control Panel</h3>



<p class="wp-block-paragraph">Log in to the&nbsp;<a href="https://www.ovh.com/auth/?action=gotomanager&amp;from=https://www.ovh.co.uk/&amp;ovhSubsidiary=GB" data-wpel-link="exclude">OVHcloud Control Panel</a>, go to the&nbsp;<code><strong>Public Cloud</strong></code>&nbsp;section and select the <strong>Public Cloud </strong>project concerned.</p>



<p class="wp-block-paragraph">In the left panel, go in the <strong>Containers &amp; Orchestration</strong> section, click on <strong>Managed Kubernetes Service</strong> link and click on the <strong>Create a Kubernetes cluster</strong> button</p>



<p class="wp-block-paragraph">Fill the name of the cluster, choose a 3AZ region, click on Paris (EU-WEST-PAR) and select the Premium plan:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="695" src="https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-3-1024x695.png" alt="" class="wp-image-28816" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-3-1024x695.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-3-300x204.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-3-768x521.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-3-1536x1043.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-3.png 1750w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Then, select the Kubernetes version and the security policy.</p>



<p class="wp-block-paragraph">⚠️  Contrary to the Standard MKS, which is public by default, the Premium MKS is private by default so it is mandatory to create a private network, a subnet and a gateway.</p>



<p class="wp-block-paragraph">Then, create one node pool by Availability Zone, with 3 nodes by node pool, for example:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="487" src="https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-6-1024x487.png" alt="" class="wp-image-28871" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-6-1024x487.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-6-300x143.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-6-768x365.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-6-1536x730.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-6.png 1884w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Confirm the creation of your cluster and wait its creation.</p>



<p class="wp-block-paragraph">Finally, click on the new created cluster and get the kubeconfig file.</p>



<h3 class="wp-block-heading">With Terraform</h3>



<p class="wp-block-paragraph">In a previous blog post, we showed you <a href="https://blog.ovhcloud.com/infrastructure-as-code-iac-on-ovhcloud-part-1-terraform-opentofu/" data-wpel-link="internal">how to deploy a MKs cluster with Terraform/OpenTofu</a>. Please read the post if you are not familiar with Terraform or OpenTofu.</p>



<p class="wp-block-paragraph">Create a <strong>ovh_kube.tf</strong> file with the following content:</p>



<pre class="wp-block-code"><code class="">resource "ovh_cloud_project_network_private" "network" {<br>  service_name = var.service_name<br>  vlan_id      = 84<br>  name         = "terraform_mks_multiaz_private_net"<br>  regions      = ["EU-WEST-PAR"]<br>}<br><br>resource "ovh_cloud_project_network_private_subnet" "subnet" {<br>  service_name = ovh_cloud_project_network_private.network.service_name<br>  network_id   = ovh_cloud_project_network_private.network.id<br><br>  # whatever region, for test purpose<br>  region     = "EU-WEST-PAR"<br>  start      = "192.168.142.100"<br>  end        = "192.168.142.200"<br>  network    = "192.168.142.0/24"<br>  dhcp       = true<br>  no_gateway = false<br>}<br><br>resource "ovh_cloud_project_gateway" "gateway" {<br>  service_name = ovh_cloud_project_network_private.network.service_name<br>  name       = "gateway"<br>  model      = "s"<br>  region     = "EU-WEST-PAR"<br>  network_id = tolist(ovh_cloud_project_network_private.network.regions_attributes[*].openstackid)[0]<br>  subnet_id  = ovh_cloud_project_network_private_subnet.subnet.id<br>}<br><br>resource "ovh_cloud_project_kube" "my_multizone_cluster" {<br>  service_name  = ovh_cloud_project_network_private.network.service_name<br>  name          = "multi-zone-mks"<br>  region        = "EU-WEST-PAR"<br>  plan          = "standard"<br><br>  private_network_id = tolist(ovh_cloud_project_network_private.network.regions_attributes[*].openstackid)[0]<br>  nodes_subnet_id    = ovh_cloud_project_network_private_subnet.subnet.id<br><br>  depends_on    = [ ovh_cloud_project_gateway.gateway ] //Gateway is mandatory for multizones cluster<br>}<br><br>resource "ovh_cloud_project_kube_nodepool" "node_pool_multi_zones_a" {<br>  service_name       = ovh_cloud_project_network_private.network.service_name<br>  kube_id            = ovh_cloud_project_kube.my_multizone_cluster.id<br>  name               = "my-pool-zone-a" //Warning: "_" char is not allowed!<br>  flavor_name        = "b3-8"<br>  desired_nodes      = 3<br>  availability_zones = ["eu-west-par-a"] //Currently, only one zone is supported<br>}<br><br>resource "ovh_cloud_project_kube_nodepool" "node_pool_multi_zones_b" {<br>  service_name       = ovh_cloud_project_network_private.network.service_name<br>  kube_id            = ovh_cloud_project_kube.my_multizone_cluster.id<br>  name               = "my-pool-zone-b"<br>  flavor_name        = "b3-8"<br>  desired_nodes      = 3<br>  availability_zones = ["eu-west-par-b"]<br>}<br><br>resource "ovh_cloud_project_kube_nodepool" "node_pool_multi_zones_c" {<br>  service_name       = ovh_cloud_project_network_private.network.service_name<br>  kube_id            = ovh_cloud_project_kube.my_multizone_cluster.id<br>  name               = "my-pool-zone-c"<br>  flavor_name        = "b3-8"<br>  desired_nodes      = 3<br>  availability_zones = ["eu-west-par-c"]<br>}<br><br>output "kubeconfig_file_eu_west_par" {<br>  value     = ovh_cloud_project_kube.my_multizone_cluster.kubeconfig<br>  sensitive = true<br>}</code></pre>



<p class="wp-block-paragraph">This HCL configuration will create several OVHcloud services:</p>



<ul class="wp-block-list">
<li>a private network</li>



<li>a subnet</li>



<li>a gateway (S size)</li>



<li>a MKS cluster in EU_WEST_PAR region</li>



<li>one node pool in <strong>eu-west-par-a</strong> availability zone with 3 nodes</li>



<li>one node pool in <strong>eu-west-par-b</strong> availability zone with 3 nodes</li>



<li>one node pool in <strong>eu-west-par-c</strong> availability zone with 3 nodes</li>
</ul>



<p class="wp-block-paragraph">Apply the configuration:</p>



<pre class="wp-block-code"><code class="">$ terraform apply

...

ovh_cloud_project_network_private.network: Creating...
ovh_cloud_project_network_private.network: Still creating... [10s elapsed]
ovh_cloud_project_network_private.network: Creation complete after 14s [id=pn-xxxxxxxx_xx]
ovh_cloud_project_network_private_subnet.subnet: Creating...
ovh_cloud_project_network_private_subnet.subnet: Creation complete after 3s [id=c14cbb87-xxxx-xxxx-xxxx-7b9d4940d857]
ovh_cloud_project_gateway.gateway: Creating...
ovh_cloud_project_gateway.gateway: Still creating... [10s elapsed]
ovh_cloud_project_gateway.gateway: Creation complete after 13s [id=7dafdcfe-xxxx-xxxx-xxxx-240df8f93af1]
ovh_cloud_project_kube.my_multizone_cluster: Creating...
ovh_cloud_project_kube.my_multizone_cluster: Still creating... [10s elapsed]
ovh_cloud_project_kube.my_multizone_cluster: Still creating... [20s elapsed]
ovh_cloud_project_kube.my_multizone_cluster: Still creating... [30s elapsed]
...
ovh_cloud_project_kube.my_multizone_cluster: Still creating... [1m40s elapsed]
ovh_cloud_project_kube.my_multizone_cluster: Still creating... [1m50s elapsed]
ovh_cloud_project_kube.my_multizone_cluster: Still creating... [2m0s elapsed]
ovh_cloud_project_kube.my_multizone_cluster: Creation complete after 2m2s [id=0196cd9a-xxxx-xxxx-xxxx-3acbb48d6dda]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_c: Creating...
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_a: Creating...
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_b: Creating...
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_c: Still creating... [10s elapsed]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_a: Still creating... [10s elapsed]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_b: Still creating... [10s elapsed]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_c: Still creating... [20s elapsed]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_a: Still creating... [20s elapsed]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_b: Still creating... [20s elapsed]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_a: Still creating... [30s elapsed]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_c: Still creating... [30s elapsed]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_b: Still creating... [30s elapsed]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_a: Still creating... [40s elapsed]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_c: Still creating... [40s elapsed]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_b: Still creating... [40s elapsed]
...
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_c: Still creating... [4m0s elapsed]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_b: Still creating... [4m0s elapsed]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_c: Still creating... [4m10s elapsed]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_a: Still creating... [4m10s elapsed]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_b: Still creating... [4m10s elapsed]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_a: Still creating... [4m20s elapsed]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_c: Still creating... [4m20s elapsed]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_b: Still creating... [4m20s elapsed]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_c: Creation complete after 4m24s [id=0196cd9c-xxxx-xxxx-xxxx-8e1925c4c18e]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_b: Creation complete after 4m24s [id=0196cd9c-xxxx-xxxx-xxxx-96a18b9202ff]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_a: Still creating... [4m30s elapsed]
ovh_cloud_project_kube_nodepool.node_pool_multi_zones_a: Creation complete after 4m35s [id=0196cd9c-xxxx-xxxx-xxxx-8a08cdc2e68d]

Apply complete! Resources: 7 added, 0 changed, 0 destroyed.

Outputs:

kubeconfig_file_eu_west_par = &lt;sensitive&gt;</code></pre>



<p class="wp-block-paragraph">Our MKS in 3AZ have been deployed 🎉</p>



<p class="wp-block-paragraph">To connect into it, retrieve the kubeconfig file locally:</p>



<pre class="wp-block-code"><code class="">$ terraform output -raw kubeconfig_file_eu_west_par &gt; ~/.kube/multi-zone-mks.yml</code></pre>



<h3 class="wp-block-heading">Connect and discover your MKS cluster</h3>



<p class="wp-block-paragraph">Initialize or append the KUBECONFIG environment variable with the new kubeconfig files:</p>



<pre class="wp-block-code"><code class="">export KUBECONFIG=/Users/my-user/.kube/mks.yml:/Users/my-user/.kube/multi-zone-mks.yml</code></pre>



<p class="wp-block-paragraph">Display the node pools. Our cluster have 3 nodes pools, one per AZ:</p>



<pre class="wp-block-code"><code class="">$ kubectl get np
NAME             FLAVOR   AUTOSCALED   MONTHLYBILLED   ANTIAFFINITY   DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   MIN   MAX   AGE
my-pool-zone-a   b3-8     false        false           false          3         3         3            3           0     100   7h8m
my-pool-zone-b   b3-8     false        false           false          3         3         3            3           0     100   7h8m
my-pool-zone-c   b3-8     false        false           false          3         3         3            3           0     100   7h8m</code></pre>



<p class="wp-block-paragraph">You can also display the control plane&#8217;s pods in order to discover the new components of the MKS Premium:</p>



<pre class="wp-block-code"><code class="">$ kubectl get po -n kube-system</code></pre>



<h2 class="wp-block-heading">How To</h2>



<h3 class="wp-block-heading">Deploy pods accross several availability zones</h3>



<p class="wp-block-paragraph">Now, let&#8217;s create a Depoyment with 6 pods and ask Kubernetes to deploy them in our 3 AZ (in the three node pools).</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="713" src="https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-12-1024x713.png" alt="" class="wp-image-28897" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-12-1024x713.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-12-300x209.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-12-768x535.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-12-1536x1070.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-12.png 1588w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">To do that, create a <strong>nginx-cross-az.yam</strong>l file with the following content:</p>



<pre class="wp-block-code"><code class="">apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-cross-az
  labels:
    app: nginx-cross-az
spec:
  replicas: 6
  selector:
    matchLabels:
      app: nginx-cross-az
  template:
    metadata:
      labels:
        app: nginx-cross-az
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: "topology.kubernetes.io/zone"
                operator: In
                values:
                - eu-west-par-a
                - eu-west-par-b
                - eu-west-par-c
      containers:
      - name: nginx
        image: nginx:1.28.0
        ports:
        - containerPort: 80</code></pre>



<p class="wp-block-paragraph">Thanks to the nodeAffinity feature of Kubernetes, we declare that we want 6 replicas (pods) running in 3 zones: <code>eu-west-par-a</code>, <code>eu-west-par-b</code>, <code>eu-west-par-c</code>.</p>



<p class="wp-block-paragraph">Create a new namespace and apply the deployment:</p>



<pre class="wp-block-code"><code class="">$ kubectl create ns hello-app
$ kubectl apply -f nginx-cross-az.yaml -n hello-app</code></pre>



<p class="wp-block-paragraph">As you can see, 6 pods have been created, and they are running on the nodes located in the 3 AZ.</p>



<pre class="wp-block-code"><code class="">$ kubectl get po -o wide -l app=nginx-cross-az -n hello-app
NAME                             READY   STATUS    RESTARTS   AGE    IP             NODE                         NOMINATED NODE   READINESS GATES
nginx-cross-az-6ffd957c4-7528p   1/1     Running   0          6s     10.240.2.140   my-pool-zone-b-tr6wf-5wfgz   &lt;none&gt;           &lt;none&gt;
nginx-cross-az-6ffd957c4-96mnh   1/1     Running   0          6s     10.240.3.91    my-pool-zone-c-wgrl6-b2f9s   &lt;none&gt;           &lt;none&gt;
nginx-cross-az-6ffd957c4-b48cv   1/1     Running   0          115m   10.240.6.182   my-pool-zone-c-wgrl6-lp22l   &lt;none&gt;           &lt;none&gt;
nginx-cross-az-6ffd957c4-k7rwf   1/1     Running   0          115m   10.240.1.237   my-pool-zone-b-tr6wf-ct7fs   &lt;none&gt;           &lt;none&gt;
nginx-cross-az-6ffd957c4-pb7zp   1/1     Running   0          115m   10.240.8.195   my-pool-zone-a-b9ztj-gt5vd   &lt;none&gt;           &lt;none&gt;
nginx-cross-az-6ffd957c4-vhhcw   1/1     Running   0          6s     10.240.7.40    my-pool-zone-a-b9ztj-brgpq   &lt;none&gt;           &lt;none&gt;</code></pre>



<h3 class="wp-block-heading">Deploy pods only in a desired availability zone</h3>



<p class="wp-block-paragraph">You can also choose to deploy a Deployment with 3 replicas, only in the AZ of your choice, only in <strong>eu-west-par-a</strong> for example.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="713" src="https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-13-1024x713.png" alt="" class="wp-image-28898" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-13-1024x713.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-13-300x209.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-13-768x535.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-13-1536x1070.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2025/05/image-13.png 1588w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Create a <strong>nginx-one-az.yaml</strong> file with the following content:</p>



<pre class="wp-block-code"><code class="">apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-one-az
  labels:
    app: nginx-one-az
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-one-az
  template:
    metadata:
      labels:
        app: nginx-one-az
    spec:
      nodeSelector:
        topology.kubernetes.io/zone: eu-west-par-a
      containers:
      - name: nginx
        image: nginx:1.28.0
        ports:
        - containerPort: 80</code></pre>



<p class="wp-block-paragraph">Deploy the manifest file in your cluster:</p>



<pre class="wp-block-code"><code class="">$ kubectl apply -f nginx-one-az.yaml -n hello-app
deployment.apps/nginx-one-az created</code></pre>



<p class="wp-block-paragraph">As you can see, our three pods are running in the PAR region only in the <code><strong>zone-a</strong></code> nodes:</p>



<pre class="wp-block-code"><code class="">$ kubectl get po -o wide -l app=nginx-one-az -n hello-app
NAME                            READY   STATUS    RESTARTS   AGE    IP             NODE                         NOMINATED NODE   READINESS GATES
nginx-one-az-6b5f9bdccc-8vv9l   1/1     Running   0          98s    10.240.7.13    my-pool-zone-a-b9ztj-brgpq   &lt;none&gt;           &lt;none&gt;
nginx-one-az-6b5f9bdccc-ck99s   1/1     Running   0          100s   10.240.5.216   my-pool-zone-a-b9ztj-mss8j   &lt;none&gt;           &lt;none&gt;
nginx-one-az-6b5f9bdccc-tlg4d   1/1     Running   0          96s    10.240.8.221   my-pool-zone-a-b9ztj-gt5vd   &lt;none&gt;           &lt;none&gt;</code></pre>



<h2 class="wp-block-heading">Want to go further?</h2>



<p class="wp-block-paragraph">Want to learn more on this topic? In the coming days, we will publish a blog post about MKS Premium plan.</p>



<p class="wp-block-paragraph">Visit our <a href="https://labs.ovhcloud.com/en/managed-kubernetes-service-mks-premium-plan/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Managed Kubernetes Service (MKS) Premium plan</a> in the OVHcloud Labs website to know more about Premium MKS.</p>



<p class="wp-block-paragraph">Join the <strong>free</strong> Beta: <a href="https://labs.ovhcloud.com/en/managed-kubernetes-service-mks-premium-plan/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://labs.ovhcloud.com/en/managed-kubernetes-service-mks-premium-plan/</a></p>



<p class="wp-block-paragraph">Read the documentation about the new <a href="https://help.ovhcloud.com/csm/fr-public-cloud-kubernetes-premium?id=kb_article_view&amp;sysparm_article=KB0067581" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Managed Kubernetes Service (MKS) Premium plan</a>.</p>



<p class="wp-block-paragraph">Join us on <a href="https://discord.com/channels/850031577277792286/1366761790150541402" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Discord</a> and give us your feedbacks.</p>



<p class="wp-block-paragraph"></p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fdeploy-your-workloads-on-3-availability-zones-with-our-new-managed-kubernetes-services-mks-premium-plan%2F&amp;action_name=Deploy%20your%20workloads%20on%203%20availability%20zones%20with%20our%20new%20Managed%20Kubernetes%20Services%20%28MKS%29%20%26%238216%3BPremium%26%238217%3B%20plan&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
