<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Multi-Location кластеры on Cozystack</title><link>https://cozystack.ru/docs/v1.5/operations/multi-location/</link><description>Recent content in Multi-Location кластеры on Cozystack</description><generator>Hugo</generator><language>en</language><atom:link href="https://cozystack.ru/docs/v1.5/operations/multi-location/index.xml" rel="self" type="application/rss+xml"/><item><title>Networking Mesh</title><link>https://cozystack.ru/docs/v1.5/operations/multi-location/networking-mesh/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cozystack.ru/docs/v1.5/operations/multi-location/networking-mesh/</guid><description>&lt;p&gt;Kilo создает WireGuard mesh между locations кластера. При работе с Cilium он использует
IPIP encapsulation, маршрутизируемую через VxLAN overlay Cilium, чтобы traffic между locations
работал даже тогда, когда cloud network блокирует raw IPIP packets (protocol 4).&lt;/p&gt;
&lt;h2 id="выберите-networking-variant-cilium-kilo"&gt;Выберите networking variant cilium-kilo&lt;/h2&gt;
&lt;p&gt;Во время настройки platform выберите networking variant &lt;strong&gt;cilium-kilo&lt;/strong&gt;. Он разворачивает Cilium
и Kilo как интегрированный stack с нужной конфигурацией.&lt;/p&gt;
&lt;h2 id="как-это-работает"&gt;Как это работает&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Kilo работает в режиме &lt;code&gt;--local=false&lt;/code&gt; и не управляет routes внутри location (это делает Cilium)&lt;/li&gt;
&lt;li&gt;Kilo создает WireGuard tunnel (&lt;code&gt;kilo0&lt;/code&gt;) между location leaders&lt;/li&gt;
&lt;li&gt;Non-leader nodes в каждой location достигают remote locations через IPIP encapsulation до своего location leader, маршрутизируемую через VxLAN overlay Cilium&lt;/li&gt;
&lt;li&gt;Leader decapsulates IPIP и пересылает traffic через WireGuard tunnel&lt;/li&gt;
&lt;li&gt;Опция Cilium &lt;code&gt;enable-ipip-termination&lt;/code&gt; создает интерфейс &lt;code&gt;cilium_tunl&lt;/code&gt; (переименованный kernel &lt;code&gt;tunl0&lt;/code&gt;), который Kilo использует для IPIP TX/RX; без него kernel обнаруживает TX recursion на tunnel device&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="talos-machine-config-для-cloud-nodes"&gt;Talos machine config для cloud nodes&lt;/h2&gt;
&lt;p&gt;Cloud worker nodes должны содержать Kilo annotations в Talos machine config:&lt;/p&gt;</description></item><item><title>Local Cloud Controller Manager</title><link>https://cozystack.ru/docs/v1.5/operations/multi-location/local-ccm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cozystack.ru/docs/v1.5/operations/multi-location/local-ccm/</guid><description>&lt;p&gt;Package &lt;code&gt;local-ccm&lt;/code&gt; предоставляет легкий cloud controller manager для self-managed clusters.
Он отвечает за node IP detection и node lifecycle без необходимости во внешнем cloud provider.&lt;/p&gt;
&lt;h2 id="что-он-делает"&gt;Что он делает&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;External IP detection&lt;/strong&gt;: определяет external IP каждого узла через &lt;code&gt;ip route get&lt;/code&gt; (target по умолчанию: &lt;code&gt;8.8.8.8&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Node initialization&lt;/strong&gt;: удаляет taint &lt;code&gt;node.cloudprovider.kubernetes.io/uninitialized&lt;/code&gt;, чтобы pods могли планироваться&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Node lifecycle controller&lt;/strong&gt; (опционально): мониторит NotReady nodes через ICMP ping и удаляет их после настраиваемого timeout&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="установка"&gt;Установка&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cozypkg add cozystack.local-ccm
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="talos-machine-config"&gt;Talos machine config&lt;/h2&gt;
&lt;p&gt;На всех узлах кластера, включая control plane, должен быть задан &lt;code&gt;cloud-provider: external&lt;/code&gt;,
чтобы kubelet передавал node initialization в cloud controller manager:&lt;/p&gt;</description></item></channel></rss>