<?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=6.9.4</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]]></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 be easy to know what are the interesting and useful features and how to use them. In this blog post, let&#8217;s discover one of interesting and useful new feature: &#8220;Topology aware routing in multi-zones Kubernetes [&#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><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>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>⚠️ 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>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>This feature allows to optimize service traffic in multi-zone clusters and reduce latency and cross-zone data transfer cost.</p>



<p>Topology Aware Routing provides a mechanism to help <strong>keep traffic within the zone</strong> it originated from.</p>



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



<p>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>Prerequisite: Have a Kubernetes cluster with at least 2 nodes running in 2 different zones.</p>



<p>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>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>⚠️ 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">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>⚠️ 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>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>Let&#8217;s do that!</p>



<p>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>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>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>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>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>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>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>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>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>Kube-proxy sent the traffic from <code>sender</code> to a <code>receiver-xx</code> Pod on the same Availability Zone 🎉</p>



<p>⚠️ 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>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>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>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>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>In the future you will be able to configure the <code>trafficDistribution</code> field with other values.</p>



<p>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>Personally I can&#8217;t wait to test them 😇.</p>



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



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



<p>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>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>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>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]]></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, 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. What&#8217;s inside the Premium MKS? The 30th [&#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>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>The 30th of April, we launched, in Beta, our brand new &#8220;Premium plan&#8221; of our Managed Kubernetes Services (MKS) 🎉</p>



<p>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>💡 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>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>The new MKS Premium plan has been designed for those who wants high availability and scalability of their critical applications.</p>



<p>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>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>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>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>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>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>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>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>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>Then, select the Kubernetes version and the security policy.</p>



<p>⚠️  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>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>Confirm the creation of your cluster and wait its creation.</p>



<p>Finally, click on the new created cluster and get the kubeconfig file.</p>



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



<p>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>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>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>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>Our MKS in 3AZ have been deployed 🎉</p>



<p>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>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>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>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>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>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>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>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>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>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>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>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>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>Want to learn more on this topic? In the coming days, we will publish a blog post about MKS Premium plan.</p>



<p>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>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>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>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></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>
