{"id":471640,"date":"2025-08-22T15:01:18","date_gmt":"2025-08-22T15:01:18","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=471640"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=471640","title":{"rendered":"<span>\u041a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u0434\u043b\u044f \u043d\u043e\u0440\u043c \u043f\u0430\u0446\u0430\u043d\u043e\u0432<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><em>\u0414\u043b\u044f \u0441\u0435\u0442\u0435\u0432\u0438\u043a\u043e\u0432 \u043e\u0442 \u0441\u0435\u0442\u0435\u0432\u0438\u043a\u0430<\/em><\/p>\n<h4>\u0421\u0440\u0435\u0434\u0430<\/h4>\n<p>\u041a\u0430\u043a \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0446\u0430\u043d\u044b, \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u044e Kubernetes-\u0430 \u0432 \u0432\u0438\u0434\u0435 \u201cbaremetal-\u0430\u201d, \u0430 \u043f\u043e \u0444\u0430\u043a\u0442\u0443, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u044d\u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u0433\u043e\u043b\u044b\u0439 \u043c\u0435\u0442\u0430\u043b \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u0437 \u0441\u0435\u0431\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0443 \u0441 \u0443\u0431\u0443\u043d\u0442\u043e\u0439, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0440\u0435\u0434\u044b \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u043e\u0436\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430. \u041d\u0430\u043a\u0438\u0434\u0430\u0435\u043c \u0442\u0430\u043a\u0443\u044e \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u044e:  <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/746\/8f6\/fdd\/7468f6fdd64c2864ab5ebdfddcea6006.png\" width=\"1242\" height=\"981\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/746\/8f6\/fdd\/7468f6fdd64c2864ab5ebdfddcea6006.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/746\/8f6\/fdd\/7468f6fdd64c2864ab5ebdfddcea6006.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u043d\u043e\u0440\u043c \u043f\u0430\u0446\u0430\u043d\u044b, \u0442\u043e:<\/p>\n<ol>\n<li>\n<p>\u0412\u0441\u0451 \u0441\u044d\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u044f\u043c\u043e \u0432 PNETLAB-\u0435<\/p>\n<\/li>\n<li>\n<p>\u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u044e Leaf-Spine<\/p>\n<\/li>\n<li>\n<p>\u041c\u044b \u043d\u0430\u0447\u0438\u0442\u0430\u043b\u0438\u0441\u044c\u00a0<a href=\"https:\/\/t.me\/NetArchNotes\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u043c\u0435\u0442\u043e\u043a \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440\u0430<\/a>, \u0438 \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0432\u043b\u0430\u043d\u043e\u0432, \u043f\u0440\u043e\u0441\u0442\u043e \u0447\u0438\u0441\u0442\u044b\u0439 L3 &#8212; \u0432\u0441\u0435 \u043b\u0438\u043d\u043a\u0438 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0435<\/p>\n<ul>\n<li>\n<p>\u041c\u0435\u0436\u0434\u0443 \u0441\u0432\u0438\u0442\u0447\u0430\u043c\u0438 \u043c\u044b \u043f\u043e\u0434\u044b\u043c\u0435\u043c OSFP, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0441\u0435\u0440\u0432\u0430\u0447\u043a\u0438 \u043c\u043e\u0433\u043b\u0438 \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0436\u043a\u043e\u0439 \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f. \u0417\u0434\u043e\u0440\u043e\u0432\u043e \u0431\u0443\u0434\u0435\u0442.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u041c\u044b \u0431\u0443\u0434\u0435\u043c \u044e\u0437\u0430\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0443\u0431\u0443\u043d\u0442\u0443 (\u043f\u0435\u0440\u0432\u043e\u0435 \u0447\u0442\u043e \u043f\u043e\u0434 \u0440\u0443\u043a\u0443 \u043f\u043e\u043f\u0430\u043b\u043e\u0441\u044c, \u043a\u0430\u0440\u043e\u0447\u0435):<\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"bash\">root@K-Master:~# lsb_release -a   No LSB modules are available.   Distributor ID:Ubuntu   Description:Ubuntu 22.04.2 LTS   Release:22.04   Codename:jammy<\/code><\/pre>\n<h4>\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0435\u0442\u0438<\/h4>\n<p>\u041d\u0430\u043c\u0443\u0442\u0438\u043c \u043a\u0430\u043a\u0443\u044e-\u043d\u0438\u0431\u0443\u0434\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a\u0443\u044e \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0447\u0442\u043e \u043d\u043e\u0434\u044b \u043f\u0438\u043d\u0433\u0430\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430:  <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/030\/9a7\/4a2\/0309a74a25a55057f415e4af7c704475.png\" width=\"1283\" height=\"816\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/030\/9a7\/4a2\/0309a74a25a55057f415e4af7c704475.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/030\/9a7\/4a2\/0309a74a25a55057f415e4af7c704475.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0423 \u201c\u043d\u0438\u0436\u043d\u0435\u0433\u043e\u201d \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 IP, \u0443 \u201c\u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e\u201d &#8212; \u043d\u0443\u043b\u0435\u0432\u043e\u0439. \u041c\u0435\u0436\u0434\u0443 \u043b\u0438\u0444\u0430\u043c\u0438 \u0438 \u0441\u043f\u0430\u0439\u043d\u0430\u043c\u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439 \u043e\u044d\u0441\u043f\u044d\u044d\u0444\u0447\u0438\u043a, \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u043b\u0438\u0444\u044b &#8212; \u0448\u043b\u044e\u0437\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:<\/p>\n<p>\u041d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u043b\u0438\u0444\u0435 \u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cs\">interface Ethernet1    no switchport    ip address 10.11.99.1\/31 ! interface Ethernet2    no switchport    ip address 10.0.11.0\/31 ! interface Ethernet3    no switchport    ip address 10.1.11.0\/31<\/code><\/pre>\n<p>\u041d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"lua\">root@K-Master:~# ip addr add 10.0.11.1\/31 dev ens3  # \u043f\u0438\u043d\u0433\u0443\u0435\u0442\u0446\u043e: root@K-Master:~# ping 10.0.11.0 PING 10.0.11.0 (10.0.11.0) 56(84) bytes of data. 64 bytes from 10.0.11.0: icmp_seq=1 ttl=64 time=32.3 ms 64 bytes from 10.0.11.0: icmp_seq=2 ttl=64 time=3.05 ms  # \u043d\u0443 \u0448\u043b\u044e\u0437 \u0435\u0449\u0451 \u043f\u0440\u043e\u043f\u0438\u0448\u0435\u043c root@K-Master:~# ip r add default via 10.0.11.0 dev ens3 root@K-Master:~# ip r default via 10.0.11.0 dev ens3  10.0.11.0\/31 dev ens3 proto kernel scope link src 10.0.11.1 <\/code><\/pre>\n<p>\u041d\u043e \u0442\u0430\u043a, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0434\u0435\u043b\u043e \u043d\u0435 \u043f\u043e\u0439\u0434\u0451\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u0432\u0435\u0449\u044c \u043d\u0435 \u043d\u0430\u0434\u0451\u0436\u043d\u0430\u044f &#8212; \u043d\u043e\u0434\u044b \u0440\u0435\u0431\u0443\u0442\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0431\u0435\u0437 \u0432\u0441\u044f\u043a\u043e\u0439 \u043d\u0430 \u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0430\u0434\u043e \u0437\u0430\u043f\u0435\u0440\u0441\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443 \u043a\u0430\u043a-\u0442\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0447\u0435\u0440\u0435\u0437 netplan:<\/p>\n<pre><code class=\"yaml\">root@K-Master:~# cat \/etc\/netplan\/01-KubeBase.yaml  network:   ethernets:     ens3:       addresses:       - 10.0.11.1\/31       dhcp4: false       routes:       -  to: default          via: 10.0.11.0   version: 2<\/code><\/pre>\n<h4>\u0422\u0435\u043f\u0435\u0440\u044c \u041e\u0422\u041c\u0410\u0421\u0428\u0422\u0410\u0411\u0418\u0420\u0423\u0415\u041c \u044d\u0442\u043e \u0432\u0441\u0451<\/h4>\n<p>\u041b\u0438\u04442:<\/p>\n<pre><code class=\"cs\">interface Ethernet1    no switchport    ip address 10.22.99.1\/31 ! interface Ethernet2    no switchport    ip address 10.2.22.0\/31 !<\/code><\/pre>\n<p>\u041b\u0438\u04443:<\/p>\n<pre><code class=\"cs\">interface Ethernet1    no switchport    ip address 10.33.99.1\/31 ! interface Ethernet2    no switchport    ip address 10.3.33.0\/31 !<\/code><\/pre>\n<p>\u0412\u043e\u0440\u043a\u0435\u04401:<\/p>\n<pre><code class=\"yaml\">root@k-w1:~#cat &lt;&lt;EOF &gt; \/etc\/netplan\/01-KubeBase.yaml network:   ethernets:     ens3:       addresses:       - 10.1.11.1\/31       dhcp4: false       routes:       -  to: default          via: 10.1.11.0   version: 2 EOF root@k-w1:~# netplan apply<\/code><\/pre>\n<p>\u0412\u043e\u0440\u043a\u0435\u04402<\/p>\n<pre><code class=\"yaml\">root@k-w2:~#cat &lt;&lt;EOF &gt; \/etc\/netplan\/01-KubeBase.yaml  network:   ethernets:     ens3:       addresses:       - 10.2.22.1\/31       dhcp4: false       routes:       -  to: default          via: 10.2.22.0   version: 2 EOF root@k-w2:~# netplan apply <\/code><\/pre>\n<p>\u0412\u043e\u0440\u043a\u0435\u0440 3<\/p>\n<pre><code class=\"yaml\">root@k-w3:~#cat &lt;&lt;EOF &gt; \/etc\/netplan\/01-KubeBase.yaml  network:   ethernets:     ens3:       addresses:       - 10.3.33.1\/31       dhcp4: false       routes:       -  to: default          via: 10.3.33.0   version: 2 EOF root@k-w3:~# netplan apply<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u0441\u0435\u0433\u043e \u0432\u043e\u0440\u043a\u0435\u0440 1 \u043c\u043e\u0436\u0435\u0442 \u043f\u0438\u043d\u0433\u0430\u0442\u044c \u043c\u0430\u0441\u0442\u0435\u0440\u0430:<\/p>\n<pre><code class=\"lua\">root@k-w1:~# ping 10.0.11.1 PING 10.0.11.1 (10.0.11.1) 56(84) bytes of data. 64 bytes from 10.0.11.1: icmp_seq=1 ttl=63 time=5.99 ms 64 bytes from 10.0.11.1: icmp_seq=2 ttl=63 time=24.9 ms<\/code><\/pre>\n<p>\u041d\u043e \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u0430 \u043d\u0435\u0442\u0443 \u0440\u0443\u0442\u0438\u043d\u0433\u0430 \u0447\u0435\u0440\u0435\u0437 \u0441\u043f\u0430\u0439\u043d. \u041a\u0430\u043a \u0438 \u043e\u0431\u0435\u0449\u0430\u043b, \u043c\u0443\u0442\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 OSFP.<\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0441\u043f\u0430\u0439\u043d:<\/p>\n<pre><code class=\"cs\">interface Ethernet1    no switchport    ip address 10.11.99.0\/31 ! interface Ethernet2    no switchport    ip address 10.22.99.0\/31 ! interface Ethernet3    no switchport    ip address 10.33.99.0\/31<\/code><\/pre>\n<p>\u0418 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0441\u0432\u0438\u0442\u0447\u0430\u0445 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c OSFP:<\/p>\n<pre><code class=\"cs\">router ospf 1    network 0.0.0.0\/0 area 0.0.0.0<\/code><\/pre>\n<p>(\u043d\u0435 \u043d\u0430\u0434\u043e \u0442\u0430\u043a \u043f\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 OSFP-\u0430 \u0432 \u043f\u0440\u043e\u0434\u0435, \u043d\u043e \u0434\u043b\u044f \u043b\u0430\u0431\u044b \u043f\u043e\u0434\u043e\u0439\u0434\u0451\u0442)<\/p>\n<p>OSFP \u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f:<\/p>\n<pre><code class=\"lua\">Spine-1#show ip ospf neighbor  Neighbor ID     Instance VRF      Pri State                  Dead Time   Address         Interface 10.11.99.1      1        default  1   FULL\/DR                00:00:29    10.11.99.1      Ethernet1 10.22.99.1      1        default  1   FULL\/DR                00:00:30    10.22.99.1      Ethernet2 10.33.99.1      1        default  1   FULL\/DR                00:00:35    10.33.99.1      Ethernet3  Spine-1#show ip ro ospf   O        10.0.11.0\/31 [110\/20] via 10.11.99.1, Ethernet1  O        10.1.11.0\/31 [110\/20] via 10.11.99.1, Ethernet1  O        10.2.22.0\/31 [110\/20] via 10.22.99.1, Ethernet2  O        10.3.33.0\/31 [110\/20] via 10.33.99.1, Ethernet3 <\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0435 \u0432\u043e\u0440\u043a\u0435\u0440\u044b \u0432\u0438\u0434\u044f\u0442 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u0438 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0436\u043a\u0443, \u0432\u043e\u0442 \u043f\u0440\u0443\u0444:<\/p>\n<pre><code class=\"lua\">root@k-w3:~# ping 10.0.11.1 PING 10.0.11.1 (10.0.11.1) 56(84) bytes of data. 64 bytes from 10.0.11.1: icmp_seq=1 ttl=61 time=13.6 ms 64 bytes from 10.0.11.1: icmp_seq=2 ttl=61 time=15.7 ms  root@k-w3:~# tracepath 10.0.11.1 -n  1?: [LOCALHOST]                      pmtu 1500  1:  10.3.33.0                                             3.027ms   1:  10.3.33.0                                             2.535ms   2:  10.33.99.0                                            6.473ms   3:  10.11.99.1                                           10.034ms   4:  10.0.11.1                                            11.929ms reached      Resume: pmtu 1500 hops 4 back 4 <\/code><\/pre>\n<p>\u0412\u0441\u0451! \u0412\u0441\u0451 \u0434\u0430 \u043d\u0435 \u0432\u0441\u0451 &#8212; ubunutu \u0443 \u043d\u0430\u0441 \u201c\u0433\u043e\u043b\u0430\u044f\u201d, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0442 \u043d\u0430\u0448 \u043a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u044b \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u044b. \u0412 PNETLAB, \u0435\u0441\u043b\u0438 \u0445\u043e\u0441\u0442 \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0431\u043b\u0430\u0447\u043a\u043e \u0441 \u0442\u0438\u043f\u043e\u043c NAT, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0443\u0434\u0430 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u043f\u043e dhcp \u0438 \u043d\u0430\u0441\u043b\u0430\u0436\u0434\u0430\u0442\u044c\u0441\u044f. \u0422\u0430\u043a \u043a\u0430\u043a \u044f \u044f\u0440\u044b\u0439 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u0438\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0447\u0435\u0433\u043e-\u043b\u0438\u0431\u043e \u043a\u0440\u043e\u043c\u0435 \u043b\u0438\u0444\u043e\u0444 \u0432 \u0441\u043f\u0430\u0439\u043d\u044b, \u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u0441\u043f\u0430\u0439\u043d \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u044f \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0443:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6cc\/ef6\/eca\/6ccef6ecac193f51ae30c5ca2164dfaf.png\" width=\"925\" height=\"468\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/6cc\/ef6\/eca\/6ccef6ecac193f51ae30c5ca2164dfaf.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6cc\/ef6\/eca\/6ccef6ecac193f51ae30c5ca2164dfaf.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043b\u0438 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043d\u0430 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u043e\u0434\u0435:<\/p>\n<pre><code class=\"lua\">user@k-w1:~$ ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. From 10.1.11.0 icmp_seq=1 Destination Net Unreachable From 10.1.11.0 icmp_seq=2 Destination Net Unreachable From 10.1.11.0 icmp_seq=3 Destination Net Unreachable<\/code><\/pre>\n<p>\u041d\u0438\u0447\u0451 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u043d\u0430\u0434\u043e \u0447\u0442\u043e-\u0442\u043e \u0433\u0434\u0435-\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c. \u041d\u0430 \u0441\u043f\u0430\u0439\u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c IP \u0447\u0435\u0440\u0435\u0437 DHCP \u043d\u0430 \u043f\u043e\u0440\u0442\u0443, \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0434\u0435\u0444\u043e\u043b\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0432 \u0441\u0435\u0442\u0438 (\u0447\u0438\u0441\u0442\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u043b):<\/p>\n<pre><code class=\"lua\"># \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442: Spine-1#ping 8.8.8.8 connect: Network is unreachable  # \u0427\u0438\u043d\u0438\u043c Spine-1#conf t Spine-1(config)#int ethernet 4 Spine-1(config-if-Et4)#no switchport  Spine-1(config-if-Et4)#ip address dhcp   Spine-1#show ip int ethernet 4 brief                                            Interface      IP Address           Status      Protocol         MTU    Owner   -------------- -------------------- ----------- ------------- --------- ------- Ethernet4      10.0.137.189\/24      up          up              1500        Spine-1(config)#ip route 0.0.0.0 0.0.0.0  10.0.137.1  # \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Spine-1#ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 72(100) bytes of data. 80 bytes from 8.8.8.8: icmp_seq=1 ttl=99 time=23.2 ms 80 bytes from 8.8.8.8: icmp_seq=2 ttl=99 time=20.6 ms 80 bytes from 8.8.8.8: icmp_seq=3 ttl=99 time=20.6 ms 80 bytes from 8.8.8.8: icmp_seq=4 ttl=99 time=21.2 ms 80 bytes from 8.8.8.8: icmp_seq=5 ttl=99 time=20.7 ms  # \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u043c \u0434\u0435\u0444\u043e\u043b\u0442 \u043f\u043e \u0444\u0430\u0431\u0440\u0438\u043a\u0435: Spine-1(config)#router ospf 1 Spine-1(config-router-ospf)#redistribute static  # \u041d\u0430 \u043b\u0438\u0444, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u043e\u0440\u043a\u0435\u0440 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u0434\u0435\u0444\u043e\u043b\u0442 \u043f\u0440\u0438\u0448\u0451\u043b, \u0438 \u0432\u0438\u0434\u0451\u0442 \u043d\u0430 \u0441\u043f\u0430\u0439\u043d: Leaf-1#show ip ro 0.0.0.0 Gateway of last resort:  O E2     0.0.0.0\/0 [110\/1] via 10.11.99.0, Ethernet1  # \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0432\u043e\u0440\u043a\u0435\u0440\u04351: user@k-w1:~$ ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.    :(  #\u0422\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u0432\u0435\u0434\u0451\u0442 \u043a\u0443\u0434\u0430 \u043d\u0430\u0434\u043e: user@k-w1:~$ tracepath -n 8.8.8.8  1?: [LOCALHOST]                      pmtu 1500  1:  10.1.11.0                                             4.290ms   1:  10.1.11.0                                             2.697ms   2:  10.11.99.0                                            8.022ms   3:  no reply <\/code><\/pre>\n<p>\u0418 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u0431\u0440\u0438\u0434\u0436 \u0441 \u0441\u0430\u043c\u043e\u0439 \u043d\u043e\u0434\u043e\u0439, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d NAT \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442. \u041d\u043e \u043d\u043e\u0434\u0430 \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0438 \u043f\u0440\u043e \u043a\u0430\u043a\u0438\u0435 \u0432\u043e\u0440\u043a\u0435\u0440\u044b \u0438 \u0441\u0435\u0442\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043d\u0438 \u0436\u0438\u0432\u0443\u0442, \u0442\u0430\u043a \u0447\u0442\u043e \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u043c \u0440\u043e\u0443\u0442\u0435\u0440\u0435 (\u0441\u043f\u0430\u0439\u043d\u0435) \u0442\u043e\u0436\u0435 \u043d\u0443\u0436\u043d\u043e NAT \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c:<\/p>\n<pre><code class=\"lua\">Spine-1(config)#ip access-list ACL_NAT Spine-1(config-acl-ACL_NAT)# permit ip 10.0.0.0\/8 any log   Spine-1(config)#int et4 Spine-1(config-if-Et4)#ip nat source dynamic access-list ACL_NAT overload <\/code><\/pre>\n<p>\u0418 \u044d\u0442\u043e \u0434\u0430\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043f\u0446 \u043a\u0430\u043a \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e &#8212; \u0432\u0441\u0451 \u0442\u0430\u043a\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 pnetlab-\u0430 \u043d\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0434\u043b\u044f \u0441\u043a\u043e\u043b\u044c\u043a\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u0430\u0442\u0430\u043f\u043b\u0435\u0439\u043d\u0430.\u00a0\u0412 \u043e\u0431\u0449\u0435\u043c, \u044f \u0438\u0437\u043c\u0435\u043d\u0438\u043b \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0441\u0434\u0435\u043b\u043a\u0438\u00a0<s>\u0438 \u043c\u043e\u043b\u0438\u0442\u0435\u0441\u044c \u0447\u0442\u043e \u0431\u044b \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437<\/s>\u00a0&#8212; \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0445\u043e\u0441\u0442, \u0432\u043e\u0442\u043a\u043d\u0451\u043c \u0438\u0445 \u0432 \u044d\u0442\u043e \u043e\u0431\u043b\u0430\u0447\u043a\u043e \u0441 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043e\u043c, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0430\u0434\u0440\u0435\u0441 \u043f\u043e DHCP, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0434\u0435\u0444\u043e\u043b\u0442, \u0430 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0441\u0432\u0438\u0447\u0435\u0439 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u043f\u0438\u0448\u0435\u043c \u0441\u0442\u0430\u0442\u0438\u043a\u0443 \u043d\u0430 \u0441\u0435\u0442\u044c 10\/8, \u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043a\u043e\u0435, \u0432 \u043e\u0431\u0449\u0435\u043c, \u0447\u0442\u043e \u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c:<\/p>\n<pre><code class=\"lua\">user@k-w1:~$ ip r  default via 10.0.137.1 dev ens5 proto dhcp src 10.0.137.132 metric 100  10.0.0.0\/8 via 10.1.11.0 dev ens3 proto static  10.0.137.0\/24 dev ens5 proto kernel scope link src 10.0.137.132 metric 100  10.0.137.1 dev ens5 proto dhcp scope link src 10.0.137.132 metric 100  10.1.11.0\/31 dev ens3 proto kernel scope link src 10.1.11.1 <\/code><\/pre>\n<p>ens5 &#8212; \u044d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u043d\u043e\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0432\u043e\u0442\u043a\u043d\u0443\u0442\u044b\u0439 \u0432 \u043e\u0431\u043b\u0430\u0447\u043a\u043e \u0441 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430\u043c\u0438.<\/p>\n<h2>\u041d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e, kubernetes<\/h2>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e \u0442\u043e, \u0432 \u0447\u0451\u043c \u043d\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u044e\u0441\u044c \u0432\u043e\u043e\u0431\u0449\u0435.  <\/p>\n<h4>CNI<\/h4>\n<p>\u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043f\u0440\u043e \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 &#8212; \u0441\u0435\u0442\u0438 \u0441\u0430\u043c\u0438 \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u0430\u0445\u0443\u0439 \u043d\u0438 \u043a\u043e\u043c\u0443 \u043d\u0435 \u0443\u043f\u0451\u0440\u043b\u0438\u0441\u044c. \u0421\u0435\u0442\u0438 \u043d\u0443\u0436\u043d\u044b \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u041f\u043e\u043c\u043d\u0438\u0442\u0435 \u043f\u0440\u043e \u044d\u0442\u043e. \u0418 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0435 \u0432\u0435\u0440\u043d\u043e &#8212; \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0431\u0435\u0437 \u0441\u0435\u0442\u0435\u0439, \u0434\u0430\u0436\u0435 \u0432\u0441\u0435\u043c\u043e\u0433\u0443\u0449\u0438\u0439 \u043a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441. \u0417\u0430 \u0441\u0435\u0442\u0438 \u0432 \u043a\u0443\u0431\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 CNI &#8212; Container Network Interface. \u0417\u0430\u0434\u0430\u0447\u0438 \u0443 CNI \u0431\u0430\u0437\u043e\u0432\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u044b:<\/p>\n<ul>\n<li>\n<p>\u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u043e\u0434\u0438\u043a\u0430\u043c<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0441\u0432\u044f\u0437\u044c \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0434\u0438\u043a\u0430\u043c\u0438<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0441\u0432\u044f\u0437\u044c \u043f\u043e\u0434\u0438\u043a\u043e\u0432 \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u043c\u0438\u0440\u043e\u043c<\/p>\n<\/li>\n<li>\n<p>\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434\u0438\u043a\u0430\u043c<\/p>\n<\/li>\n<\/ul>\n<p>\u0410 \u043f\u043e\u0434 \u043a\u043e\u043f\u043e\u0442\u043e\u043c \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u043c\u0430\u0433\u0438\u044f.<\/p>\n<p>\u0410 \u0447\u0442\u043e \u0435\u0449\u0451 \u0437\u0430 \u201c\u043f\u043e\u0434\u0438\u043a\u0438\u201d? \u041e\u0445, \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0438\u0434\u0442\u0438 \u0432 \u0433\u043b\u0443\u0431\u044c \u0432\u0441\u0435\u0439 \u044d\u0442\u043e\u0439 \u043f\u043e\u0434\u0432\u043e\u0440\u043e\u0442\u043d\u043e\u0448\u0442\u0430\u043d\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435\u0440\u0438\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0442\u043e\u0436\u0435 \u0441\u043a\u0430\u0436\u0443 \u043a\u043e\u0440\u043e\u0442\u043a\u043e &#8212; \u043f\u043e\u0434 \u044d\u0442\u043e\u00a0<strong><em>\u043d\u0430\u0431\u043e\u0440<\/em><\/strong>\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 (\u043d\u043e \u043e\u0431\u044b\u0447\u043d\u043e &#8212; \u043e\u0434\u0438\u043d) \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0431\u0449\u0438\u0439 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441 (\u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0438 IP \u0430\u0434\u0440\u0435\u0441), \u043e\u0431\u0449\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b CPU\\RAM (cgroup) \u0438 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u044d\u0442\u043e \u0432\u0441\u0451 \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u043e \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u0442\u0430\u043a\u0438\u0445 \u0436\u0435 \u043d\u0430\u0431\u043e\u0440\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432. \u0412 \u043e\u0431\u0449\u0435\u043c, \u044d\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043b\u0435\u043f\u044f\u0442 \u0441\u043e\u0432\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u043d\u044b\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u043a\u0443\u0431\u0430\u0445. \u041f\u043e\u0434\u0438\u043a\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0441\u0435\u0442\u044c, \u0437\u0430 \u0441\u0435\u0442\u044c \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 CNI. \u0421\u0438\u044d\u043d\u0430\u0435\u0432\u00a0<a href=\"https:\/\/github.com\/containernetworking\/cni?tab=readme-ov-file#3rd-party-plugins\" rel=\"noopener noreferrer nofollow\">\u0432\u0441\u044f\u043a\u0438\u0445 \u043c\u043d\u043e\u0433\u043e<\/a>. \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435\u00a0<a href=\"https:\/\/github.com\/flannel-io\/flannel\" rel=\"noopener noreferrer nofollow\">Flannel<\/a>, \u043d\u043e \u043e\u043d, \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u043e\u0434 \u043a\u043e\u043f\u043e\u0442\u043e\u043c \u0431\u0435\u0441\u044f\u0447\u0438\u0439 VXLAN, \u0430 \u044f \u0445\u043e\u0447\u0443 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0435\u0442\u044c \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u043c \u0440\u043e\u0443\u0442\u0438\u043d\u0433\u0435. \u0418\u0437 \u0435\u0449\u0451 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043a\u043e\u043f\u043d\u0443\u0442\u044c\u00a0<a href=\"https:\/\/cilium.io\/\" rel=\"noopener noreferrer nofollow\">Cillium<\/a>\u00a0&#8212; \u043d\u043e \u043a\u0430\u0436\u0435\u0442\u0441\u044f? \u043e\u043d \u043d\u0430 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0440\u0443\u0442\u043e\u0439 \u0438 \u043c\u043e\u0434\u043d\u044b\u0439, \u0447\u0442\u043e \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430 \u043d\u0435 \u043f\u043e\u0434\u043e\u0439\u0434\u0451\u0442 &#8212; \u0441\u0435\u0439\u0447\u0430\u0441 \u0431\u044b \u0435\u0449\u0451 \u0442\u0440\u0435\u0439\u0441\u044b eBFP \u0445\u0443\u043a\u043e\u0432 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0438\u0434\u0435\u0442\u044c.\u00a0\u0412 \u043e\u0431\u0449\u0435\u043c, \u044f \u0440\u0435\u0448\u0438\u043b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u043a\u043e\u0435\u043c \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u043c\u0435\u0436\u0434\u0443 \u0444\u043b\u0430\u043d\u043d\u0435\u043b\u0435\u043c \u0438 \u0441\u0438\u043b\u0438\u0443\u043c\u043e\u043c &#8212; \u0442\u043e \u0431\u0438\u0448\u044c Calico, \u043e\u043d\u043e \u0432\u0440\u043e\u0434\u0435 \u043a\u0430\u043a \u0443\u043c\u0435\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u0435\u0437 \u0432\u0441\u044f\u043a\u0438\u0445 \u043c\u0435\u0440\u0437\u043a\u0438\u0445 \u043e\u0432\u0435\u0440\u043b\u0435\u0435\u0432 &#8212; \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0440\u0438\u0442\u044c\u0441\u044f \u0441\u043e \u0441\u0432\u0438\u0447\u0451\u043c \u043f\u043e BGP \u043f\u0440\u044f\u043c\u043e \u0441 \u043d\u043e\u0434\u044b! \u041d\u0443 \u0438 \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e &#8212; \u0442\u043e \u0447\u0442\u043e \u044f \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u044e, \u043a\u0430\u043a \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c, \u0442\u0430\u043a \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u0435\u0441\u0435\u043b\u0435\u0435.<\/p>\n<h4>\u041f\u043e\u0433\u043d\u0430\u043b\u0438, \u043a\u0430\u0440\u043e\u0447\u0435. \u0411\u0430\u0437\u043e\u0432\u0430\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043d\u043e\u0434<\/h4>\n<p>\u041d\u0443\u043b\u0435\u0432\u043e\u0435 \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c &#8212; \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u043c\u0451\u043d \u0432 IP \u0430\u0434\u0440\u0435\u0441\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0443 \u043d\u0430\u0441 \u043d\u0438\u043a\u043e\u0433\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e DNS-\u0430 \u0438 \u043d\u0435\u0442\u0443. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \/etc\/hosts, \u0447\u0442\u043e\u0431\u044b \u043f\u0430\u0446\u0430\u043d\u0447\u0438\u043a\u0438 \u043d\u0430\u0448\u0438 \u043c\u043e\u0433\u043b\u0438 \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043e \u0438\u043c\u0435\u043d\u0430\u043c:<\/p>\n<pre><code class=\"lua\">root@K-Master:\/home\/user# cat \/etc\/hosts 127.0.0.1 localhost 127.0.1.1 ubuntu 10.0.11.1 k-master 10.1.11.1 k-w1 10.2.22.1 k-w2<\/code><\/pre>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u0432\u0441\u044f\u043a\u0438\u0435 \u043c\u0430\u043d\u0443\u0430\u043b\u044b \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u043a\u0443\u0431\u0430 &#8212; \u044d\u0442\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u043f. \u041d\u0443 \u043d\u0435 \u043b\u044e\u0431\u0438\u0442 \u043a\u0443\u0431 \u0441\u0432\u043e\u043f \u0438 \u0432\u0441\u0451 \u0442\u0443\u0442. \u042f \u0442\u0430\u043a \u043f\u043e\u043d\u044f\u043b, \u0441\u0443\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u0443\u0431 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0448\u0430\u0440\u0438\u0442 \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0442\u0430\u043c \u0441\u0432\u043e\u043f &#8212; \u0435\u043c\u0443 \u0432\u0430\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0449\u0438\u0439 \u043e\u0431\u044a\u0451\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u0430 \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u0437\u0430 \u201c\u043f\u0430\u043c\u044f\u0442\u044c\u201d &#8212; \u0431\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0441\u0443\u043f\u0435\u0440\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u0430\u044f DIMM1 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e HDD &#8212; \u043e\u043d \u043d\u0435 \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u0438\u043a\u0438 \u0441\u043c\u0435\u043b\u043e \u043c\u043e\u0433\u0443 \u043d\u0430\u0447\u0430\u0442\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u043c\u0435\u0441\u0442\u043e RAM \u043d\u0430 \u0436\u0451\u0441\u0442\u043a\u0438\u0439 \u0434\u0438\u0441\u043a, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u0447\u043d\u0443\u0442 \u0434\u0435\u0433\u0440\u0430\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0430 \u041a\u0443\u0431\u0443 \u043f\u043e\u0445 \u0431\u0443\u0434\u0435\u0442. \u041d\u0430\u043c \u0442\u0430\u043a\u043e\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0432 \u043e\u0431\u0449\u0435\u043c.<\/p>\n<pre><code class=\"lua\"># \u0415\u0441\u0442\u044c \u0441\u0432\u043e\u043f: user@K-Master:~$ sudo free -h                total        used        free      shared  buff\/cache   available Mem:           3.8Gi       182Mi       2.9Gi       4.0Mi       725Mi       3.4Gi Swap:          3.8Gi          0B       3.8Gi  # \u0425\u0443\u044f\u043a! user@K-Master:~$ sudo swapoff -a  # \u0438 \u043d\u0435\u0442 \u0441\u0432\u043e\u043f\u0430: user@K-Master:~$ free -h                total        used        free      shared  buff\/cache   available Mem:           3.8Gi       188Mi       2.8Gi       4.0Mi       852Mi       3.4Gi Swap:             0B          0B          0B  # \u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u0437\u0430\u043f\u0435\u0440\u0441\u0438\u0441\u0442\u0438\u0442\u044c: sudo sed -i '\/swap\/ s\/^\\(.*\\)$\/#\\1\/g' \/etc\/fstab  #\u0442\u0443\u0442 \u0441\u0430\u043c\u0438 \u0441\u0435\u0431\u0435 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0443 \u043f\u043e\u0434\u0431\u0435\u0440\u0438\u0442\u0435 - \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u0441\u043e \u0441\u0432\u0430\u043f\u043e\u043c \u0437\u0430\u043a\u043a\u043e\u043c\u0435\u043d\u0442\u0438\u0442\u044c \u0432 \/etc\/fstab, \u0442\u043e \u0431\u044b \u0442\u0430\u043a \u0431\u0443\u043b\u043e: user@K-Master:~$ cat \/etc\/fstab | grep swap #\/swap.imgnoneswapsw00 <\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0434\u0435\u043b\u044c\u0446\u0435 \u044d\u0442\u043e \u043d\u0430 \u0432\u0441\u0435\u0445 \u0445\u043e\u0441\u0442\u0430\u0445.<\/p>\n<h4>CRI<\/h4>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u043a\u0430\u043a\u043e\u0439 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0434\u0432\u0438\u0436\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b \u043d\u0430\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043d\u0430 \u0445\u043e\u0441\u0442\u0430\u0445. \u042d\u0442\u0438\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f Container Runtime Interface (CRI), \u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f\u00a0<a href=\"https:\/\/github.com\/containerd\/containerd\" rel=\"noopener noreferrer nofollow\">containerd<\/a><\/p>\n<pre><code class=\"bash\"># \u0421\u0442\u0430\u0432\u0438\u043c user@K-Master:~$ sudo apt update user@K-Master:~$ sudo apt install -y containerd  # \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c user@K-Master:~$ sudo ctr version Client:   Version:  1.7.27   Revision:    Go version: go1.22.2  Server:   Version:  1.7.27   Revision:    UUID: ea2054de-47e9-46bd-8243-b0afb0746cdd   # \u041f\u0435\u0440\u0432\u0438\u0447\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 sudo mkdir -p \/etc\/containerd sudo containerd config default | sudo tee \/etc\/containerd\/config.toml # \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0437\u0430\u0447\u0435\u043c-\u0442\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0438\u0433\u0440\u0443\u043f\u043f\u0430\u043c\u0438, \u043d\u043e \u043d\u0430\u043c \u043e\u043d\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u043f\u0443\u0441\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0434 \u044d\u0442\u0438\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f sudo sed -i 's\/SystemdCgroup = false\/SystemdCgroup = true\/g' \/etc\/containerd\/config.toml sudo systemctl restart containerd  # \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e containerd \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 sudo systemctl status containerd  # \u0414\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \"active (running)\" <\/code><\/pre>\n<p>\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0434\u043e \u043f\u043e\u0437\u0434\u043e\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u043c\u0438\u0440\u043e\u043c!<\/p>\n<pre><code class=\"bash\"># \u041a\u0430\u0447\u0430\u0435\u043c hello world user@k-w1:~$ sudo ctr images pull docker.io\/library\/hello-world:latest  docker.io\/library\/hello-world:latest:                                             resolved       |++++++++++++++++++++++++++++++++++++++|  index-sha256:ec153840d1e635ac434fab5e377081f17e0e15afab27beb3f726c3265039cfff:    done           |++++++++++++++++++++++++++++++++++++++|  manifest-sha256:03b62250a3cb1abd125271d393fc08bf0cc713391eda6b57c02d1ef85efcc25c: done           |++++++++++++++++++++++++++++++++++++++|  layer-sha256:e6590344b1a5dc518829d6ea1524fc12f8bcd14ee9a02aa6ad8360cce3a9a9e9:    done           |++++++++++++++++++++++++++++++++++++++|  config-sha256:74cc54e27dc41bb10dc4b2226072d469509f2f22f1a3ce74f4a59661a1d44602:   done           |++++++++++++++++++++++++++++++++++++++|  elapsed: 3.2 s                                                                    total:  13.1 K (4.1 KiB\/s)                                        unpacking linux\/amd64 sha256:ec153840d1e635ac434fab5e377081f17e0e15afab27beb3f726c3265039cfff... done: 50.983582ms user@k-w1:~$   # \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c hello world user@k-w1:~$ sudo ctr run --rm docker.io\/library\/hello-world:latest hello-world   Hello from Docker! BLA BLA BLA <\/code><\/pre>\n<p>\u041d\u0443 \u0438 \u043d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u041d\u041e\u0420\u041c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u043c\u0441\u044f \u0432 shell, \u043e\u0433\u043b\u044f\u0434\u0438\u043c\u0441\u044f \u0447\u0451 \u0442\u0430\u043c:<\/p>\n<pre><code class=\"bash\">user@K-Master:~$ sudo ctr images pull docker.io\/library\/alpine:latest docker.io\/library\/alpine:latest:                                                  resolved       |++++++++++++++++++++++++++++++++++++++|  index-sha256:4bcff63911fcb4448bd4fdacec207030997caf25e9bea4045fa6c8c44de311d1:    done           |++++++++++++++++++++++++++++++++++++++|  manifest-sha256:eafc1edb577d2e9b458664a15f23ea1c370214193226069eb22921169fc7e43f: done           |++++++++++++++++++++++++++++++++++++++|  layer-sha256:9824c27679d3b27c5e1cb00a73adb6f4f8d556994111c12db3c5d61a0c843df8:    done           |++++++++++++++++++++++++++++++++++++++|  config-sha256:9234e8fb04c47cfe0f49931e4ac7eb76fa904e33b7f8576aec0501c085f02516:   done           |++++++++++++++++++++++++++++++++++++++|  elapsed: 1.3 s                                                                    total:   0.0 B (0.0 B\/s)                                          unpacking linux\/amd64 sha256:4bcff63911fcb4448bd4fdacec207030997caf25e9bea4045fa6c8c44de311d1... done: 13.453467ms  # \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c  user@k-w1:~$ sudo ctr run -t docker.io\/library\/alpine:latest alpine_test sh  ########  \u0412\u043e\u0442 \u043c\u044b \u0442\u0443\u0442 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0442\u0435\u043f\u0435\u0440\u044c  \/ ~ uname -a Linux k-w1 5.15.0-69-generic #76-Ubuntu SMP Fri Mar 17 17:19:29 UTC 2023 x86_64 Linux  \/ ~ cat \/etc\/os-release  NAME=\"Alpine Linux\" ID=alpine VERSION_ID=3.22.1 PRETTY_NAME=\"Alpine Linux v3.22\" HOME_URL=\"https:\/\/alpinelinux.org\/\" BUG_REPORT_URL=\"https:\/\/gitlab.alpinelinux.org\/alpine\/aports\/-\/issues\" \/ ~   # \u0427\u0451 \u0442\u0430\u043c \u043f\u043e \u0441\u0435\u0442\u0438?  \/~ ` ip a 1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN qlen 1000     link\/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00     inet 127.0.0.1\/8 scope host lo        valid_lft forever preferred_lft forever     inet6 ::1\/128 scope host         valid_lft forever preferred_lft forever <\/code><\/pre>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c \u0438 \u0446\u0435\u043b\u043e\u043c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 &#8212; \u043d\u043e \u043a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0442\u0430\u043c \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043e\u0431\u0432\u044f\u0437\u043a\u0438 \u043d\u0435\u0442, \u043d\u0435 \u0431\u0443\u0434\u0443 \u0432\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043a\u0430\u043a \u0435\u0451 \u0441\u0434\u0435\u043b\u0430\u0442\u044c (\u044f \u0445\u0437 \u0435\u0441\u043b\u0438 \u0447\u0435\u0441\u0442\u043d\u043e) &#8212; \u0431\u0443\u0434\u0443 \u043d\u0430\u0434\u0435\u044f\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0451 \u044d\u0442\u043e \u043c\u043d\u0435 Calico \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0440\u0443\u043b\u0438\u0432\u0430\u0442\u044c.<\/p>\n<h3>kubeadm, kubelet, kubectl<\/h3>\n<p>\u0422\u0443\u0442 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e \ud83d\ude42 \u041d\u0430 \u0432\u0441\u0435\u0445 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u043c\u0430\u0441\u0442\u0435\u0440\u0430\u0445 \u0438 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u0445 \u0434\u0432\u0438\u0436\u0443\u0445\u0438 \u043d\u0430\u0434\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0435:<\/p>\n<pre><code class=\"bash\"># 1. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Kubernetes sudo mkdir -p \/etc\/apt\/keyrings curl -fsSL https:\/\/pkgs.k8s.io\/core:\/stable:\/v1.28\/deb\/Release.key | sudo gpg --dearmor -o \/etc\/apt\/keyrings\/kubernetes-apt-keyring.gpg echo \"deb [signed-by=\/etc\/apt\/keyrings\/kubernetes-apt-keyring.gpg] https:\/\/pkgs.k8s.io\/core:\/stable:\/v1.28\/deb\/ \/\" | sudo tee \/etc\/apt\/sources.list.d\/kubernetes.list  # 2. \u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043f\u0430\u043a\u0435\u0442\u044b \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b sudo apt update sudo apt install -y kubeadm kubelet kubectl  # 3. \u0424\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u0438 sudo apt-mark hold kubeadm kubelet kubectl <\/code><\/pre>\n<p>\u0427\u0435\u043a\u0430\u0435\u043c \u0447\u0442\u043e \u0432\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e, \u0447\u0442\u043e \u0432\u0441\u0435 \u043d\u0430\u0448\u0438 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435:<\/p>\n<pre><code class=\"bash\">user@k-w1:~$ kubeadm version kubeadm version: &amp;version.Info{Major:\"1\", Minor:\"28\", GitVersion:\"v1.28.15\", GitCommit:\"841856557ef0f6a399096c42635d114d6f2cf7f4\", GitTreeState:\"clean\", BuildDate:\"2024-10-22T20:33:16Z\", GoVersion:\"go1.22.8\", Compiler:\"gc\", Platform:\"linux\/amd64\"} user@k-w1:~$ kubelet --version Kubernetes v1.28.15 user@k-w1:~$ kubectl version --client Client Version: v1.28.15 Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3 <\/code><\/pre>\n<h4>\u0414\u0435\u043b\u0430\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440<\/h4>\n<p>\u0410\u043a\u043a\u0443\u043c\u0443\u043b\u0438\u0440\u0443\u044f \u043c\u0430\u043d\u0443\u0430\u043b\u044b \u0441 \u0441\u0430\u0439\u0442\u0430\u00a0<a href=\"https:\/\/kubernetes.io\/\" rel=\"noopener noreferrer nofollow\">https:\/\/kubernetes.io\/<\/a>\u00a0(\u0447\u0442\u043e-\u0442\u043e \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c) \u0438 \u0441\u043e\u0432\u0435\u0442\u044b LLM-\u044b, \u044f \u0440\u0435\u0448\u0438\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a:<\/p>\n<p><code>sudo kubeadm init --pod-network-cidr=10.66.0.0\/16 --control-endpoint=10.0.11.1<\/code><\/p>\n<p>\u041d\u0443 \u0440\u0435\u0448\u0438\u043b \u0438 \u0441\u0434\u0435\u043b\u0430\u043b:<\/p>\n<pre><code class=\"bash\">user@K-Master:~$ sudo kubeadm init --pod-network-cidr=10.66.0.0\/16 --control-plane-endpoint=10.0.11.1 I0729 04:40:12.098048  170736 version.go:256] remote version is much newer: v1.33.3; falling back to: stable-1.28 [init] Using Kubernetes version: v1.28.15 [preflight] Running pre-flight checks error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: \/proc\/sys\/net\/bridge\/bridge-nf-call-iptables does not exist [ERROR FileContent--proc-sys-net-ipv4-ip_forward]: \/proc\/sys\/net\/ipv4\/ip_forward contents are not set to 1 [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...` To see the stack trace of this error execute with --v=5 or higher <\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0451\u0442\u043d\u0430\u044f \u043f\u043e\u0434\u0433\u0442\u043e\u0432\u043a\u0430 \u043d\u0435 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u0430 &#8212; \u043d\u0430\u0434\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0430\u0440\u0443 \u043e\u043f\u0446\u0438\u0439 \u044f\u0434\u0440\u0430 &#8212; \u0440\u0443\u0442\u0438\u043d\u0433 (ip_forward) \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u043d\u0433 \u043d\u0435\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043f\u0440\u043e\u043b\u0435\u0442\u0430\u044e\u0449\u0438\u0445 \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u0438\u0434\u0436. \u0411\u0420\u0418\u0418\u0418\u0418\u0414\u0416?! \u041a\u0442\u043e \u0441\u043a\u0430\u0437\u0430\u043b \u201c\u0431\u0440\u0438\u0434\u0436\u201d? \u0412 \u043c\u043e\u0435\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u0435 \u043c\u0438\u0440\u0430 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0431\u0440\u0438\u0434\u0436\u0435\u0439 \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e (\u044e\u0437\u0430\u0435\u043c \u0447\u0438\u0441\u0442\u044b\u0439 \u0440\u043e\u0443\u0442\u0438\u043d\u0433 + veth \u043f\u0430\u0440\u044b \u0434\u043e \u043f\u043e\u0434\u0438\u043a\u043e\u0432). \u041d\u0443 \u0447\u0442\u043e\u0436, \u043a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u0436\u0435 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u0442\u043e, \u0447\u0435\u0433\u043e \u0437\u043d\u0430\u044e \u044f &#8212; \u043e\u043d \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0431\u0443\u0434\u0443 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0440\u0438\u0434\u0436\u044b \u0438\u043b\u0438 \u043d\u0435\u0442, \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0435\u0433\u043e \u0441\u043c\u0443\u0449\u0430\u0442\u044c:<\/p>\n<p>\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c <strong>bridge-nf-call-iptables:<\/strong><\/p>\n<pre><code class=\"bash\"># \u043c\u043e\u0434\u0443\u043b\u044c \u044f\u0434\u0440\u0430 user@K-Master:~$ sudo modprobe br_netfilter # \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 user@K-Master:~$ lsmod | grep br_netfilter br_netfilter           32768  0 bridge                307200  1 br_netfilter # \u043f\u0435\u0440\u0441\u0438\u0441\u0442\u0438\u043c user@K-Master:~$ echo \"br_netfilter\" | sudo tee \/etc\/modules-load.d\/br_netfilter.conf br_netfilter <\/code><\/pre>\n<p>\u041d\u0443 \u0430 \u043a\u0430\u043a \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e ip forwarding \u0437\u043d\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0435\u0442\u0435\u0432\u0438\u043a. \u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0435\u0442\u0435\u0432\u0438\u043a \u0447\u0438\u0442\u0430\u0435\u0442 \u044d\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441,\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"bash\">user@K-Master:~$ sudo sysctl -w net.ipv4.ip_forward=1 net.ipv4.ip_forward = 1 <\/code><\/pre>\n<p>\u041f\u0440\u043e\u0431\u0443\u0435\u043c \u0435\u0449\u0451 \u0440\u0430\u0437\u043e\u043a, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0430\u0441 \u0436\u0434\u0443\u0442 \u0442\u0435\u043f\u0435\u0440\u044c! \u0427\u0442\u043e\u0436, \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u044f \u043d\u0430\u043a\u0430\u0440\u043a\u0430\u043b \u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u043d\u0435\u0442. kubeadm \u0441\u0434\u0435\u043b\u0430\u043b \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u044b:<\/p>\n<pre><code class=\"bash\">I0730 03:53:56.693629  171936 version.go:256] remote version is much newer: v1.33.3; falling back to: stable-1.28 [init] Using Kubernetes version: v1.28.15 [preflight] Running pre-flight checks [preflight] Pulling images required for setting up a Kubernetes cluster [preflight] This might take a minute or two, depending on the speed of your internet connection [preflight] You can also perform this action in beforehand using 'kubeadm config images pull' W0730 03:54:19.733292  171936 checks.go:835] detected that the sandbox image \"registry.k8s.io\/pause:3.8\" of the container runtime is inconsistent with that used by kubeadm. It is recommended that using \"registry.k8s.io\/pause:3.9\" as the CRI sandbox image. [certs] Using certificateDir folder \"\/etc\/kubernetes\/pki\" [certs] Generating \"ca\" certificate and key [certs] Generating \"apiserver\" certificate and key [certs] apiserver serving cert is signed for DNS names [k-master kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 10.0.137.12 10.0.11.1] [certs] Generating \"apiserver-kubelet-client\" certificate and key [certs] Generating \"front-proxy-ca\" certificate and key [certs] Generating \"front-proxy-client\" certificate and key [certs] Generating \"etcd\/ca\" certificate and key [certs] Generating \"etcd\/server\" certificate and key [certs] etcd\/server serving cert is signed for DNS names [k-master localhost] and IPs [10.0.137.12 127.0.0.1 ::1] [certs] Generating \"etcd\/peer\" certificate and key [certs] etcd\/peer serving cert is signed for DNS names [k-master localhost] and IPs [10.0.137.12 127.0.0.1 ::1] [certs] Generating \"etcd\/healthcheck-client\" certificate and key [certs] Generating \"apiserver-etcd-client\" certificate and key [certs] Generating \"sa\" key and public key [kubeconfig] Using kubeconfig folder \"\/etc\/kubernetes\" [kubeconfig] Writing \"admin.conf\" kubeconfig file [kubeconfig] Writing \"kubelet.conf\" kubeconfig file [kubeconfig] Writing \"controller-manager.conf\" kubeconfig file [kubeconfig] Writing \"scheduler.conf\" kubeconfig file [etcd] Creating static Pod manifest for local etcd in \"\/etc\/kubernetes\/manifests\" [control-plane] Using manifest folder \"\/etc\/kubernetes\/manifests\" [control-plane] Creating static Pod manifest for \"kube-apiserver\" [control-plane] Creating static Pod manifest for \"kube-controller-manager\" [control-plane] Creating static Pod manifest for \"kube-scheduler\" [kubelet-start] Writing kubelet environment file with flags to file \"\/var\/lib\/kubelet\/kubeadm-flags.env\" [kubelet-start] Writing kubelet configuration to file \"\/var\/lib\/kubelet\/config.yaml\" [kubelet-start] Starting the kubelet [wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory \"\/etc\/kubernetes\/manifests\". This can take up to 4m0s [apiclient] All control plane components are healthy after 11.505483 seconds [upload-config] Storing the configuration used in ConfigMap \"kubeadm-config\" in the \"kube-system\" Namespace [kubelet] Creating a ConfigMap \"kubelet-config\" in namespace kube-system with the configuration for the kubelets in the cluster [upload-certs] Skipping phase. Please see --upload-certs [mark-control-plane] Marking the node k-master as control-plane by adding the labels: [node-role.kubernetes.io\/control-plane node.kubernetes.io\/exclude-from-external-load-balancers] [mark-control-plane] Marking the node k-master as control-plane by adding the taints [node-role.kubernetes.io\/control-plane:NoSchedule] [bootstrap-token] Using token: 4glzzt.3b96mmozrsum72he [bootstrap-token] Configuring bootstrap tokens, cluster-info ConfigMap, RBAC Roles [bootstrap-token] Configured RBAC rules to allow Node Bootstrap tokens to get nodes [bootstrap-token] Configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials [bootstrap-token] Configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token [bootstrap-token] Configured RBAC rules to allow certificate rotation for all node client certificates in the cluster [bootstrap-token] Creating the \"cluster-info\" ConfigMap in the \"kube-public\" namespace [kubelet-finalize] Updating \"\/etc\/kubernetes\/kubelet.conf\" to point to a rotatable kubelet client certificate and key [addons] Applied essential addon: CoreDNS [addons] Applied essential addon: kube-proxy  Your Kubernetes control-plane has initialized successfully!<\/code><\/pre>\n<p><a class=\"anchor\" name=\"ClusterInit\" id=\"ClusterInit\"><\/a><\/p>\n<p>successfully! \u041e\u043d \u043e\u0447\u0435\u043d\u044c \u043c\u0438\u043b \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0436\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435 &#8212; \u043a\u0430\u043a \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438 \u043a\u0430\u043a \u043d\u0430\u043c \u0437\u0430\u0434\u0436\u043e\u0439\u043d\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043d\u043e\u0434\u044b<\/p>\n<pre><code class=\"bash\">To start using your cluster, you need to run the following as a regular user:    mkdir -p $HOME\/.kube   sudo cp -i \/etc\/kubernetes\/admin.conf $HOME\/.kube\/config   sudo chown $(id -u):$(id -g) $HOME\/.kube\/config  Alternatively, if you are the root user, you can run:    export KUBECONFIG=\/etc\/kubernetes\/admin.conf  You should now deploy a pod network to the cluster. Run \"kubectl apply -f [podnetwork].yaml\" with one of the options listed at:   https:\/\/kubernetes.io\/docs\/concepts\/cluster-administration\/addons\/  You can now join any number of control-plane nodes by copying certificate authorities and service account keys on each node and then running the following as root:    kubeadm join 10.0.11.1:6443 --token 4glzzt.3b96mmozrsum72he \\ --discovery-token-ca-cert-hash sha256:557100ad9c340873e4d2d4e329fd303ba274548f1188030ad9c6569a2f745e42 \\ --control-plane   Then you can join any number of worker nodes by running the following on each as root:  kubeadm join 10.0.11.1:6443 --token 4glzzt.3b96mmozrsum72he \\ --discovery-token-ca-cert-hash sha256:557100ad9c340873e4d2d4e329fd303ba274548f1188030ad9c6569a2f745e42 <\/code><\/pre>\n<p>\u0421\u0440\u0430\u0437\u0443 \u0447\u0435\u0448\u0443\u0442\u0441\u044f \u0440\u0443\u043a\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c\u00a0<code>kubectl get pods<\/code>\u00a0\ud83d\ude42<\/p>\n<pre><code class=\"bash\">user@K-Master:~$ kubectl get pods E0730 04:20:56.695021  173012 memcache.go:265] couldn't get current server API group list: Get \"http:\/\/localhost:8080\/api?timeout=32s\": dial tcp 127.0.0.1:8080: connect: connection refused E0730 04:20:56.695309  173012 memcache.go:265] couldn't get current server API group list: Get \"http:\/\/localhost:8080\/api?timeout=32s\": dial tcp 127.0.0.1:8080: connect: connection refused E0730 04:20:56.696762  173012 memcache.go:265] couldn't get current server API group list: Get \"http:\/\/localhost:8080\/api?timeout=32s\": dial tcp 127.0.0.1:8080: connect: connection refused E0730 04:20:56.697186  173012 memcache.go:265] couldn't get current server API group list: Get \"http:\/\/localhost:8080\/api?timeout=32s\": dial tcp 127.0.0.1:8080: connect: connection refused E0730 04:20:56.698598  173012 memcache.go:265] couldn't get current server API group list: Get \"http:\/\/localhost:8080\/api?timeout=32s\": dial tcp 127.0.0.1:8080: connect: connection refused The connection to the server localhost:8080 was refused - did you specify the right host or port? <\/code><\/pre>\n<p>\u041a\u0443\u0434\u0430-\u0442\u043e \u044f\u0432\u043d\u043e \u043d\u0435 \u0442\u0443\u0434\u0430 \u043b\u043e\u043c\u0438\u0442\u0441\u044f \ud83d\ude41 \u0412\u0441\u0451 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u044f \u043d\u0435 \u0447\u0438\u0442\u0430\u044e \u0447\u0442\u043e \u043c\u043d\u0435 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043f\u0438\u0448\u0435\u0442, \u0445\u043e\u0442\u044f \u044f\u0432\u043d\u043e \u0431\u044b\u043b\u043e:<\/p>\n<pre><code class=\"bash\">To start using your cluster, you need to run the following as a regular user:    mkdir -p $HOME\/.kube   sudo cp -i \/etc\/kubernetes\/admin.conf $HOME\/.kube\/config   sudo chown $(id -u):$(id -g) $HOME\/.kube\/config<\/code><\/pre>\n<p>\u0423\u0436\u0435 \u043b\u0443\u0447\u0448\u0435:<\/p>\n<pre><code class=\"bash\">user@K-Master:~$ kubectl get pods No resources found in default namespace.<\/code><\/pre>\n<p>\u041d\u0443, \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u043e\u043d \u0447\u0442\u043e-\u0442\u043e \u043e\u0442\u0432\u0435\u0442\u0438\u043b. \u0427\u0442\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e? \u041d\u0443 \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0438\u043d\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 (\/etc\/kubernetes\/admin.conf) \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 $HOME\/.kube\/. \u0423\u0442\u0438\u043b\u0438\u0442\u0430\u00a0<code>kubectl<\/code>\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u043a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u043a\u043e\u0435 API. \u0410\u0434\u0440\u0435\u0441 \u0438 \u043a\u0430\u043a\u0438\u0435-\u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u043a\u0440\u0435\u0434\u044b \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0430\u043c\u043e\u0433\u043e API \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043a\u0443\u0434\u0430-\u0442\u043e \u0432\u0437\u044f\u0442\u044c.\u00a0<code>kubectl<\/code>\u00a0\u043f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443 \u0438\u0449\u0435\u0442 \u0435\u0433\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u0432 \u0444\u0430\u0439\u043b\u0435\u00a0<code>~\/.kube\/config<\/code><br \/>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u043d \u0442\u0430\u043a (\u043a\u043b\u044e\u0447\u0438\u043a\u0438 \u044f \u043f\u043e\u0434\u043e\u0442\u0440\u0443 \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0439 \u0440\u0430\u0437 \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435):<\/p>\n<pre><code class=\"yaml\">apiVersion: v1 clusters: - cluster:     certificate-authority-data:      LS0tLS1CRUdJTBLA-BLA-BLA     server: https:\/\/10.0.11.1:6443   name: kubernetes contexts: - context:     cluster: kubernetes     user: kubernetes-admin   name: kubernetes-admin@kubernetes current-context: kubernetes-admin@kubernetes kind: Config preferences: {} users: - name: kubernetes-admin   user:     client-certificate-data:      BLA BLA     client-key-data:      LS0tLBLA BL BLA <\/code><\/pre>\n<p>\u041d\u0443 \u043b\u0438\u0431\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0446\u0435\u043f\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b\u00a0<code>kubectl config view<\/code>&#8212; \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0422\u0443\u0442 \u0432\u0430\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c &#8212; \u0444\u0430\u0439\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439\u00a0<strong>kubectl<\/strong>, \u0430\u00a0<strong>kubectl<\/strong>\u00a0\u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u043a\u0438\u0439 \u201c\u043a\u043b\u0438\u0435\u043d\u0442\u201d \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b \u043f\u043e API \u043a\u0443\u0434\u0430-\u0442\u043e \u0442\u0430\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0435\u0441\u044c \u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0441 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c. \u042f \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e \u0435\u0433\u043e \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435, \u0433\u0434\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u043b, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043d\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c, \u0430 \u0442\u0430\u043a &#8212; \u0444\u0430\u0439\u043b \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0443\u0434\u0430 \u0443\u0433\u043e\u0434\u043d\u043e \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0430\u00a0<strong>kubectl<\/strong>\u00a0\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043e\u0442\u0442\u0443\u0434\u0430 &#8212; \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0447\u0442\u043e\u0431\u044b \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u0431\u044b\u043b. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0437\u0430\u0439\u0434\u0451\u043c \u0441 \u043b\u044e\u0431\u043e\u0433\u043e \u0432\u043e\u0440\u043a\u0435\u0440\u0430 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440 \u0438 \u0441\u043f\u0438\u0437\u0434\u0438\u043c \u0444\u0430\u0439\u043b \u0441\u0435\u0431\u0435!<\/p>\n<pre><code class=\"lua\"># \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442: user@k-w1:~$ kubectl get pods E0801 05:56:06.934129  186485 memcache.go:265] couldn't get current server API group list: Get \"http:\/\/localhost:8080\/api?timeout=32s\": dial tcp 127.0.0.1:8080: connect: connection refused E0801 05:56:06.935916  186485 memcache.go:265] couldn't get current server API group list: Get \"http:\/\/localhost:8080\/api?timeout=32s\": dial tcp 127.0.0.1:8080: connect: connection refused E0801 05:56:06.936529  186485 memcache.go:265] couldn't get current server API group list: Get \"http:\/\/localhost:8080\/api?timeout=32s\": dial tcp 127.0.0.1:8080: connect: connection refused E0801 05:56:06.938000  186485 memcache.go:265] couldn't get current server API group list: Get \"http:\/\/localhost:8080\/api?timeout=32s\": dial tcp 127.0.0.1:8080: connect: connection refused E0801 05:56:06.938450  186485 memcache.go:265] couldn't get current server API group list: Get \"http:\/\/localhost:8080\/api?timeout=32s\": dial tcp 127.0.0.1:8080: connect: connection refused The connection to the server localhost:8080 was refused - did you specify the right host or port? '  # \u043f\u0438\u0437\u0434\u0438\u043c \u0444\u0430\u0439\u043b!  user@k-w1:~$ sftp user@K-Master user@k-master's password:  Connected to K-Master. sftp&gt; cd .kube\/ sftp&gt; ls -la drwxrwxr-x    3 user     user         4096 Jul 30 04:23 . drwxr-x---    6 user     user         4096 Aug  1 05:25 .. drwxr-x---    4 user     user         4096 Jul 30 04:23 cache -rw-------    1 user     user         5641 Jul 30 04:22 config sftp&gt; get config Fetching \/home\/user\/.kube\/config to config config                                                                                                   100% 5641    18.2KB\/s   00:00     sftp&gt;  sftp&gt;  sftp&gt; exit user@k-w1:~$ mkdir .kube user@k-w1:~$ mv config .kube\/config  # \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0435\u0449\u0451 \u0440\u0430\u0437:  user@k-w1:~$ kubectl get pods No resources found in default namespace. <\/code><\/pre>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438\u00a0<strong>kubectl<\/strong>, \u043e\u043d \u043e\u0431\u0440\u0430\u0442\u0438\u043b\u0441\u044f \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 kubeconfig, \u0432\u0437\u044f\u043b \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0441\u0442\u0440\u043e\u0447\u043a\u0443\u00a0<a href=\"https:\/\/10.0.11.1:6443\" rel=\"noopener noreferrer nofollow\"><code>https:\/\/10.0.11.1:6443<\/code><\/a>\u00a0\u0438 \u043f\u043e\u0448\u0451\u043b \u0442\u0443\u0434\u0430 \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f. \u041d\u0443 \u0441\u0442\u043e\u0438\u0442 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c \u0435\u0449\u0451 &#8212; \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0430, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u043e\u0434\u0438\u043d \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 \u043c\u043e\u0435\u0433\u043e \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0430, \u0432 \u043c\u043e\u0451\u043c \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u043a\u0443\u0431\u0430 65 \u0441\u0442\u0440\u043e\u0447\u0435\u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u0441\u043b\u043e\u0432\u043e \u201cserver\u201d:<\/p>\n<pre><code class=\"powershell\">kubectl config view | Select-String \"server\" | Measure-Object -Line  Lines Words Characters Property ----- ----- ---------- --------    65  <\/code><\/pre>\n<p>\u0421\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u0432, \u0442\u043e \u0435\u0441\u0442\u044c \u201c\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445\u201d \u0434\u043b\u044f \u0432\u0430\u0441 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u043d\u0430 \u0431\u0430\u0437\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439\u00a0<code>kubectl config get-contexts<\/code>. \u041f\u043e\u043d\u044f\u0442\u044c \u0433\u0434\u0435 \u0432\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0<code>kubectl config current-context<\/code>, \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0<code>kubectl config use-context &lt;\u0412\u0410\u0428_\u0416\u0415\u041b\u0410\u041d\u041d\u042b\u0419_\u041a\u041e\u041d\u0422\u0415\u041a\u0421\u0422&gt;<\/code>, \u043d\u0443 \u043a\u0430\u043a\u0438\u0435-\u0442\u0442\u043e \u0443\u043c\u043d\u0438\u043a\u0438 \u0435\u0449\u0451 kubectx \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438, \u0447\u0442\u043e \u0431\u044b \u043f\u043e\u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u044d\u0442\u043e \u0432\u0441\u0451 &#8212;\u00a0<a href=\"https:\/\/github.com\/ahmetb\/kubectx\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/ahmetb\/kubectx<\/a><\/p>\n<p>\u041a\u0430\u0440\u043e\u0447\u0435, \u0444\u0438\u0433 \u0441 \u043d\u0438\u043c\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\u043c\u0438-\u0442\u043e! \u0423 \u043d\u0430\u0441 \u0442\u0443\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043f\u043e\u0441\u0435\u0440\u044c\u0451\u0437\u043d\u0435\u0435 \u0436\u0435 &#8212; \u043f\u043e\u0434\u043e\u0432 \u0442\u043e\u043d\u0435\u0442!<\/p>\n<pre><code class=\"bash\">user@k-w1:~$ kubectl get pods No resources found in default namespace.<\/code><\/pre>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u044b \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438 \u043f\u043e\u043a\u0430, \u043d\u043e \u043d\u0435\u0443\u0436\u0435\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043a\u0430\u043a \u043a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u0430\u043c \u0441\u0435\u0431\u0435 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043b?<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"lua\">user@k-w1:~$ kubectl get pods -A  NAMESPACE     NAME                               READY   STATUS    RESTARTS   AGE kube-system   coredns-5dd5756b68-hjxxk           0\/1     Pending   0          2d2h kube-system   coredns-5dd5756b68-mx2x2           0\/1     Pending   0          2d2h kube-system   etcd-k-master                      1\/1     Running   0          2d2h kube-system   kube-apiserver-k-master            1\/1     Running   0          2d2h kube-system   kube-controller-manager-k-master   1\/1     Running   0          2d2h kube-system   kube-proxy-dsf2f                   1\/1     Running   0          2d2h kube-system   kube-scheduler-k-master            1\/1     Running   0          2d2h<\/code><\/pre>\n<p>\u0410\u0433\u0430, \u0447\u0451\u0442\u043e \u0435\u0441\u0442\u044c. \u041a\u043b\u044e\u0447\u0438\u043a\u00a0<code>-A<\/code>\u00a0\u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u0431\u044d \u043d\u0430\u043c\u0435\u043a\u0430\u0435\u0442 \u043d\u0430\u0448\u0435\u043c\u0443\u00a0<strong>kubectl<\/strong>-\u0443 &#8212; \u0442\u044b \u0434\u0430\u0432\u0430\u0439 \u043f\u043e\u043a\u0430\u0436\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u0435, \u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u043e \u0432\u0441\u0435\u0445, \u0447\u0451 \u0442\u0430\u043c \u0443 \u0442\u0435\u0431\u044f \u0435\u0441\u0442\u044c. \u041d\u0443 \u0438 \u0432\u043e\u0442 \u0432 \u0432\u044b\u0432\u043e\u0434\u0435 \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043a\u0430 NAMESPACE, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0431\u044b\u043b\u043e. \u041f\u0440\u043e \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u044b \u0432 \u043a\u0443\u0431\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c\u00a0<a href=\"https:\/\/kubernetes.io\/docs\/concepts\/overview\/working-with-objects\/namespaces\/\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442\u044c<\/a>. \u0421\u0435\u0439\u0447\u0430\u0441 \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0434\u0432\u0435 \u0432\u0435\u0449\u0438:<\/p>\n<ul>\n<li>\n<p>\u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u044b \u044d\u0442\u043e \u043d\u0435\u043a\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 (\u044d\u0434\u0430\u043a\u0438\u0435 \u0442\u0435\u043d\u0430\u043d\u0442\u044b) &#8212; \u0441\u0434\u0435\u043b\u0430\u043b \u043a\u043b\u0430\u0441\u0442\u0435\u0440 &#8212; \u0412\u0430\u0441\u0435 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441 \u0441\u0434\u0435\u043b\u0430\u043b, \u0433\u0434\u0435 \u043e\u043d \u0431\u0430\u043b\u0443\u0435\u0442\u0441\u044f, \u0438 \u041f\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u043b, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u041f\u0435\u0442\u044f \u043d\u0435 \u0431\u0430\u043b\u0443\u0435\u0442\u0441\u044f, \u0430 \u0434\u0435\u043b\u0430\u043c\u0438 \u0437\u0430\u043d\u044f\u0442.<\/p>\n<\/li>\n<li>\n<p>\u044d\u0442\u043e \u043d\u0435 \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0447\u0442\u043e \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u044b \u0432 Linux &#8212; \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f \u0441\u0438\u044f \u0432 \u043a\u0443\u0431\u0435 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u0430\u044f \u043d\u0435\u0436\u0435\u043b\u0438 \u0432 Linux<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0435\u0441\u0442\u044c \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u044b \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"lua\">user@k-w1:~$ kubectl get ns NAME              STATUS   AGE default           Active   2d5h kube-node-lease   Active   2d5h kube-public       Active   2d5h kube-system       Active   2d5h<\/code><\/pre>\n<h4>\u0414\u0436\u043e\u0439\u043d\u0438\u043c \u043d\u043e\u0434\u044b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440<\/h4>\n<p>\u0422\u0430\u043a, \u043c\u043d\u0435 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u043e\u0440\u043a\u0435\u0440\u043e\u0432 \u0432 \u043d\u0430\u0448 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u044f \u0432\u0438\u0436\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u0441\u0442\u0435\u0440\u0430:<\/p>\n<pre><code class=\"lua\">user@k-w1:~$  kubectl get nodes NAME       STATUS     ROLES           AGE    VERSION k-master   NotReady   control-plane   2d5h   v1.28.15<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0442\u043e \u043d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u043c\u0430\u0441\u0442\u0435\u0440 \u043d\u0430\u043c \u043f\u0440\u044f\u043c\u043e \u0441\u043a\u0430\u0437\u0430\u043b \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u043d\u043e\u0434\u0443 \u043a \u043c\u0430\u0441\u0442\u0435\u0440\u0443. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c:<\/p>\n<pre><code class=\"bash\">user@k-w1:~$ sudo kubeadm join 10.0.11.1:6443 \\   --token 4glzzt.3b96mmozrsum72he \\   --discovery-token-ca-cert-hash sha256:557100ad9c340873e4d2d4e329fd303ba274548f1188030ad9c6569a2f745e42 [sudo] password for user:  [preflight] Running pre-flight checks error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: \/proc\/sys\/net\/bridge\/bridge-nf-call-iptables does not exist [ERROR FileContent--proc-sys-net-ipv4-ip_forward]: \/proc\/sys\/net\/ipv4\/ip_forward contents are not set to 1 [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...` To see the stack trace of this error execute with --v=5 or higher<\/code><\/pre>\n<p>\u041e\u043f\u044f\u0442\u044c \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c \u043f\u044f\u0442\u044c! \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u0441\u044f:<\/p>\n<pre><code class=\"bash\">user@k-w1:~$ sudo modprobe br_netfilter user@k-w1:~$ echo \"br_netfilter\" | sudo tee \/etc\/modules-load.d\/br_netfilter.conf br_netfilter user@k-w1:~$ sudo sysctl -w net.ipv4.ip_forward=1 net.ipv4.ip_forward = 1<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0431\u0443\u0435\u043c \u0435\u0449\u0451 \u0440\u0430\u0437. \u0412\u0432\u0451\u043b \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043d\u0430 Join, \u0441\u0438\u0436\u0443, \u0436\u0434\u0443\u2026\u043c\u0438\u043d\u0443\u0442\u0443, \u0434\u0432\u0435, \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u0420\u0435\u0448\u0438\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0438\u0434\u0451\u0442 \u043b\u0438 \u0434\u0435\u043b\u043e. \u041a\u0443\u0434\u0430 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c &#8212; \u044f \u0445\u0437, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0441\u0435\u0442\u0435\u0432\u0438\u043a \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0435\u0441\u0442\u044c \u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435:<\/p>\n<pre><code class=\"lua\">user@k-w1:~$ sudo tcpdump -i any -n host 10.0.11.1 tcpdump: data link type LINUX_SLL2 tcpdump: verbose output suppressed, use -v[v]... for full protocol decode listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes 09:34:46.678488 ens3  Out IP 10.1.11.1.47196 &gt; 10.0.11.1.6443: Flags [P.], seq 3173377766:3173377804, ack 458422059, win 501, options [nop,nop,TS val 785132122 ecr 906488627], length 38 09:34:46.687859 ens3  In  IP 10.0.11.1.6443 &gt; 10.1.11.1.47196: Flags [P.], seq 1:91, ack 38, win 507, options [nop,nop,TS val 906494937 ecr 785132122], length 90 09:34:46.687875 ens3  Out IP 10.1.11.1.47196 &gt; 10.0.11.1.6443: Flags [.], ack 91, win 501, options [nop,nop,TS val 785132131 ecr 906494937], length 0 09:34:46.739604 ens3  In  IP 10.0.11.1.6443 &gt; 10.1.11.1.47196: Flags [P.], seq 1539:2226, ack 38, win 507, options [nop,nop,TS val 906494988 ecr 785132131], length 687 09:34:46.739633 ens3  Out IP 10.1.11.1.47196 &gt; 10.0.11.1.6443: Flags [.], ack 91, win 501, options [nop,nop,TS val 785132183 ecr 906494937,nop,nop,sack 1 {1539:2226}], length 0 09:34:46.745540 ens3  In  IP 10.0.11.1.6443 &gt; 10.1.11.1.47196: Flags [.], seq 91:1539, ack 38, win 507, options [nop,nop,TS val 906494995 ecr 785132183], length 1448 09:34:46.745551 ens3  Out IP 10.1.11.1.47196 &gt; 10.0.11.1.6443: Flags [.], ack 2226, win 497, options [nop,nop,TS val 785132189 ecr 906494995], length 0 09:34:46.745705 ens3  Out IP 10.1.11.1.47196 &gt; 10.0.11.1.6443: Flags [P.], seq 38:73, ack 2226, win 501, options [nop,nop,TS val 785132189 ecr 906494995], length 35 09:34:46.796413 ens3  In  IP 10.0.11.1.6443 &gt; 10.1.11.1.47196: Flags [.], ack 73, win 507, options [nop,nop,TS val 906495044 ecr 785132189], length 0<\/code><\/pre>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u0447\u0435\u043c-\u0442\u043e \u043e\u043d\u0438 \u0442\u0430\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f, \u043c\u0435\u0448\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443. \u041f\u043e\u0434\u043e\u0436\u0434\u0443.<\/p>\n<p>\u0414\u043e\u0436\u0434\u0430\u043b\u0441\u044f:<\/p>\n<pre><code class=\"bash\">[preflight] Running pre-flight checks error execution phase preflight: couldn't validate the identity of the API Server: could not find a JWS signature in the cluster-info ConfigMap for token ID \"4glzzt\" To see the stack trace of this error execute with --v=5 or higher<\/code><\/pre>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u043f\u043e\u0434\u0443\u043c\u0430\u043b \u0447\u0442\u043e \u043e\u043d \u0441\u0430\u0433\u0440\u0438\u043b\u0441\u044f \u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b \u0442\u043e\u0447\u043a\u0438 \u0432 \u0442\u043e\u043a\u0435\u043d\u0435 &#8212; \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432 \u043e\u0448\u0438\u0431\u043a\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u201c4glzzt\u201d, \u0430 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435\u00a0<code>--token 4glzzt.3b96mmozrsum72he<\/code>, \u043d\u043e \u044d\u0442\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043f\u043e\u043b\u043d\u0430\u044f \u0445\u0435\u0440\u043d\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0433\u0443\u0433\u043b\u0438\u0442\u044c \u0438 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u0441 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c\u044e \u043d\u0430 \u044d\u0442\u043e\u0442 \u0441\u0447\u0451\u0442. \u041a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c &#8212; \u043c\u043e\u0439 \u0442\u043e\u043a\u0435\u043d \u043f\u0440\u043e\u0442\u0443\u0445 &#8212; \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u043d \u0436\u0438\u0432\u0451\u0442 24 \u0447\u0430\u0441\u0430, \u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u043f\u0430\u0440\u0443 \u0434\u043d\u0435\u0439 \u043d\u0430\u0437\u0430\u0434 \u0443\u0436\u0435, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u0448\u0451\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c ) \u0412 \u0441\u043f\u0438\u0441\u043a\u0435 \u0436\u0438\u0432\u044b\u0445 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0435\u0433\u043e \u043d\u0435\u0442:<\/p>\n<pre><code class=\"bash\">user@K-Master:~$ sudo kubeadm token list user@K-Master:~$ <\/code><\/pre>\n<p>\u0421\u0434\u0435\u043b\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0442\u043e\u043a\u0435\u043d:<\/p>\n<pre><code class=\"bash\">user@K-Master:~$ sudo kubeadm token create ya36sc.cregu6et22m9j7q5 user@K-Master:~$ sudo kubeadm token list TOKEN                     TTL         EXPIRES                USAGES                   DESCRIPTION                                                EXTRA GROUPS ya36sc.cregu6et22m9j7q5   23h         2025-08-02T09:47:10Z   authentication,signing   &lt;none&gt;                                                     system:bootstrappers:kubeadm:default-node-token<\/code><\/pre>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432\u00a0<code>kubeadm join<\/code>\u00a0\u0445\u0435\u0448 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0430, \u043e\u043d \u0443 \u043d\u0430\u0441 \u043d\u0435 \u043c\u0435\u043d\u044f\u043b\u0441\u044f. \u041f\u0440\u043e\u0431\u0443\u0435\u043c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"bash\">user@k-w1:~$ sudo kubeadm join 10.0.11.1:6443 \\   --token ya36sc.cregu6et22m9j7q5 \\   --discovery-token-ca-cert-hash sha256:557100ad9c340873e4d2d4e329fd303ba274548f1188030ad9c6569a2f745e42<\/code><\/pre>\n<p>\u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u043f\u0451\u0440\u043b\u043e:<\/p>\n<pre><code class=\"bash\">[preflight] Running pre-flight checks [preflight] Reading configuration from the cluster... [preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml' [kubelet-start] Writing kubelet configuration to file \"\/var\/lib\/kubelet\/config.yaml\" [kubelet-start] Writing kubelet environment file with flags to file \"\/var\/lib\/kubelet\/kubeadm-flags.env\" [kubelet-start] Starting the kubelet [kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...  This node has joined the cluster: * Certificate signing request was sent to apiserver and a response was received. * The Kubelet was informed of the new secure connection details.  Run 'kubectl get nodes' on the control-plane to see this node join the cluster.<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0438\u0434\u043d\u043e \u043d\u0430\u0448\u0435\u0433\u043e \u0432\u043e\u0440\u043a\u0435\u0440\u0430!<\/p>\n<pre><code class=\"lua\">user@k-w1:~$ kubectl get nodes NAME       STATUS     ROLES           AGE    VERSION k-master   NotReady   control-plane   2d5h   v1.28.15 k-w1       NotReady   &lt;none&gt;          49s    v1.28.15<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u0435\u043c \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043d\u0430 \u0432\u043e\u0440\u043a\u0435\u0440\u0435-2 \u0438 \u0432\u043e\u0440\u043a\u0435\u0440\u0435-3<\/p>\n<pre><code class=\"lua\">user@k-w1:~$ kubectl get nodes NAME       STATUS     ROLES           AGE     VERSION k-master   NotReady   control-plane   2d5h    v1.28.15 k-w1       NotReady   &lt;none&gt;          3m31s   v1.28.15 k-w2       NotReady   &lt;none&gt;          14s     v1.28.15 k-w3       NotReady   &lt;none&gt;          5s      v1.28.15<\/code><\/pre>\n<p>\u0418\u0442\u0430\u043a &#8212; \u043a\u0430\u043a \u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u0438 &#8212; \u043e\u0434\u0438\u043d \u043c\u0430\u0441\u0442\u0435\u0440 \u0438 \u0442\u0440\u0438 \u0432\u043e\u0440\u043a\u0435\u0440\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0441\u0435 \u043e\u043d\u0438 \u0432 NotReady \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438, \u0438 \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b \u043d\u0430 \u0441\u0435\u0431\u0435, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0438\u043a\u0430\u043a\u0443\u044e \u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u0435\u0441\u0442\u0438. \u0412 \u043e\u0431\u0449\u0435\u043c, \u043a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u043e\u0434\u0438\u043d \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0418\u043d\u043d\u043e\u043a\u0435\u043d\u0442\u0438\u0439 &#8212; \u201c\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f!\u201d<\/p>\n<p>\u0421\u0430\u043c\u044b\u0439 \u043b\u0443\u0447\u0448\u0438\u0439 \u0434\u0440\u0443\u0433 \u0432 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043a\u0430\u043a-\u043b\u0438\u0431\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0435 Kubernetes-\u0430 &#8212; \u044d\u0442\u043e\u00a0<code>kubectl describe<\/code>\u00a0&#8212;\u00a0<a href=\"https:\/\/kubernetes.io\/docs\/reference\/kubectl\/generated\/kubectl_describe\/\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442 \u0432\u043e\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c<\/a><br \/>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043d\u0430\u0448\u0435\u0439 \u043d\u043e\u0434\u0435 \u043b\u044e\u0431\u043e\u0439 :<\/p>\n<pre><code class=\"bash\"> user@K-Master:~$ kubectl describe node k-master Name:               k-master Roles:              control-plane Labels:             beta.kubernetes.io\/arch=amd64                     beta.kubernetes.io\/os=linux                     kubernetes.io\/arch=amd64                     kubernetes.io\/hostname=k-master                     kubernetes.io\/os=linux                     node-role.kubernetes.io\/control-plane=                     node.kubernetes.io\/exclude-from-external-load-balancers= Annotations:        kubeadm.alpha.kubernetes.io\/cri-socket: unix:\/\/\/var\/run\/containerd\/containerd.sock                     node.alpha.kubernetes.io\/ttl: 0                     volumes.kubernetes.io\/controller-managed-attach-detach: true CreationTimestamp:  Wed, 30 Jul 2025 03:54:44 +0000 Taints:             node-role.kubernetes.io\/control-plane:NoSchedule                     node.kubernetes.io\/not-ready:NoSchedule Unschedulable:      false Lease:   HolderIdentity:  k-master   AcquireTime:     &lt;unset&gt;   RenewTime:       Fri, 01 Aug 2025 10:20:47 +0000 Conditions:   Type             Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message   ----             ------  -----------------                 ------------------                ------                       -------   MemoryPressure   False   Fri, 01 Aug 2025 10:20:49 +0000   Wed, 30 Jul 2025 03:54:42 +0000   KubeletHasSufficientMemory   kubelet has sufficient memory available   DiskPressure     False   Fri, 01 Aug 2025 10:20:49 +0000   Wed, 30 Jul 2025 03:54:42 +0000   KubeletHasNoDiskPressure     kubelet has no disk pressure   PIDPressure      False   Fri, 01 Aug 2025 10:20:49 +0000   Wed, 30 Jul 2025 03:54:42 +0000   KubeletHasSufficientPID      kubelet has sufficient PID available   Ready            False   Fri, 01 Aug 2025 10:20:49 +0000   Wed, 30 Jul 2025 03:54:42 +0000   KubeletNotReady              container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized Addresses:   InternalIP:  10.0.11.1   Hostname:    k-master Capacity:   cpu:                2   ephemeral-storage:  59543468Ki   hugepages-2Mi:      0   memory:             4018140Ki   pods:               110 Allocatable:   cpu:                2   ephemeral-storage:  54875260018   hugepages-2Mi:      0   memory:             3915740Ki   pods:               110 System Info:   Machine ID:                 9b501691e27e441fa1ddadcbde6948b8   System UUID:                adb6f6f8-3ebd-4da3-bb18-15d69dfd3393   Boot ID:                    3c2d4346-5c1b-425e-8463-164b41d90f0c   Kernel Version:             5.15.0-69-generic   OS Image:                   Ubuntu 22.04.2 LTS   Operating System:           linux   Architecture:               amd64   Container Runtime Version:  containerd:\/\/1.7.27   Kubelet Version:            v1.28.15   Kube-Proxy Version:         v1.28.15 PodCIDR:                      10.66.0.0\/24 PodCIDRs:                     10.66.0.0\/24 Non-terminated Pods:          (5 in total)   Namespace                   Name                                CPU Requests  CPU Limits  Memory Requests  Memory Limits  Age   ---------                   ----                                ------------  ----------  ---------------  -------------  ---   kube-system                 etcd-k-master                       100m (5%)     0 (0%)      100Mi (2%)       0 (0%)         2d6h   kube-system                 kube-apiserver-k-master             250m (12%)    0 (0%)      0 (0%)           0 (0%)         2d6h   kube-system                 kube-controller-manager-k-master    200m (10%)    0 (0%)      0 (0%)           0 (0%)         2d6h   kube-system                 kube-proxy-dsf2f                    0 (0%)        0 (0%)      0 (0%)           0 (0%)         2d6h   kube-system                 kube-scheduler-k-master             100m (5%)     0 (0%)      0 (0%)           0 (0%)         2d6h Allocated resources:   (Total limits may be over 100 percent, i.e., overcommitted.)   Resource           Requests    Limits   --------           --------    ------   cpu                650m (32%)  0 (0%)   memory             100Mi (2%)  0 (0%)   ephemeral-storage  0 (0%)      0 (0%)   hugepages-2Mi      0 (0%)      0 (0%) Events:              &lt;none&gt; <\/code><\/pre>\n<p>\u041d\u0430\u043c \u0442\u0443\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d \u0440\u0430\u0437\u0434\u0435\u043b Conditions, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u0442\u0438\u043f\u043e\u0432 \u043a\u043e\u043d\u0434\u0438\u0448\u043d\u0430 &#8212; \u201cReady\u201d \u041d\u0443 \u0438 \u0432\u043e\u0442 \u0442\u0430\u043c \u044f\u0432\u043d\u043e \u0432\u0438\u0434\u043d\u043e \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u043e\u0434\u0430 \u043d\u0435 Ready, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e &#8212;\u00a0<strong>\u201ccontainer runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized\u201d<\/strong><\/p>\n<p>\u0410\u043b\u044c\u0442\u0435\u0440\u0430\u043d\u0442\u0438\u0432\u043d\u043e, \u044d\u0442\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432 \u0432\u0438\u0434\u0435 \u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0433\u043e json-\u0430 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0442\u0430\u043a (\u043d\u0443 \u0442\u0443\u0442, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0430\u0434\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 &#8212; \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u043a\u0443\u0434\u0430 \u0438 \u043a\u0430\u043a \u0442\u044b\u043a\u0430\u0442\u044c):<\/p>\n<pre><code class=\"json\">user@K-Master:~$ kubectl get node k-master -o jsonpath='{.status.conditions}' | jq '.[] | select(.type == \"Ready\")' {   \"lastHeartbeatTime\": \"2025-08-01T10:31:02Z\",   \"lastTransitionTime\": \"2025-07-30T03:54:42Z\",   \"message\": \"container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized\",   \"reason\": \"KubeletNotReady\",   \"status\": \"False\",   \"type\": \"Ready\" } <\/code><\/pre>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u043a\u0430\u043a \u0432\u0438\u0434\u043d\u043e &#8212; \u043e\u043f\u044f\u0442\u044c \u0432\u0438\u043d\u043e\u0432\u0430\u0442\u044b \u0441\u0435\u0442\u0435\u0432\u0438\u043a\u0438! &#8212;\u00a0<code>NetworkReady=false<\/code>\u00a0&#8212; \u0441\u0435\u0442\u044c \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u0430, \u0451\u043f\u0442\u0430! \u0410 \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u0430, \u043e\u043d\u0430 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0<code>Network plugin returns error: cni plugin not initialized<\/code>\u00a0! \u0417\u0430\u0431\u044b\u043b\u0438 \u043c\u044b \u043f\u0440\u043e CNI \u043a\u0430\u0440\u043e\u0447\u0435.<\/p>\n<h3>Calico<\/h3>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e\u00a0\u044f \u0440\u0435\u0448\u0438\u043b\u00a0\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043d\u0430 Calico, \u043d\u0430 \u043d\u0451\u043c \u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u044e\u0441\u044c!<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043a\u0430\u043b\u0438\u043a\u0443 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u043e\u0439:<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ kubectl apply -f https:\/\/docs.projectcalico.org\/manifests\/calico.yaml poddisruptionbudget.policy\/calico-kube-controllers created serviceaccount\/calico-kube-controllers created serviceaccount\/calico-node created configmap\/calico-config created customresourcedefinition.apiextensions.k8s.io\/bgpconfigurations.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io\/bgppeers.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io\/blockaffinities.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io\/caliconodestatuses.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io\/clusterinformations.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io\/felixconfigurations.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io\/globalnetworkpolicies.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io\/globalnetworksets.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io\/hostendpoints.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io\/ipamblocks.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io\/ipamconfigs.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io\/ipamhandles.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io\/ippools.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io\/ipreservations.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io\/kubecontrollersconfigurations.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io\/networkpolicies.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io\/networksets.crd.projectcalico.org created clusterrole.rbac.authorization.k8s.io\/calico-kube-controllers created clusterrole.rbac.authorization.k8s.io\/calico-node created clusterrolebinding.rbac.authorization.k8s.io\/calico-kube-controllers created clusterrolebinding.rbac.authorization.k8s.io\/calico-node created daemonset.apps\/calico-node created deployment.apps\/calico-kube-controllers created <\/code><\/pre>\n<p>\u0421\u043a\u0430\u0447\u0430\u043b\u0438 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 (<a href=\"https:\/\/docs.projectcalico.org\/manifests\/calico.yaml\" rel=\"noopener noreferrer nofollow\">https:\/\/docs.projectcalico.org\/manifests\/calico.yaml<\/a>) \u0441 \u0441\u0430\u0439\u0442\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043a\u0430\u043b\u0438\u043a\u0443!<\/p>\n<p>\u041d\u043e\u0434\u044b, \u043a\u0441\u0442\u0430\u0442\u0438, \u0441\u0440\u0430\u0437\u0443 \u043f\u0435\u0440\u0435\u0448\u043b\u0438 \u0432 Ready:<\/p>\n<pre><code class=\"lua\">user@k-w1:~$ kubectl get nodes NAME       STATUS   ROLES           AGE    VERSION k-master   Ready    control-plane   2d7h   v1.28.15 k-w1       Ready    &lt;none&gt;          82m    v1.28.15 k-w2       Ready    &lt;none&gt;          79m    v1.28.15 k-w3       Ready    &lt;none&gt;          79m    v1.28.15<\/code><\/pre>\n<p>\u041d\u0430 \u0432\u0441\u0435\u0445 \u043d\u043e\u0434\u0430\u0445 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u043e\u0434\u0438\u043a\u0438 \u043a\u0430\u043a \u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 Calico:<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ kubectl get pods -n kube-system -o wide | grep -E 'calico|NAME' NAME                                       READY   STATUS    RESTARTS   AGE    IP             NODE       NOMINATED NODE   READINESS GATES calico-kube-controllers-658d97c59c-kq2ld   1\/1     Running   0          17m    10.66.207.66   k-w1       &lt;none&gt;           &lt;none&gt; calico-node-b2rgf                          1\/1     Running   0          17m    10.2.22.1      k-w2       &lt;none&gt;           &lt;none&gt; calico-node-lfbfg                          1\/1     Running   0          17m    10.3.33.1      k-w3       &lt;none&gt;           &lt;none&gt; calico-node-ncqcp                          1\/1     Running   0          17m    10.0.11.1      k-master   &lt;none&gt;           &lt;none&gt; calico-node-wpw78                          1\/1     Running   0          17m    10.1.11.1      k-w1       &lt;none&gt;           &lt;none&gt;<\/code><\/pre>\n<p>\u0412\u043e\u0442 \u0442\u0443\u0442 \u044f \u0441\u0440\u0430\u0437\u0443 \u043e\u0431\u0440\u0430\u0449\u0430\u044e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u043e\u0434\u0438\u043a\u00a0<code>calico-kube-controllers-658d97c59c-kq2ld<\/code>\u00a0&#8212; \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043d\u0430\u0448\u0435\u0433\u043e SDN-\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u0430\u043a, \u0447\u0442\u043e \u0431\u044b \u0441\u0435\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 &#8212; \u0434\u0430\u0451\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0430 \u043d\u043e\u0434\u044b, \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u041a\u043b\u0430\u0441\u0441\u0438\u043a\u0430 \u043a\u0430\u0440\u043e\u0447\u0435. \u041d\u043e \u043c\u0435\u043d\u044f \u0437\u0430\u0446\u0435\u043f\u0438\u043b \u0435\u0433\u043e IP-\u0430\u0434\u0440\u0435\u0441 &#8212; 10.66.207.66. \u0414\u0430, \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043c\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u0447\u0442\u043e CIDR \u0434\u043b\u044f \u043f\u043e\u0434\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 10.66.0.0\/16, \u043d\u043e \u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e 10.66.207.66? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0441\u0435\u0431\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b:<\/p>\n<pre><code class=\"yaml\">***** \u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 CNI-\u0435\u043c IP Pool-\u044b ***** user@K-Master:~$ kubectl get ippools -o yaml apiVersion: v1 items: - apiVersion: crd.projectcalico.org\/v1   kind: IPPool   metadata:     annotations:       projectcalico.org\/metadata: '{\"uid\":\"7c7ea10d-5b11-44bc-996f-762f043ddaf7\",\"creationTimestamp\":\"2025-08-01T10:58:00Z\"}'     creationTimestamp: \"2025-08-01T10:58:00Z\"     generation: 1     name: default-ipv4-ippool     resourceVersion: \"260252\"     uid: d85f0e55-8dde-49c6-9d80-a8ed5c66419f   spec:     allowedUses:     - Workload     - Tunnel     blockSize: 26     cidr: 10.66.0.0\/16     ipipMode: Always     natOutgoing: true     nodeSelector: all()     vxlanMode: Never kind: List metadata:   resourceVersion: \"\"<\/code><\/pre>\n<p>\u0421\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0434\u043b\u044f \u043d\u0430\u0441 &#8212; \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 spec:<\/p>\n<ul>\n<li>\n<p><code>cidr: 10.66.0.0\/16<\/code>\u00a0&#8212; \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u044d\u0442\u043e \u0442\u043e \u0447\u0442\u043e \u043c\u044b \u0437\u0430\u0434\u0430\u043b\u0438 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/p>\n<\/li>\n<li>\n<p><code>blockSize: 26<\/code>\u00a0&#8212; \u044d\u0442\u043e\u00a0<strong>\u0434\u0435\u0444\u043e\u043b\u0442\u043d\u0430\u044f<\/strong>\u00a0\u043c\u0430\u0441\u043a\u0430 \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0430 \u043f\u043e\u0434\u0441\u0435\u0442\u043a\u0430. \u0422\u043e \u0435\u0441\u0442\u044c \u0438\u0437 10.66.0.0\/16 \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u043f\u043e\u0434\u0441\u0435\u0442\u043a\u0430 \/26 \u0438 \u043e\u0442\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u043e\u0434\u0435, \u0434\u0430\u043b\u044c\u0448\u0435 \u043a\u0430\u043b\u0438\u043a\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0442\u044c IP-\u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0430 \u043f\u043e\u0434\u044b \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u044d\u0442\u043e\u0439 \u0441\u0435\u0442\u043a\u0435<\/p>\n<\/li>\n<li>\n<p><code>vxlanMode: Never<\/code>\u00a0&#8212; \u043f\u0440\u0438\u044f\u0442\u043d\u043e \u043f\u043e\u0440\u0430\u0434\u043e\u0432\u0430\u043b\u043e )<\/p>\n<\/li>\n<li>\n<p><code>ipipMode: Always<\/code>\u00a0&#8212; \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435\u2026 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0442\u0440\u0430\u0444\u0438\u043a \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0434\u0438\u043a\u0430\u043c\u0438 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043d\u043e\u0434\u0430\u0445 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432 IPIP &#8212; \u0447\u0442\u043e\u0436, \u044d\u0442\u043e \u043b\u043e\u0433\u0438\u0447\u043d\u043e &#8212; \u041a\u0430\u043b\u0438\u043a\u043e \u0436\u0435 \u043f\u043e\u043a\u0430 \u043d\u0435 \u0434\u043e\u0433\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043c\u044b \u0442\u0443\u0442 \u0434\u0435\u043b\u0430\u0435\u043c \u043f\u043b\u043e\u0441\u043a\u0443\u044e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u0441\u0435\u0442\u044c, \u0430 \u0442\u0440\u0430\u0444\u0438\u043a \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0434\u0430\u043c\u0438 \u0435\u043c\u0443 \u043a\u0430\u043a-\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430\u0434\u043e<\/p>\n<\/li>\n<li>\n<p><code>natOutgoing: true<\/code>\u00a0&#8212; \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f &#8212; \u043e\u043f\u0446\u0438\u044f \u043d\u0443\u0436\u043d\u0430 \u0434\u043b\u044f \u0432\u044b\u0445\u043e\u0434\u0430 \u0438\u0437 \u043f\u043e\u0434\u0430 \u201c\u043d\u0430\u0440\u0443\u0436\u0443\u201d &#8212; \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0438\u043b\u0438 \u043a\u0443\u0434\u0430-\u0442\u043e \u0435\u0449\u0451 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u0422\u043e\u0436\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u043c, \u043d\u0435 \u043d\u0443\u0436\u041e\u043d \u043d\u0430\u043c \u044d\u0442\u043e\u0442 NAT<\/p>\n<\/li>\n<\/ul>\n<p>\u041b\u0430\u0434\u043d\u043e, \u044d\u0442\u043e \u043c\u044b \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438 \u043f\u0440\u043e \u043d\u0435\u043a\u0443\u044e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u0410 \u043a\u0430\u043a \u0443\u0437\u043d\u0430\u0442\u044c \u043a\u0430\u043a\u0430\u044f \u043f\u043e\u0434\u0441\u0435\u0442\u044c \u043d\u0430 \u043a\u0430\u043a\u0443\u044e \u043d\u043e\u0434\u0443 \u0432\u044b\u0434\u0435\u043b\u0438\u043b\u0430\u0441\u044c?\u00a0\u0410 \u0432\u043e\u0442 \u0442\u0430\u043a, \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a\u0438\u0435 \u0442\u0443\u0442 CIDR-\u044b \u043d\u0430\u0448 \u043a\u0430\u043b\u0438\u043a\u043e \u043a\u043e\u043c\u0443 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u043b:<\/p>\n<pre><code class=\"yaml\">user@k-w1:~$ kubectl get blockaffinities -o yaml apiVersion: v1 items: - apiVersion: crd.projectcalico.org\/v1   kind: BlockAffinity   metadata:     annotations:       projectcalico.org\/metadata: '{\"creationTimestamp\":null}'     creationTimestamp: \"2025-08-01T10:58:00Z\"     generation: 2     name: k-master-10-66-73-128-26     resourceVersion: \"260260\"     uid: 0a22823f-17ac-4fa7-bc5a-31ca8d68c0d3   spec:     cidr: 10.66.73.128\/26     deleted: \"false\"     node: k-master     state: confirmed - apiVersion: crd.projectcalico.org\/v1   kind: BlockAffinity   metadata:     annotations:       projectcalico.org\/metadata: '{\"creationTimestamp\":null}'     creationTimestamp: \"2025-08-01T10:58:04Z\"     generation: 2     name: k-w1-10-66-207-64-26     resourceVersion: \"260300\"     uid: 4a6a748b-ff9e-4a16-a17e-417a116937a2   spec:     cidr: 10.66.207.64\/26     deleted: \"false\"     node: k-w1     state: confirmed - apiVersion: crd.projectcalico.org\/v1   kind: BlockAffinity   metadata:     annotations:       projectcalico.org\/metadata: '{\"creationTimestamp\":null}'     creationTimestamp: \"2025-08-01T10:58:07Z\"     generation: 2     name: k-w2-10-66-53-192-26     resourceVersion: \"260363\"     uid: aeb048ac-7494-4bd7-bc9e-ae8e52a5f3e5   spec:     cidr: 10.66.53.192\/26     deleted: \"false\"     node: k-w2     state: confirmed - apiVersion: crd.projectcalico.org\/v1   kind: BlockAffinity   metadata:     annotations:       projectcalico.org\/metadata: '{\"creationTimestamp\":null}'     creationTimestamp: \"2025-08-01T10:58:07Z\"     generation: 2     name: k-w3-10-66-122-192-26     resourceVersion: \"260341\"     uid: e1a233b4-afa5-406e-9292-27da0fc4d4ba   spec:     cidr: 10.66.122.192\/26     deleted: \"false\"     node: k-w3     state: confirmed kind: List metadata:   resourceVersion: \"\" <\/code><\/pre>\n<p>\u041d\u0443 \u0438\u043b\u0438 \u043b\u0443\u0447\u0448\u0435 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u043c \u043f\u043e kw-1 (\u0442\u0430\u043c \u043d\u0430\u0448 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0437\u0430\u0441\u0435\u043b):<\/p>\n<pre><code class=\"yaml\">user@k-w1:~$ kubectl get blockaffinities -o json | jq '.items[] | select(.spec.node == \"k-w1\") |.spec' {   \"cidr\": \"10.66.207.64\/26\",   \"deleted\": \"false\",   \"node\": \"k-w1\",   \"state\": \"confirmed\" } <\/code><\/pre>\n<p>\u041d\u0443 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u043e &#8212; \u0430\u0434\u0440\u0435\u0441 10.66.207.66 \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0431\u0435 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 CIDR \u201c10.66.207.64\/26\u201d.<\/p>\n<h4>\u0427\u0442\u043e \u0442\u0430\u043c \u0441 \u0442\u0443\u043d\u043d\u0435\u043b\u044f\u043c\u0438 \u0442\u043e?<\/h4>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u044e \u043d\u0430\u0448\u0443 \u0441\u0445\u0435\u043c\u0443 (\u043d\u0443 \u044f \u043d\u0430 \u043d\u0435\u0451 \u0435\u0449\u0451 \u043e\u0431\u043b\u0430\u0447\u043a\u0430 \u0441 \u043f\u043e\u0434\u043e\u0432\u044b\u043c\u0438 \u0441\u0438\u0434\u0440\u0430\u043c\u0438 \u043d\u0430\u043d\u0451\u0441 \u0434\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438)  <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/23b\/bb7\/640\/23bbb764035661fe1755ac4e357588fc.png\" width=\"6152\" height=\"3924\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/23b\/bb7\/640\/23bbb764035661fe1755ac4e357588fc.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/23b\/bb7\/640\/23bbb764035661fe1755ac4e357588fc.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0418 \u0432\u043e\u0442 \u0443 \u043d\u0430\u0441 \u043f\u043e\u0434\u0438\u043a \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c \u0436\u0438\u0432\u0451\u0442 \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u043e\u0440\u043a\u0435\u0440\u0435 \u0432 \u0441\u0435\u0442\u0438 10.66.207.64\/26, \u0431\u0443\u0434\u0435\u0442 \u043b\u0438 \u0443 \u043d\u0435\u0433\u043e \u0441\u0432\u044f\u0437\u044c \u0441 \u043f\u043e\u0434\u043e\u043c \u0433\u0434\u0435 \u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u043d\u043e\u0434\u0435? \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e, \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u0442\u043e\u0433\u043e \u0447\u0442\u043e Underlay \u0442\u0430\u043a\u0438\u0445 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442:<\/p>\n<pre><code class=\"lua\">#\u0432\u044b\u0432\u043e\u0434 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0440\u043e\u0443\u0442\u0438\u043d\u0433\u0430 \u0441 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0430 Leaf3:   Leaf-3#show ip ro 10.66.207.66 Gateway of last resort is not set  Leaf-3#show ip ro 10.66.122.194 Gateway of last resort is not set  # \u0412\u043e\u0442 \u0432\u0441\u0451 \u0447\u0442\u043e \u0435\u0441\u0442\u044c: Leaf-3#show ip ro Gateway of last resort is not set   O        10.0.11.0\/31 [110\/30] via 10.33.99.0, Ethernet1  O        10.1.11.0\/31 [110\/30] via 10.33.99.0, Ethernet1  O        10.2.22.0\/31 [110\/30] via 10.33.99.0, Ethernet1  C        10.3.33.0\/31 is directly connected, Ethernet2  O        10.11.99.0\/31 [110\/20] via 10.33.99.0, Ethernet1  O        10.22.99.0\/31 [110\/20] via 10.33.99.0, Ethernet1  C        10.33.99.0\/31 is directly connected, Ethernet1<\/code><\/pre>\n<p>\u041d\u0443 \u0447\u0442\u043e\u0436, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0430\u043b\u044c\u043f\u0438\u0439\u0441\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0437\u0430\u0439\u0434\u0451\u043c \u0432\u00a0<strong>shell<\/strong>\u00a0\u0418 \u043f\u043e\u043f\u0438\u043d\u0433\u0443\u0435\u043c \u043d\u0430\u0448 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440:<\/p>\n<pre><code class=\"lua\">user@k-w2:~$ kubectl run test-pod --image=alpine --restart=Never --rm -it -- sh If you don't see a command prompt, try pressing enter. \/ #  \/ # ip a 1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN qlen 1000     link\/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00     inet 127.0.0.1\/8 scope host lo        valid_lft forever preferred_lft forever     inet6 ::1\/128 scope host         valid_lft forever preferred_lft forever 2: tunl0@NONE: &lt;NOARP&gt; mtu 1480 qdisc noop state DOWN qlen 1000     link\/ipip 0.0.0.0 brd 0.0.0.0 4: eth0@if9: &lt;BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN&gt; mtu 1480 qdisc noqueue state UP      link\/ether 02:0a:bb:9f:e4:55 brd ff:ff:ff:ff:ff:ff     inet 10.66.122.194\/32 scope global eth0        valid_lft forever preferred_lft forever     inet6 fe80::a:bbff:fe9f:e455\/64 scope link         valid_lft forever preferred_lft forever <\/code><\/pre>\n<p>IP \u043c\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u043b\u0438 &#8212; 10.66.122.194, \u044d\u0442\u043e \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u0443\u043b kw3 (10.66.122.192\/26), \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f \u0447\u0442\u043e \u043f\u043e\u0434 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043c:<\/p>\n<pre><code class=\"lua\">user@k-w1:~$ kubectl get pods -o wide NAME       READY   STATUS    RESTARTS   AGE   IP              NODE   NOMINATED NODE   READINESS GATES test-pod   1\/1     Running   0          10m   10.66.122.194   k-w3   &lt;none&gt;           &lt;none&gt; <\/code><\/pre>\n<p>\u041d\u043e\u0434\u0430 \u043d\u0430\u0448\u0430, IP \u043d\u0430\u0448. \u041a\u0441\u0442\u0430\u0442\u0438, \u043a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0432\u044b\u0432\u043e\u0434\u0430 \u0432\u044b\u0448\u0435 &#8212; \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u00a0<code>4: eth0@if9<\/code>\u00a0\u0438 \u0441\u0443\u0434\u044f \u043f\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u044e \u0441\u043e\u0431\u0430\u043a\u0438 &#8212; \u044d\u0442\u043e \u0432\u0435\u0440\u043d\u044b\u0439 \u043f\u0440\u0438\u0437\u043d\u0430\u043a veth-\u043f\u0430\u0440\u044b. \u0418 \u0433\u0434\u0435 \u0436\u0435 \u0435\u0433\u043e \u0434\u0440\u0443\u0436\u043e\u043a-\u043f\u0438\u0440\u043e\u0436\u043e\u043a? \u041b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u0437\u0430 \u0444\u043e\u0440\u0432\u0430\u0440\u0434\u0438\u043d\u0433 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0438\u0437 \u043f\u043e\u0434\u0430 \u043a\u0443\u0434\u0430 \u0431\u044b \u0442\u043e \u043d\u0438 \u0431\u044b\u043b\u043e, \u0435\u0449\u0451 \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0435\u0433\u043e \u043c\u0430\u043c\u043a\u0430 (\u0445\u043e\u0441\u0442\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430), \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438 \u0434\u0440\u0443\u0436\u043a\u0430 \u043d\u0430\u0434\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0442\u0430\u043c:<\/p>\n<pre><code class=\"lua\">user@k-w3:~$ ip link show 1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000     link\/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: ens3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000     link\/ether 50:52:0b:00:6d:00 brd ff:ff:ff:ff:ff:ff     altname enp0s3 3: ens4: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000     link\/ether 50:52:0b:00:6d:01 brd ff:ff:ff:ff:ff:ff     altname enp0s4 4: ens5: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000     link\/ether 50:52:0b:00:6d:02 brd ff:ff:ff:ff:ff:ff     altname enp0s5 5: tunl0@NONE: &lt;NOARP,UP,LOWER_UP&gt; mtu 1480 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000     link\/ipip 0.0.0.0 brd 0.0.0.0 9: cali7fba7a35b74@if4: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1480 qdisc noqueue state UP mode DEFAULT group default      link\/ether ee:ee:ee:ee:ee:ee brd ff:ff:ff:ff:ff:ff link-netns cni-62e568eb-e285-550c-1c3a-5e86eb5dd440 <\/code><\/pre>\n<p>\u0410, \u043d\u0443 \u0432\u043e\u0442 \u043e\u043d, \u043f\u043e\u0433\u043b\u044f\u0434\u0438\u0442\u0435 &#8212; \u043a\u0430\u043a \u0440\u0430\u0437 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c 9 \u0441\u0438\u0434\u0438\u0442 &#8212;\u00a0<code>9: cali7fba7a35b74@if4<\/code><\/p>\n<p>\u041e\u043a, \u0442\u043e \u0435\u0441\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u0438\u0437 \u043f\u043e\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 veth \u043f\u0430\u0440\u0443 \u0432\u044b\u043d\u0438\u0440\u0438\u0432\u0430\u0435\u0442 \u0438\u0437 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u0430 \u043f\u043e\u0434\u0430 \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u0447\u0442\u043e? \u0410 \u0434\u0430\u043b\u044c\u0448\u0435 \u043a\u043b\u0430\u0441\u0441\u0438\u043a\u0430 &#8212; \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430\u0434\u043e \u043a\u0443\u0434\u0430-\u0442\u043e \u0441\u0444\u043e\u0440\u0432\u0430\u0440\u0434\u0438\u0442\u044c (\u043d\u0435 \u0437\u0440\u044f \u044f \u0432\u043a\u043b\u044e\u0447\u0430\u043b\u00a0<code>net.ipv4.ip_forward=1<\/code>) \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u0445\u043e\u0441\u0442\u0435. \u0410 \u0442\u0430\u043c \u0447\u0442\u043e? \u0415\u0441\u043b\u0438 \u0442\u0440\u0430\u0444\u0438\u043a\u0443 \u0441 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u043e\u0434\u0430 (10.66.122.194) \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0439\u0442\u0438 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 \u043f\u043e\u0434\u0430 \u043d\u0430 kw-1 (10.66.207.66), \u0442\u043e \u043e\u043d \u0432\u043e\u0442 \u0442\u0430\u043a \u043f\u043e\u0439\u0434\u0451\u0442:<\/p>\n<pre><code class=\"lua\">user@k-w3:~$ ip r get 10.66.207.66 10.66.207.66 via 10.0.137.15 dev tunl0 src 10.66.122.192 uid 1000      cache <\/code><\/pre>\n<p>\u0410, \u043d\u0443 \u0432\u043e\u0442 \u0438 \u0442\u0443\u043d\u043d\u0435\u043b\u044c. \u041a\u0430\u043a\u0438\u0435 \u0435\u0449\u0451 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c?<\/p>\n<pre><code class=\"lua\">user@k-w3:~$ ip r | grep tunl0 10.66.53.192\/26 via 10.0.137.112 dev tunl0 proto bird onlink  10.66.73.128\/26 via 10.0.137.12 dev tunl0 proto bird onlink  10.66.207.64\/26 via 10.0.137.15 dev tunl0 proto bird onlink <\/code><\/pre>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u043d\u0430\u0448\u0430\u00a0<strong>k-w3<\/strong>\u00a0\u043d\u043e\u0434\u0430 \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u0442\u0440\u0430\u0444\u0438\u043a \u0434\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0442\u0440\u0451\u0445 \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0435\u0439 (\u0434\u0432\u0443\u0445 \u0432\u043e\u0440\u043a\u0435\u0440\u043e\u0432 \u0438 \u043c\u0430\u0441\u0442\u0435\u0440\u0430) \u043d\u0430\u0434\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432 \u0442\u0443\u043d\u043d\u0435\u043b\u044c<\/p>\n<p>\u0421\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043c\u0430\u0441\u0442\u0435\u0440\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ ip r | grep tunl0 10.66.53.192\/26 via 10.0.137.112 dev tunl0 proto bird onlink  10.66.122.192\/26 via 10.0.137.142 dev tunl0 proto bird onlink  10.66.207.64\/26 via 10.0.137.15 dev tunl0 proto bird onlink <\/code><\/pre>\n<p>\u0422\u0443\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0434\u043e \u0432\u0441\u0435\u0445 \u0442\u0440\u0451\u0445 \u0432\u043e\u0440\u043a\u0435\u0440\u043e\u0432<\/p>\n<p>\u041f\u0440\u0430\u0432\u0434\u0430, \u0442\u0443\u0442 \u043a\u0430\u043b\u0438\u043a\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0441\u0430\u043c\u043e\u0432\u043e\u043b\u044c\u043d\u0438\u0447\u0430\u043b, \u0438 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0442\u0443\u043d\u0435\u043b\u0435\u0439 \u0432\u044b\u0431\u0440\u0430\u043b \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u043f\u0443\u0442\u044c &#8212; \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f\u00a0\u043f\u043e\u0434\u043a\u043e\u0441\u0442\u044b\u043b\u0438\u043b, \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u0431\u044b \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0441 \u043d\u043e\u0434 \u0445\u043e\u0434\u0438\u0442\u044c, \u0430 \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 \u043d\u0430\u0448 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 Underlay. \u041d\u0443 \u0411\u043e\u0433 \u0435\u043c\u0443 \u0441\u0443\u0434\u044c\u044f, \u044d\u0442\u043e \u043d\u0435 \u0432\u0430\u0436\u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0443\u043d\u043d\u0435\u043b\u0438 \u043c\u044b \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c. \u0412 \u043e\u0431\u0449\u0435\u043c \u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u0430\u043c\u043f\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u043d\u043e\u0434\u044b, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0442\u0443\u043d\u043d\u0435\u043b\u044c, \u0430 \u043f\u043e\u0442\u043e\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0438\u043d\u0433\u0438 \u043e\u0442 \u043f\u043e\u0434\u0430 \u043d\u0430\u00a0<strong>k-w3<\/strong>\u00a0\u0434\u043e \u043f\u043e\u0434\u0430 \u043d\u0430\u00a0<strong>k-w1<\/strong>, \u0442\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0435\u043c \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 IPIP \u0442\u0440\u0430\u0444\u0438\u043a:<\/p>\n<pre><code class=\"lua\">user@k-w3:~$ sudo tcpdump -i ens5 -n tcpdump: verbose output suppressed, use -v[v]... for full protocol decode listening on ens5, link-type EN10MB (Ethernet), snapshot length 262144 bytes 17:59:59.484554 IP 10.0.137.142 &gt; 10.0.137.15: IP 10.66.122.194 &gt; 10.66.207.66: ICMP echo request, id 18, seq 72, length 64 17:59:59.485009 IP 10.0.137.15 &gt; 10.0.137.142: IP 10.66.207.66 &gt; 10.66.122.194: ICMP echo reply, id 18, seq 72, length 64 18:00:00.484888 IP 10.0.137.142 &gt; 10.0.137.15: IP 10.66.122.194 &gt; 10.66.207.66: ICMP echo request, id 18, seq 73, length 64 18:00:00.485324 IP 10.0.137.15 &gt; 10.0.137.142: IP 10.66.207.66 &gt; 10.66.122.194: ICMP echo reply, id 18, seq 73, length 64 18:00:01.485194 IP 10.0.137.142 &gt; 10.0.137.15: IP 10.66.122.194 &gt; 10.66.207.6<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0430\u044f \u0432\u043e\u0442 \u0441\u0445\u0435\u043c\u043a\u0430 \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043b\u0430\u0441\u044c:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/439\/ff9\/d38\/439ff9d3827ed4033be3bca3da7c50e0.png\" width=\"2688\" height=\"724\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/439\/ff9\/d38\/439ff9d3827ed4033be3bca3da7c50e0.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/439\/ff9\/d38\/439ff9d3827ed4033be3bca3da7c50e0.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u041f\u0442\u0438\u0446\u0430<\/h4>\n<p>\u0415\u0449\u0451 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 &#8212; \u0442\u043e, \u043a\u0430\u043a \u043d\u043e\u0434\u0430 \u0443\u0437\u043d\u0430\u043b\u0430 \u043f\u0440\u043e \u044d\u0442\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b. \u041f\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u044f\u0434\u0440\u0443 \u043f\u0440\u043e \u043d\u0435\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b\u00a0<strong>bird<\/strong>, \u041a\u0430\u0440\u043b!\u00a0<code>10.66.207.64\/26 via 10.0.137.15 dev tunl0 proto bird onlink<\/code><\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c, \u0433\u0434\u0435-\u0442\u043e \u0432 \u043d\u0435\u0434\u0440\u0430\u0445 \u0432\u0441\u0435\u0439 \u044d\u0442\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0440\u0438\u0438 \u0436\u0438\u0432\u0451\u0442 \u0431\u0451\u0440\u0434. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u043d\u0430\u0439\u0442\u0438 \u0433\u0443\u0430\u043d\u043e \u044d\u0442\u043e\u0439 \u043f\u0442\u0438\u0447\u043a\u0438. \u041d\u0435 \u0431\u0443\u0434\u0443 \u0434\u0430\u043b\u0435\u043a\u043e \u0445\u043e\u0434\u0438\u0442\u044c \u043e\u0442\u00a0<strong>k-w3<\/strong>\u00a0\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u044e \u0447\u0442\u043e \u043d\u0438\u0431\u0443\u0434\u044c \u0442\u0430\u043c. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0434\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u043a\u0430\u043a\u043e\u0439 \u043f\u043e\u0434 \u0442\u0430\u043c \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043a\u0430\u043b\u0438\u043a\u043e:<\/p>\n<p>\u0412\u043e\u0442 \u043e\u043d\u043e<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ kubectl get pods -A -o wide | grep calico | grep k-w3 kube-system   calico-node-lfbfg       1\/1     Running   0          7h48m   10.3.33.1       k-w3   &lt;none&gt;      &lt;none&gt;<\/code><\/pre>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0442\u0441\u044f \u0432 \u0435\u0433\u043e shell \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c\u00a0<code>birdc show protocols<\/code>:<\/p>\n<pre><code class=\"bash\">kubectl exec -it calico-node-lfbfg -n kube-system -- sh Defaulted container \"calico-node\" out of: calico-node, upgrade-ipam (init), install-cni (init), mount-bpffs (init) sh-4.4# birdc sh: birdc: command not found<\/code><\/pre>\n<p>\u0422\u0443\u0442 \u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0441\u044f, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u0433\u0443\u0433\u043b\u0438\u043b \u0438 \u0443\u0437\u043d\u0430\u043b, \u0447\u0442\u043e \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0443\u00a0<strong>birdc<\/strong>\u00a0\u0435\u0441\u0442\u044c \u201c\u043e\u0431\u043b\u0435\u0433\u0447\u0451\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f\u201d &#8212;\u00a0<strong>birdcl<\/strong><\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u0442\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:<\/p>\n<pre><code class=\"lua\">***** \u0432\u0438\u0434\u043d\u043e \u0447\u0442\u043e \u0434\u0435\u043c\u043e\u043d \u0437\u0430\u043f\u0443\u0449\u0435\u043d sh-4.4# birdcl show status BIRD v0.3.3+birdv1.6.8 ready. BIRD v0.3.3+birdv1.6.8 Router ID is 10.0.137.142 Current server time is 2025-08-03 04:54:44 Last reboot on 2025-08-01 10:58:09 Last reconfiguration on 2025-08-01 10:58:09 Daemon is up and running  ***** \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0432\u0438\u0434\u043d\u044b:  sh-4.4# birdcl show interface BIRD v0.3.3+birdv1.6.8 ready. lo up (index=1) MultiAccess AdminUp LinkUp Loopback Ignored MTU=65536 127.0.0.1\/8 (Primary, scope host) ens3 up (index=2) MultiAccess Broadcast Multicast AdminUp LinkUp MTU=1500 10.3.33.1\/31 (Primary, opposite 10.3.33.0, scope site) ens4 DOWN (index=3) MultiAccess Broadcast Multicast AdminUp LinkUp MTU=1500 ens5 up (index=4) MultiAccess Broadcast Multicast AdminUp LinkUp MTU=1500 10.0.137.142\/24 (Primary, scope site) tunl0 up (index=5) MultiAccess AdminUp LinkUp MTU=1480 10.66.122.192\/32 (Primary, scope site) cali7fba7a35b74 DOWN (index=9) MultiAccess Broadcast Multicast AdminUp LinkUp MTU=1480  ***** \u0441\u0435\u0441\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b sh-4.4# birdcl show protocols | grep BGP Mesh_10_0_137_12 BGP      master   up     2025-08-01  Established    Mesh_10_0_137_15 BGP      master   up     2025-08-01  Established    Mesh_10_0_137_112 BGP      master   up     2025-08-01  Established   ***** \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0434\u043e\u043b\u0435\u0442\u0435\u043b\u0438: sh-4.4# birdcl show route  BIRD v0.3.3+birdv1.6.8 ready. 10.66.53.192\/26    via 10.0.137.112 on ens5 [Mesh_10_0_137_112 2025-08-01] * (100\/0) [i] 10.66.73.128\/26    via 10.0.137.12 on ens5 [Mesh_10_0_137_12 2025-08-01] * (100\/0) [i] 10.66.207.64\/26    via 10.0.137.15 on ens5 [Mesh_10_0_137_15 2025-08-01] * (100\/0) [i] <\/code><\/pre>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c, \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u043b\u043e\u0433\u0438\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u0430\u044f &#8212; Calico \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u0442 \u043d\u0435\u043a\u0443\u044e full mesh iBGP \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u0432\u0441\u0435\u043c\u0438 \u043d\u043e\u0434\u0430\u043c, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u043e\u0434\u044b \u0434\u0430\u044e\u0442 \u0437\u043d\u0430\u0442\u044c \u0441\u0432\u043e\u0438\u043c \u0434\u0440\u0443\u0437\u044f\u0448\u043a\u0430\u043c \u043e \u0441\u0432\u043e\u0438\u0445 \u043f\u043e\u0434\u043e\u0432\u044b\u0445 \u0441\u0435\u0442\u044f\u0445.<\/p>\n<details class=\"spoiler\">\n<summary>\u0415\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0433\u043b\u0443\u0431\u0438\u043d \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u043e\u043c &#8212; \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 bird-\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c\u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430\u043c\u0438 Calico, \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u0441\u0451 \u0442\u043e\u0439 \u0436\u0435 k-w3<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"lua\">function apply_communities () { }  # Generated by confd include \"bird_aggr.cfg\"; include \"bird_ipam.cfg\";  router id 10.0.137.142;  # Configure synchronization between routing tables and kernel. protocol kernel {   learn;             # Learn all alien routes from the kernel   persist;           # Don't remove routes on bird shutdown   scan time 2;       # Scan kernel routing table every 2 seconds   import all;   export filter calico_kernel_programming; # Default is export none   graceful restart;  # Turn on graceful restart to reduce potential flaps in                      # routes when reloading BIRD configuration.  With a full                      # automatic mesh, there is no way to prevent BGP from                      # flapping since multiple nodes update their BGP                      # configuration at the same time, GR is not guaranteed to                      # work correctly in this scenario.   merge paths on;    # Allow export multipath routes (ECMP) }  # Watch interface up\/down events. protocol device {   debug { states };   scan time 2;    # Scan interfaces every 2 seconds }  protocol direct {   debug { states };   interface -\"cali*\", -\"kube-ipvs*\", \"*\"; # Exclude cali* and kube-ipvs* but                                           # include everything else.  In                                           # IPVS-mode, kube-proxy creates a                                           # kube-ipvs0 interface. We exclude                                           # kube-ipvs0 because this interface                                           # gets an address for every in use                                           # cluster IP. We use static routes                                           # for when we legitimately want to                                           # export cluster IPs. }   # Template for all BGP clients template bgp bgp_template {   debug { states };   description \"Connection to BGP peer\";   local as 64512;   gateway recursive; # This should be the default, but just in case.   import all;        # Import all routes, since we don't know what the upstream                      # topology is and therefore have to trust the ToR\/RR.   export filter calico_export_to_bgp_peers;  # Only want to export routes for workloads.   add paths on;   graceful restart;  # See comment in kernel section about graceful restart.   connect delay time 2;   connect retry time 5;   error wait time 5,30; }  # ------------- Node-to-node mesh -------------      # For peer \/host\/k-master\/ip_addr_v4 protocol bgp Mesh_10_0_137_12 from bgp_template {   multihop;   ttl security off;   neighbor 10.0.137.12 as 64512;   source address 10.0.137.142;  # The local address we use for the TCP connection }    # For peer \/host\/k-w1\/ip_addr_v4 protocol bgp Mesh_10_0_137_15 from bgp_template {   multihop;   ttl security off;   neighbor 10.0.137.15 as 64512;   source address 10.0.137.142;  # The local address we use for the TCP connection   passive on; # Mesh is unidirectional, peer will connect to us. }    # For peer \/host\/k-w2\/ip_addr_v4 protocol bgp Mesh_10_0_137_112 from bgp_template {   multihop;   ttl security off;   neighbor 10.0.137.112 as 64512;   source address 10.0.137.142;  # The local address we use for the TCP connection }    # For peer \/host\/k-w3\/ip_addr_v4 # Skipping ourselves (10.0.137.142)    # ------------- Global peers ------------- # No global peers configured.   # ------------- Node-specific peers ------------- # No node-specific peers configured.<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0422\u0443\u0442, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u0443\u0439\u0442\u0438 \u0435\u0449\u0451 \u0433\u043b\u0443\u0431\u0436\u0435 \u0438 \u0440\u0430\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e \u0442\u043e \u041a\u0410\u041a \u0418\u041c\u0415\u041d\u041d\u041e \u044d\u0442\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u043f\u043e\u0434\u0438\u043a\u0430\u0445 \u043a\u0430\u043b\u0438\u043a\u043e, \u043d\u043e \u043d\u0435 \u0445\u043e\u0447\u0443 &#8212; \u0435\u0441\u043b\u0438 \u0432 \u043a\u0440\u0430\u0442\u0446\u0435, \u0442\u043e \u0442\u0430\u043c \u043d\u0435\u043a\u0438\u0439\u00a0<strong>confd<\/strong>\u00a0\u0445\u043e\u0434\u0438\u0442 \u043a\u0443\u0434\u0430-\u0442\u043e \u0432 \u0435\u0434\u0438\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 (\u043d\u0443 \u043a\u043e\u043d\u0435\u0447\u043d\u043e etcd, \u043a\u0443\u0434\u0430 \u0435\u043c\u0443 \u0435\u0449\u0451 \u0445\u043e\u0434\u0438\u0442\u044c) \u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0442 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0438.  <\/p>\n<h4>calicoctl<\/h4>\n<p>\u0411\u043b\u0438\u043d, \u043f\u043e\u0440\u0430 \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0441\u0435\u0442\u044c \u0434\u0430\u0432\u043d\u043e \u0438 \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0442\u0443\u043d\u043d\u0435\u043b\u0435\u0439, \u043d\u043e \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u0441\u043e\u0444\u0442\u0438\u043d\u0430\u00a0<strong>calicoctl<\/strong>\u00a0\u0438\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u0430, \u0447\u0442\u043e \u043e\u043d\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0441\u0435\u043c \u044d\u0442\u0438\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c json-\u043e\u0432 \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u044f\u043c\u043b\u043e\u0432 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438. \u041d\u0443 \u0442\u043e \u0435\u0441\u0442\u044c \u0435\u0441\u043b\u0438 \u0432\u044b \u0435\u0449\u0451 \u043d\u0435 \u043f\u0440\u043e\u043d\u0438\u043a\u043b\u0438\u0441\u044c \u0434\u0443\u0445\u043e\u043c DevOps, \u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0431\u043e\u043b\u0438\u0435-\u043b\u0438\u043c\u0435\u043d\u0435\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0438\u043c CNI &#8212; \u0442\u043e \u043d\u0430\u0434\u043e \u044e\u0437\u0430\u0442\u044c, \u0435\u0433\u043e. \u0412\u043e\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u043d\u043e IPAM \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0433\u043b\u044f\u043d\u0443\u0442\u044c:<\/p>\n<pre><code class=\"sql\"># \u041a\u0430\u043a\u043e\u0439 \u0443 \u043d\u0430\u0441 CIDR \u043d\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 user@K-Master:~$ calicoctl ipam show +----------+--------------+-----------+------------+--------------+ | GROUPING |     CIDR     | IPS TOTAL | IPS IN USE |   IPS FREE   | +----------+--------------+-----------+------------+--------------+ | IP Pool  | 10.66.0.0\/16 |     65536 | 8 (0%)     | 65528 (100%) | +----------+--------------+-----------+------------+--------------+  # \u043a\u0430\u043a \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u044b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b user@k-w1:~$ calicoctl ipam show --show-blocks +----------+------------------+-----------+------------+--------------+ | GROUPING |       CIDR       | IPS TOTAL | IPS IN USE |   IPS FREE   | +----------+------------------+-----------+------------+--------------+ | IP Pool  | 10.66.0.0\/16     |     65536 | 8 (0%)     | 65528 (100%) | | Block    | 10.66.122.192\/26 |        64 | 2 (3%)     | 62 (97%)     | | Block    | 10.66.207.64\/26  |        64 | 4 (6%)     | 60 (94%)     | | Block    | 10.66.53.192\/26  |        64 | 1 (2%)     | 63 (98%)     | | Block    | 10.66.73.128\/26  |        64 | 1 (2%)     | 63 (98%)     | +----------+------------------+-----------+------------+--------------+<\/code><\/pre>\n<p>\u0418\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442:<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ calicoctl ipam check --show-all-ips Checking IPAM for inconsistencies...  Loading all IPAM blocks... Found 4 IPAM blocks.  IPAM block 10.66.122.192\/26 affinity=host:k-w3:   10.66.122.192 allocated; attrs Main:ipip-tunnel-addr-k-w3 Extra:node=k-w3,type=ipipTunnelAddress   10.66.122.194 allocated; attrs Main:k8s-pod-network.a859801be9f0f3d1f827d5e0468b4d49892d9f664cf3bad7840d81e2e1d5275c Extra:namespace=default,node=k-w3,pod=test-pod,timestamp=2025-08-01 15:46:03.586215975 +0000 UTC  IPAM block 10.66.207.64\/26 affinity=host:k-w1:   10.66.207.64 allocated; attrs Main:ipip-tunnel-addr-k-w1 Extra:node=k-w1,type=ipipTunnelAddress   10.66.207.65 allocated; attrs Main:k8s-pod-network.fa46412671b665c9f465419e2438c53ff2e8f507e19f1c1e0ec46df242d46943 Extra:namespace=kube-system,node=k-w1,pod=coredns-5dd5756b68-mx2x2,timestamp=2025-08-01 10:58:05.534449903 +0000 UTC   10.66.207.66 allocated; attrs Main:k8s-pod-network.0385664c41a266d42b7dc0a16a9e9e78e093ac2686324b4bc9e099751cdf2e8f Extra:namespace=kube-system,node=k-w1,pod=calico-kube-controllers-658d97c59c-kq2ld,timestamp=2025-08-01 10:58:05.562415379 +0000 UTC   10.66.207.67 allocated; attrs Main:k8s-pod-network.9412bb8836cb7d82c57056120496ffcc34cb92acc86ac2668a6429208acbe505 Extra:namespace=kube-system,node=k-w1,pod=coredns-5dd5756b68-hjxxk,timestamp=2025-08-01 10:58:05.637413164 +0000 UTC  IPAM block 10.66.53.192\/26 affinity=host:k-w2:   10.66.53.192 allocated; attrs Main:ipip-tunnel-addr-k-w2 Extra:node=k-w2,type=ipipTunnelAddress  IPAM block 10.66.73.128\/26 affinity=host:k-master:   10.66.73.128 allocated; attrs Main:ipip-tunnel-addr-k-master Extra:node=k-master,type=ipipTunnelAddress IPAM blocks record 8 allocations.  Loading all IPAM pools...   10.66.0.0\/16 Found 1 active IP pools.  Loading all nodes.   10.66.73.128 belongs to Node(k-master)   10.66.207.64 belongs to Node(k-w1)   10.66.53.192 belongs to Node(k-w2)   10.66.122.192 belongs to Node(k-w3) Found 4 node tunnel IPs.  Loading all workload endpoints.   10.66.122.194 belongs to Workload(default\/k--w3-k8s-test--pod-eth0)   10.66.207.66 belongs to Workload(kube-system\/k--w1-k8s-calico--kube--controllers--658d97c59c--kq2ld-eth0)   10.66.207.67 belongs to Workload(kube-system\/k--w1-k8s-coredns--5dd5756b68--hjxxk-eth0)   10.66.207.65 belongs to Workload(kube-system\/k--w1-k8s-coredns--5dd5756b68--mx2x2-eth0) Found 4 workload IPs. Workloads and nodes are using 8 IPs.  Loading all handles Looking for top (up to 20) nodes by allocations...   k-w1 has 4 allocations   k-w3 has 2 allocations   k-w2 has 1 allocations   k-master has 1 allocations Node with most allocations has 4; median is 1  Scanning for IPs that are allocated but not actually in use... Found 0 IPs that are allocated in IPAM but not actually in use. Scanning for IPs that are in use by a workload or node but not allocated in IPAM... Found 0 in-use IPs that are not in active IP pools. Found 0 in-use IPs that are in active IP pools but have no corresponding IPAM allocation.  Scanning for IPAM handles with no matching IPs... Found 0 handles with no matching IPs (and 8 handles with matches). Scanning for IPs with missing handle... Found 0 handles mentioned in blocks with no matching handle resource. Check complete; found 0 problems. <\/code><\/pre>\n<p>\u041f\u043e \u0432\u044b\u0432\u043e\u0434\u0443 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043a\u0430\u043a\u0438\u0435 IP \u0432\u043e\u043e\u0431\u0449\u0435 \u043a\u0443\u0434\u0430 \u0437\u0430\u0430\u043b\u043e\u0446\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c, \u043a\u0430\u043a\u0438\u043c\u0438 \u0434\u0435\u043b\u0430\u043c\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f. \u0410 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 BGP:<\/p>\n<pre><code class=\"sql\">user@k-w1:~$ sudo calicoctl node status Calico process is running.  IPv4 BGP status +--------------+-------------------+-------+------------+-------------+ | PEER ADDRESS |     PEER TYPE     | STATE |   SINCE    |    INFO     | +--------------+-------------------+-------+------------+-------------+ | 10.0.137.12  | node-to-node mesh | up    | 2025-08-01 | Established | | 10.0.137.112 | node-to-node mesh | up    | 2025-08-01 | Established | | 10.0.137.142 | node-to-node mesh | up    | 2025-08-01 | Established | +--------------+-------------------+-------+------------+-------------+  IPv6 BGP status<\/code><\/pre>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0<strong>calicoctl<\/strong>\u00a0\u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043d\u0438\u043c\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0443\u0441\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043a\u0430\u043a\u0443\u044e-\u0442\u043e, \u043d\u043e \u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e. \u0415\u0449\u0451 \u0440\u0430\u0437 &#8212; calicotl \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u043a\u0430\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f \u043d\u0430\u0434 \u0432\u0441\u0435\u043c \u044d\u0442\u0438\u043c \u0432\u043e\u0440\u043e\u0445\u043e\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432.<\/p>\n<h2>BGP \u0434\u043e Underlay!<\/h2>\n<p>\u041b\u0430\u0434\u043d\u043e, \u043a\u0430\u043a \u044f \u043d\u0438 \u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u043e\u0442\u0442\u044f\u0433\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0441\u044f \u0432 \u0434\u0435\u0442\u0430\u043b\u0438 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0442\u0443\u0442 \u0432\u0441\u0451 \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e &#8212; \u0443\u0436\u0435 \u043f\u043e\u0440\u0430 \u043a \u0444\u0438\u043d\u0438\u0448\u0443 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442\u044c. \u0412\u0441\u0451 \u0440\u0430\u0432\u043d\u043e &#8212; \u0447\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u043a\u043e\u043f\u0430\u0435\u0448\u044c, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0448\u044c \u0447\u0442\u043e \u043d\u0438\u0445\u0443\u044f \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0448\u044c. \u0410 \u044f \u043d\u0435 \u043f\u0435\u0440\u0444\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0441\u0442 &#8212; \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0435 \u0441\u0430\u0431\u0431\u043e\u0442\u0438\u0440\u0443\u044e.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0441\u0435\u0442\u0435\u0432\u0438\u043a\u043e\u0432\u0441\u043a\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e<\/p>\n<ol>\n<li>\n<p>\u041f\u043e\u043c\u0435\u043d\u044f\u0435\u043c \u043f\u0443\u043b\u044b \u0441 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0445 \/26 \u043d\u0430 \u0445\u043e\u0442\u044f \u0431\u044b \/24<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u043c \u043d\u0430\u0444\u0438\u0433 \u0442\u0443\u043d\u043d\u0435\u043b\u0438 \u0438 NAT, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u2026<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u043c BGP \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 ToR-\u043e\u0432 \u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u043b\u043e\u0441\u043a\u0443\u044e \u043c\u0430\u0440\u0448\u0440\u0442\u0443\u0437\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u0441\u0435\u0442\u044c<\/p>\n<\/li>\n<\/ol>\n<p>\u041a\u0430\u043a\u043e\u0439 \u0432 \u044d\u0442\u043e\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u043c\u044b\u0441\u043b? \u0414\u0430 \u0441\u043c\u044b\u0441\u043b \u043f\u0440\u043e\u0441\u0442\u043e\u0439 &#8212; \u044f \u0445\u043e\u0447\u0443 \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u044b \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e \u0432\u0438\u0434\u0435\u0442\u044c \u043f\u043e \u0441\u0435\u0442\u0438 \u0438\u0437 \u201c\u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e\u201d \u043c\u0438\u0440\u0430, \u0432\u043e\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u044d\u0442\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0439 \u044e\u0437\u0435\u0440\u0441\u043a\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b0e\/f82\/297\/b0ef8229702d9d059e583d0047ea3705.png\" width=\"1661\" height=\"835\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/b0e\/f82\/297\/b0ef8229702d9d059e583d0047ea3705.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b0e\/f82\/297\/b0ef8229702d9d059e583d0047ea3705.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441, \u043e\u0442\u0442\u0443\u0434\u0430 \u044f \u043c\u043e\u0433\u0443 \u0432\u0438\u0434\u0435\u0442\u044c \u0441\u0432\u043e\u0439 \u0448\u043b\u044e\u0437:<\/p>\n<pre><code class=\"lua\">user@Kuber-Puper-User:~$ ping 10.4.44.0 PING 10.4.44.0 (10.4.44.0) 56(84) bytes of data. 64 bytes from 10.4.44.0: icmp_seq=1 ttl=64 time=4.05 ms 64 bytes from 10.4.44.0: icmp_seq=2 ttl=64 time=3.11 ms<\/code><\/pre>\n<p>\u0438 \u0434\u0430\u0436\u0435 \u043d\u043e\u0434\u044b:<\/p>\n<pre><code class=\"lua\">user@Kuber-Puper-User:~$ ping 10.1.11.1 PING 10.1.11.1 (10.1.11.1) 56(84) bytes of data. 64 bytes from 10.1.11.1: icmp_seq=1 ttl=61 time=22.9 ms 64 bytes from 10.1.11.1: icmp_seq=2 ttl=61 time=19.0 ms ^C --- 10.1.11.1 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min\/avg\/max\/mdev = 18.951\/20.915\/22.880\/1.964 ms  user@Kuber-Puper-User:~$ ssh user@10.1.11.1 The authenticity of host '10.1.11.1 (10.1.11.1)' can't be established. ED25519 key fingerprint is SHA256:hiK+HiiCH4w8qfsES+m5m33FCm4+\/a+aE9Nko69S7Us. This key is not known by any other names Are you sure you want to continue connecting (yes\/no\/[fingerprint])? yes Warning: Permanently added '10.1.11.1' (ED25519) to the list of known hosts. user@10.1.11.1's password:   user@k-w1:~$ <\/code><\/pre>\n<p>\u041d\u043e \u043d\u0435 \u043f\u043e\u0434\u0438\u043a\u0438. \u0411\u043b\u0438\u043d, \u0437\u0430\u0431\u044b\u043b \u043a\u0430\u043a\u0438\u0435 \u0442\u0430\u043c IP-\u0430\u0434\u0440\u0435\u0441\u0430 \u0443 \u043f\u043e\u0434\u0438\u043a\u043e\u0432:<\/p>\n<pre><code class=\"lua\">user@k-w1:~$ kubectl get pods -A \\   -o custom-columns=\"NAMESPACE:.metadata.namespace,NAME:.metadata.name,IP:.status.podIP\" \\   --no-headers \\   | grep -E \"test-pod|calico-kube\" default       test-pod                                   10.66.122.194 kube-system   calico-kube-controllers-658d97c59c-kq2ld   10.66.207.66<\/code><\/pre>\n<p>\u0410, \u0442\u043e\u0447\u043d\u043e. \u0412 \u043e\u0431\u0449\u0435\u043c, \u043d\u0435 \u043f\u0438\u043d\u0433\u0430\u0435\u0442\u0441\u044f \u0441 \u044e\u0437\u0435\u0440\u0441\u043a\u043e\u0439 \u043d\u043e\u0434\u044b \u043d\u0438\u0447\u0435\u0433\u043e \ud83d\ude41<\/p>\n<pre><code class=\"lua\">user@Kuber-Puper-User:~$ ping 10.66.122.194 PING 10.66.122.194 (10.66.122.194) 56(84) bytes of data. From 10.4.44.0 icmp_seq=1 Destination Net Unreachable From 10.4.44.0 icmp_seq=2 Destination Net Unreachable ^C --- 10.66.122.194 ping statistics --- 2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 1002ms  user@Kuber-Puper-User:~$ ping 10.66.207.66 PING 10.66.207.66 (10.66.207.66) 56(84) bytes of data. From 10.4.44.0 icmp_seq=1 Destination Net Unreachable From 10.4.44.0 icmp_seq=2 Destination Net Unreachable ^C<\/code><\/pre>\n<p>\u0421\u0432\u0438\u0447 \u043d\u0430\u043c \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043a\u0443\u0434\u0430 \u0442\u0440\u0430\u0444\u0438\u043a \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c. \u0421\u0432\u0438\u0447 \u043d\u0435 \u0432\u0440\u0451\u0442, \u0432\u0441\u0451 \u0442\u0430\u043a \u0438 \u0435\u0441\u0442\u044c &#8212; \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430, \u043d\u0430\u043f\u043e\u043c\u043d\u044e, \u0432 \u0430\u043d\u0434\u0435\u0440\u043b\u0435\u0435 \u043d\u0435\u0442:<\/p>\n<pre><code class=\"lua\">Leaf-3#show ip ro 10.66.122.194   Leaf-3#show ip ro 10.66.207.66   #\u0412\u043e\u0442 \u0432\u0441\u0451 \u0447\u0442\u043e \u0435\u0441\u0442\u044c:  Leaf-3#show ip ro  Gateway of last resort is not set   O        10.0.11.0\/31 [110\/30] via 10.33.99.0, Ethernet1  O        10.1.11.0\/31 [110\/30] via 10.33.99.0, Ethernet1  O        10.2.22.0\/31 [110\/30] via 10.33.99.0, Ethernet1  C        10.3.33.0\/31 is directly connected, Ethernet2  C        10.4.44.0\/31 is directly connected, Ethernet3  O        10.11.99.0\/31 [110\/20] via 10.33.99.0, Ethernet1  O        10.22.99.0\/31 [110\/20] via 10.33.99.0, Ethernet1  C        10.33.99.0\/31 is directly connected, Ethernet1 <\/code><\/pre>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u043e\u0434\u0438\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e \u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0432\u0438\u0434\u0435\u0442\u044c \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430:<\/p>\n<pre><code class=\"lua\">user@k-w1:~$ kubectl exec -it test-pod -- sh  \/ # ping 10.66.207.66 PING 10.66.207.66 (10.66.207.66): 56 data bytes 64 bytes from 10.66.207.66: seq=0 ttl=62 time=0.822 ms 64 bytes from 10.66.207.66: seq=1 ttl=62 time=0.808 ms ^C --- 10.66.207.66 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min\/avg\/max = 0.808\/0.815\/0.822 ms<\/code><\/pre>\n<h3>\u041c\u0435\u043d\u044f\u0435\u043c \u043c\u0430\u0441\u043a\u0443 \u0434\u043b\u044f \u043f\u043e\u0434\u043e\u0432\u044b\u0445 \u0441\u0435\u0442\u0435\u0439<\/h3>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e IP-\u043f\u0443\u043b\u044b, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u0442\u0438\u043f\u0430\u00a0<a href=\"https:\/\/docs.tigera.io\/calico\/latest\/reference\/resources\/ippool\" rel=\"noopener noreferrer nofollow\">IPPools<\/a>, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a\u0438\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b:<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ kubectl get ippools NAME                  AGE default-ipv4-ippool   9d<\/code><\/pre>\n<p>\u041a\u0430\u043a\u043e\u0439-\u0442\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439, \u0430 \u043f\u043e\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 (\u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u043c \u043f\u043e \u0441\u0435\u043a\u0446\u0438\u0438 spec &#8212; \u0442\u0430\u043c \u0441\u0443\u0442\u044c):<\/p>\n<pre><code class=\"json\">user@K-Master:~$ kubectl get ippools -o json | jq '.items[0].spec' {   \"allowedUses\": [     \"Workload\",     \"Tunnel\"   ],   \"blockSize\": 26,   \"cidr\": \"10.66.0.0\/16\",   \"ipipMode\": \"Always\",   \"natOutgoing\": true,   \"nodeSelector\": \"all()\",   \"vxlanMode\": \"Never\" } <\/code><\/pre>\n<p>\u0410\u0433\u0430, \u043d\u0443 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 IPPool, \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043c\u0430\u0441\u043a\u0443 \u0432 \u043d\u0451\u043c \u0438 \u043a\u0430\u043a-\u0442\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u043e\u0434\u0430\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043f\u0443\u043b. \u0421\u043e\u0437\u0434\u0430\u043c \u0442\u0430\u043a\u043e\u0439 yaml-\u0438\u043a:<\/p>\n<pre><code class=\"yaml\"> apiVersion: projectcalico.org\/v3 kind: IPPool metadata:   name: new-ippool-24 spec:   cidr: 10.66.0.0\/16       blockSize: 24         # \u0422\u0443\u0442 \u043c\u0435\u043d\u044f\u0435\u043c \u0431\u043b\u043e\u043a \u0441\u0430\u0439\u0437   natOutgoing: true     # \u041f\u043e\u043a\u0430 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c NAT    ipipMode: Always      # \u041f\u043e\u043a\u0430 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0443\u043d\u043d\u0435\u043b\u0438    nodeSelector: all() <\/code><\/pre>\n<p>\u042d\u0442\u043e, \u043a\u0441\u0442\u0430\u0442\u0438, \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u0430\u0448 \u043f\u0435\u0440\u0432\u044b\u0439 \u041c\u0410\u041d\u0418\u0424\u0415\u0421\u0422 &#8212; \u0442\u043e \u0435\u0441\u0442\u044c \u0442\u043e\u0440\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0430\u043a\u0442 \u043a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u0430\u0434\u043c\u0438\u043d\u0430, \u043e\u043f\u043e\u0432\u0435\u0449\u0430\u044e\u0449\u0438\u0439 \u043d\u043e\u0434\u044b \u043e\u0431 \u0438\u0437\u0434\u0430\u043d\u0438\u0438 \u0437\u0430\u043a\u043e\u043d\u043e\u0432 \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e\u0439 \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 \u043e\u0431 \u043e\u0441\u043e\u0431\u043e \u0432\u0430\u0436\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0445 \u0432 \u043a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441\u0435 (<a href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/management\/\" rel=\"noopener noreferrer nofollow\">https:\/\/kubernetes.io\/docs\/concepts\/workloads\/management\/<\/a>)<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439, \u043e\u0431\u043e\u0433\u0430\u0442\u0438\u0432 \u0432\u044b\u0432\u043e\u0434 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u043e\u0439:<\/p>\n<p><code>kubectl apply -f NewWonderfulIPPool -v=6<\/code><\/p>\n<pre><code class=\"bash\">user@K-Master:~$ kubectl apply -f NewWonderfulIPPool -v=6 I0811 05:12:04.944183  517662 loader.go:395] Config loaded from file:  \/home\/user\/.kube\/config I0811 05:12:05.000107  517662 round_trippers.go:553] GET https:\/\/10.0.11.1:6443\/openapi\/v2?timeout=32s 200 OK in 54 milliseconds I0811 05:12:05.086473  517662 round_trippers.go:553] GET https:\/\/10.0.11.1:6443\/openapi\/v3?timeout=32s 200 OK in 2 milliseconds I0811 05:12:05.092453  517662 round_trippers.go:553] GET https:\/\/10.0.11.1:6443\/openapi\/v3\/apis\/crd.projectcalico.org\/v1?hash=F43628490716A6E186AC29F7729CFA9CA0B163FD10DE74A6B6E2BF9F05F3E2B12896E1B7EE2B009151FC11D1C697F0DB73483BF1AC7DD8C1E097532557302D58&amp;timeout=32s 200 OK in 4 milliseconds I0811 05:12:05.124300  517662 round_trippers.go:553] GET https:\/\/10.0.11.1:6443\/apis\/crd.projectcalico.org\/v1\/ippools\/new-wonderful-pool 200 OK in 4 milliseconds ippool.crd.projectcalico.org\/new-wonderful-pool unchanged I0811 05:12:05.128478  517662 apply.go:535] Running apply post-processor function <\/code><\/pre>\n<p>\u041e\u043a, \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u0431\u044b \u0432\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u0430\u0448 \u043f\u0443\u043b \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u043f\u0443\u043b\u043e\u0432:<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ kubectl get ippools NAME                  AGE default-ipv4-ippool   9d new-wonderful-pool    31s <\/code><\/pre>\n<p>\u041d\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u043e\u0432 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c, \u0431\u043b\u043e\u043a\u0438 \u0441\u0442\u0430\u0440\u044b\u0435:<\/p>\n<pre><code class=\"json\">user@K-Master:~$ kubectl get blockaffinities -o json | jq '.items[].spec' {   \"cidr\": \"10.66.73.128\/26\",   \"deleted\": \"false\",   \"node\": \"k-master\",   \"state\": \"confirmed\" } {   \"cidr\": \"10.66.207.64\/26\",   \"deleted\": \"false\",   \"node\": \"k-w1\",   \"state\": \"confirmed\" } {   \"cidr\": \"10.66.53.192\/26\",   \"deleted\": \"false\",   \"node\": \"k-w2\",   \"state\": \"confirmed\" } {   \"cidr\": \"10.66.122.192\/26\",   \"deleted\": \"false\",   \"node\": \"k-w3\",   \"state\": \"confirmed\" } <\/code><\/pre>\n<p>\u041d\u0443 \u0432 \u0446\u0435\u043b\u043e\u043c \u043a\u0443\u0431 \u0442\u0443\u0442 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043f\u0440\u0438\u0446\u043d\u0438\u043f\u043e\u043c &#8212; \u201c\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 &#8212; \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0439!\u201d, \u0437\u0430\u0447\u0435\u043c \u0447\u0442\u043e-\u0442\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u0438 \u0442\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442? \u0410\u0434\u0440\u0435\u0441\u0430 \u0432\u0441\u0451 \u0442\u0435 \u0436\u0435, \u043f\u0438\u043d\u0433\u0438 \u0445\u043e\u0434\u044f\u0442:<\/p>\n<pre><code class=\"lua\">user@k-w1:~$ kubectl get pods -A \\   -o custom-columns=\"NAMESPACE:.metadata.namespace,NAME:.metadata.name,IP:.status.podIP\" \\   --no-headers \\   | grep -E \"test-pod|calico-kube\"  default       test-pod                                   10.66.122.194 kube-system   calico-kube-controllers-658d97c59c-kq2ld   10.66.207.66 <\/code><\/pre>\n<p>\u041f\u043e \u0441\u043e\u0432\u0435\u0442\u0443 \u0438\u0437 \u0433\u0443\u0433\u043b\u0430 \u043c\u043d\u0435 \u043d\u0430\u0434\u043e \u0432 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043f\u0443\u043b\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00a0<code>\u0414\u0438\u0437\u0430\u0431\u043b\u0435\u0434 = True<\/code>, \u0432\u043e\u0442 \u0442\u0430\u043a:\u00a0<code>kubectl patch ippool default-ipv4-ippool --type='merge' -p '{\"spec\":{\"disabled\":true}}'<\/code>\u00a0\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u043f\u0443\u043b \u0431\u0443\u0434\u0435\u0442 \u201c\u043f\u0440\u043e\u043f\u0430\u0442\u0447\u0435\u043d\u201d \u043f\u043e \u043b\u043e\u0433\u0438\u043a\u0435 \u043e\u043d \u0431\u043e\u043b\u0435\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f<\/p>\n<p>\u041d\u0443 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0443\u0431\u044c\u0451\u043c \u043f\u043e\u0434\u00a0<strong>test-pod<\/strong>, \u0441\u043e\u0437\u0430\u0434\u0438\u043c \u0435\u0433\u043e \u0437\u0430\u043d\u043e\u0433\u043e \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f:<\/p>\n<pre><code class=\"lua\">user@k-w1:~$ kubectl delete pod test-pod pod \"test-pod\" deleted  user@k-w1:~$ kubectl run test-pod --image=alpine --restart=Never --rm -it -- ip a | grep inet     inet 127.0.0.1\/8 scope host lo     inet6 ::1\/128 scope host      inet 10.66.53.196\/32 scope global eth0     inet6 fe80::4490:81ff:fecd:4c55\/64 scope link  <\/code><\/pre>\n<p>\u041f\u043e\u043a\u0430 \u0432\u044b\u0434\u0430\u043b IP \u0438\u0437\u00a0\u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430\u00a0\u041e\u043a, \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u043c \u043a\u0430\u0440\u0434\u0438\u043d\u0430\u043b\u044c\u043d\u043e \u0438 \u0433\u0440\u043e\u0445\u043d\u0435\u043c \u043d\u0430\u0448 \u043a\u0430\u043b\u0435\u043a\u043e-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440:<\/p>\n<pre><code class=\"lua\"># \u0433\u0434 \u043e\u043d \u0442\u0430\u043c user@K-Master:~$ kubectl get pods -n kube-system | grep calico calico-kube-controllers-658d97c59c-kq2ld   1\/1     Running   0          10d calico-node-b2rgf                          1\/1     Running   0          10d calico-node-lfbfg                          1\/1     Running   0          10d calico-node-ncqcp                          1\/1     Running   0          10d calico-node-wpw78                          1\/1     Running   0          10d user@K-Master:~$  user@K-Master:~$  user@K-Master:~$ kubectl delete pod calico-kube-controllers-658d97c59c-kq2ld Error from server (NotFound): pods \"calico-kube-controllers-658d97c59c-kq2ld\" not found user@K-Master:~$ kubectl delete pod calico-kube-controllers-658d97c59c-kq2ld -n kube-system pod \"calico-kube-controllers-658d97c59c-kq2ld\" deleted <\/code><\/pre>\n<p>\u0427\u0442\u043e \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u0441\u043b\u0435 \u0441\u043c\u0435\u0440\u0442\u0438 \u043e\u043d \u0441\u0440\u0430\u0437\u0443 \u043e\u0436\u0438\u043b:<\/p>\n<pre><code class=\"bash\">user@K-Master:~$ kubectl get pods -n kube-system | grep calico-kube-controllers calico-kube-controllers-658d97c59c-pk8wx   1\/1     Running   0          29s <\/code><\/pre>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0438\u0445\u0443\u044f \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e, \u0432\u0435\u0434\u044c \u043d\u0430\u0448 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434, \u044d\u0442\u043e \u0446\u0435\u043b\u044b\u0439\u00a0<a href=\"https:\/\/blog.rpomazanov.com\/posts\/kube-101\/#https:\/\/kubernetes.io\/docs\/concepts\/workloads\/controllers\/deployment\/\" rel=\"noopener noreferrer nofollow\">Deployment<\/a>:<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ kubectl get deployments -n kube-system NAME                      READY   UP-TO-DATE   AVAILABLE   AGE calico-kube-controllers   1\/1     1            1           10d coredns                   2\/2     2            2           13d <\/code><\/pre>\n<p>\u0412\u0438\u0434\u0438\u0442\u0435, \u0438\u0445 \u0442\u0443\u0442 \u0434\u0432\u0430 \u0442\u0430\u043a\u0438\u0445 &#8212; \u0448\u043e\u0442\u043e \u043f\u0440\u043e DNS, \u0438 \u043d\u0430\u0448 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440. \u0415\u0441\u043b\u0438 \u043e\u043e\u043e\u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0430\u0442\u043a\u043e, \u0434\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442 &#8212; \u044d\u0442\u043e \u043d\u0435\u043a\u0430\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f \u043d\u0430\u0434 \u043f\u043e\u0434\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0445 \u0436\u0438\u0437\u043d\u0435\u043d\u044b\u043c \u0446\u0438\u043a\u043b\u043e\u043c\u2026 \u042d\u043c\u2026 \u0432\u0435\u0440\u043d\u0435\u0435 \u0434\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442 &#8212; \u044d\u0442\u043e \u0430\u0431\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043d\u0430\u0434\u00a0<a href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/controllers\/replicaset\/\" rel=\"noopener noreferrer nofollow\">ReplicaSet<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0435\u0439 \u043d\u0430\u0434 \u043f\u043e\u0434\u0430\u043c\u0438. \u042f \u0433\u043e\u0432\u043e\u0440\u044e \u043a\u0443\u0431\u0443 &#8212; \u0445\u043e\u0447\u0443 \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0451 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0436\u0438\u043b\u043e \u0432 \u0432\u0438\u0434\u0435 10-\u0442\u0438 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 (\u0432\u0435\u0434\u044c \u043e\u0434\u043d\u043e \u0438\u0437 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u043a\u0443\u0431\u0435\u0440\u0430 &#8212; \u044d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c) &#8212; \u0438 ReplicaSet \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442. \u0410 \u0434\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442 \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0441\u0435\u0442\u043e\u043c (\u0433\u0430\u0440\u043c\u043e\u043d\u0438\u0447\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0441\u0435\u043c \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u043c \u0446\u0438\u043a\u043b\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f). \u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u041a\u043e-\u041a\u043e \u043f\u0438\u0446\u0446\u044b \u0438 \u0434\u0435\u043b\u0430\u0435\u0442\u0435 \u043f\u0438\u0446\u0446\u0443 \u043c\u0430\u0440\u0433\u0430\u0440\u0438\u0442\u0443, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u043f\u0435\u043a\u0430\u0440\u0438-\u043f\u043e\u0434\u044b &#8212; \u043f\u043e\u0442\u043e\u043a \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439, \u043c\u0430\u0440\u0433\u0430\u0440\u0438\u0442 \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u043a\u0430\u0440\u0435\u0439 \u0443 \u0432\u0430\u0441 10. \u041d\u0443\u0436\u0435\u043d \u0431\u0440\u0438\u0433\u0430\u0434\u0438\u0440-\u043f\u0435\u043a\u0430\u0440\u044c (replica set), \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0435\u0434\u0438\u0442\u044c &#8212; \u0435\u0441\u043b\u0438 \u043e\u0434\u0438\u043d \u043f\u0435\u043a\u0430\u0440\u044c \u0441\u0433\u043e\u0440\u0435\u043b \u0432 \u043f\u0435\u0447\u0438, \u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0443\u0442\u043e\u043d\u0443\u043b \u0432 \u0442\u043e\u043c\u0430\u0442\u043d\u043e\u0439 \u043f\u0430\u0441\u0442\u0435 &#8212; \u043d\u0430\u0434\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0445 \u0434\u0432\u0443\u0445 \u043f\u0435\u043a\u0430\u0440\u0435\u0439 \u0438\u0437 \u0436\u0451\u043b\u0442\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u0431\u0443\u0441\u0430. \u0422\u0443\u0442 \u0432\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0443\u043c\u0430\u0441\u0448\u0435\u0434\u0448\u0438\u0439 \u0432\u0437\u044a\u0435\u043e\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0439 \u0448\u0435\u0444-\u043f\u043e\u0432\u0430\u0440 \u0441\u043e \u0441\u0432\u043e\u0435\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0433\u0435\u043d\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u0434\u0435\u0435\u0439 \u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 &#8212; \u201c\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0435\u043f\u0435\u0440\u043e\u043d\u043d\u0438! \u0412\u043e\u0442 \u0440\u0435\u0446\u0435\u043f\u0442\u201d \u0438 \u0443\u0431\u0435\u0433\u0430\u0435\u0442 \u0432\u043e \u0442\u044c\u043c\u0443. \u0412\u0441\u0451 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043d\u0430\u0434\u043e \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 \u041f\u0435\u043f\u0435\u0440\u043e\u043d\u043d\u0438 &#8212; \u043d\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0430\u0440\u0433\u0430\u0440\u0438\u0442\u044b \u0432\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 &#8212; \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u0436\u0434\u0443\u0442, \u0434\u0430 \u0438 \u043f\u0435\u043a\u0430\u0440\u0438 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0435\u043f\u0435\u0440\u043e\u043d\u0438, \u043a\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0442\u0443\u0442 \u043d\u0430\u0434\u043e \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e &#8212; \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0434\u0438\u043d \u043f\u0435\u043a\u0430\u0440\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043f\u0435\u0447\u044c \u043f\u0435\u043f\u0435\u0440\u043e\u043d\u043d\u0438, \u043f\u043e\u0442\u043e\u043c \u0432\u0442\u043e\u0440\u043e\u0439 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435 (rolling update). \u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u0438 \u043f\u0438\u0446\u0435\u0440\u0440\u0438\u0438 \u043f\u0440\u043e\u0447\u0443\u0445\u0430\u043b\u0438 \u0447\u0442\u043e \u0432 \u0440\u0435\u0446\u0435\u043f\u0442 \u043f\u0435\u043f\u0435\u0440\u043e\u043d\u0438 \u0448\u0435\u0444-\u043f\u043e\u0432\u0430\u0440 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0433\u043e\u0432\u043d\u043e \u0438 \u043d\u0430\u0447\u0430\u043b\u0438 \u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c\u0441\u044f &#8212; \u043d\u0430\u0434\u043e \u043e\u0442\u043a\u0430\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043d\u0430 \u043c\u0430\u0440\u0433\u0430\u0440\u0438\u0442\u0443 (rollback) &#8212; \u0432\u0441\u0435\u043c \u044d\u0442\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c Deployment. \u0422\u0430\u043a \u0447\u0442\u043e \u0442\u0430\u043c \u0441 \u043d\u0430\u0448\u0435\u0439\u00a0<s>\u043f\u0438\u0446\u0446\u0435\u0439<\/s>\u00a0\u043a\u0430\u043b\u0435\u043a\u043e\u0439-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c? \u0412\u043e\u0442 \u0442\u0430\u043a \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0435\u0433\u043e Deployment:<\/p>\n<pre><code class=\"yaml\">user@K-Master:~$ kubectl describe deployment calico-kube-controllers -n kube-system Name:               calico-kube-controllers Namespace:          kube-system CreationTimestamp:  Fri, 01 Aug 2025 10:57:23 +0000 Labels:             k8s-app=calico-kube-controllers Annotations:        deployment.kubernetes.io\/revision: 1 Selector:           k8s-app=calico-kube-controllers Replicas:           1 desired | 1 updated | 1 total | 1 available | 0 unavailable StrategyType:       Recreate MinReadySeconds:    0 Pod Template:   Labels:           k8s-app=calico-kube-controllers   Service Account:  calico-kube-controllers   Containers:    calico-kube-controllers:     Image:      docker.io\/calico\/kube-controllers:v3.25.0     Port:       &lt;none&gt;     Host Port:  &lt;none&gt;     Liveness:   exec [\/usr\/bin\/check-status -l] delay=10s timeout=10s period=10s #success=1 #failure=6     Readiness:  exec [\/usr\/bin\/check-status -r] delay=0s timeout=1s period=10s #success=1 #failure=3     Environment:       ENABLED_CONTROLLERS:  node       DATASTORE_TYPE:       kubernetes     Mounts:                 &lt;none&gt;   Volumes:                  &lt;none&gt;   Priority Class Name:      system-cluster-critical Conditions:   Type           Status  Reason   ----           ------  ------   Progressing    True    NewReplicaSetAvailable   Available      True    MinimumReplicasAvailable OldReplicaSets:  &lt;none&gt; NewReplicaSet:   calico-kube-controllers-658d97c59c (1\/1 replicas created) Events:          &lt;none&gt; <\/code><\/pre>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u043a\u0430\u043a \u0431\u044b \u043c\u044b \u043d\u0435 \u0441\u0442\u0430\u0440\u0430\u043b\u0438\u0441\u044c \u0443\u0431\u0438\u0442\u044c \u043f\u043e\u0434\u044b, \u043a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0445 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0434\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0440\u0430\u0432\u043d\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u00a0<code>replicas<\/code>\u00a0\u041e\u043a, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043c\u044b \u043f\u0435\u0440\u0435\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0435\u0449\u0451 \u0440\u0430\u0437 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u0434:<\/p>\n<pre><code class=\"lua\">user@k-w1:~$ kubectl run test-pod --image=alpine --restart=Never --rm -it -- ip a | grep inet     inet 127.0.0.1\/8 scope host lo     inet6 ::1\/128 scope host      inet 10.66.122.197\/32 scope global eth0     inet6 fe80::487c:aaff:fe2b:3874\/64 scope link  <\/code><\/pre>\n<p>\u0412\u0441\u0451 \u043f\u043e \u0441\u0442\u0430\u0440\u0435\u043d\u044c\u043a\u043e\u043c\u0443,\u00a0<code>kubectl get blockaffinities -o json | jq '.items[].spec'<\/code>\u00a0\u0432\u044b\u0434\u0430\u0451\u0442 \u0432\u0441\u0451 \u0442\u0435\u0436\u0435 \u043f\u0443\u043b\u044b. \u0434\u0430\u0436\u0435 \u0441\u0430\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0436\u0438\u0432\u0451\u0442 \u0432 \u0441\u0442\u0430\u0440\u043e\u043c \u043f\u0443\u043b\u0435 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440:<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ kubectl get pod -n kube-system -o wide | grep calico-kube-controllers calico-kube-controllers-658d97c59c-pk8wx   1\/1     Running   0          73m   10.66.53.197   k-w2       &lt;none&gt;           &lt;none&gt; <\/code><\/pre>\n<p>\u0425\u043c\u2026 \u041d\u0443 \u043e\u043a, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0439 \u043f\u0443\u043b \u0432\u043e\u043e\u0431\u0449\u0435<\/p>\n<pre><code class=\"lua\">new-wonderful-pool    24h user@k-w1:~$ kubectl delete ippool default-ipv4-ippool ippool.crd.projectcalico.org \"default-ipv4-ippool\" deleted user@k-w1:~$  user@k-w1:~$ kubectl get ippool NAME                 AGE new-wonderful-pool   24h <\/code><\/pre>\n<p>\u041d\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442, \u0431\u043b\u043e\u043a\u0438 \u0432\u0441\u0435 \u0442\u0435 \u0436\u0435:<\/p>\n<pre><code class=\"json\">user@k-w1:~$ kubectl get blockaffinities -o json | jq '.items[].spec' {   \"cidr\": \"10.66.73.128\/26\",   \"deleted\": \"false\",   \"node\": \"k-master\",   \"state\": \"confirmed\" } {   \"cidr\": \"10.66.207.64\/26\",   \"deleted\": \"false\",   \"node\": \"k-w1\",   \"state\": \"confirmed\" } {   \"cidr\": \"10.66.53.192\/26\",   \"deleted\": \"false\",   \"node\": \"k-w2\",   \"state\": \"confirmed\" } {   \"cidr\": \"10.66.122.192\/26\",   \"deleted\": \"false\",   \"node\": \"k-w3\",   \"state\": \"confirmed\" <\/code><\/pre>\n<p>\u041d\u043e \u0432\u043e\u0442 \u0443 \u0431\u043b\u043e\u043a\u043e\u0432 \u044f\u0432\u043d\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u043c\u0435\u0442\u043a\u0430, \u0447\u0442\u043e \u043e\u043d\u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u044b &#8212;\u00a0<code>\"deleted\": \"false\",<\/code>\u00a0\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438\u0445 \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c? \u041d\u0443 \u043e\u043a:<\/p>\n<pre><code class=\"lua\">user@k-w1:~$ kubectl delete blockaffinities --all -v=6 blockaffinity.crd.projectcalico.org \"k-master-10-66-73-128-26\" deleted blockaffinity.crd.projectcalico.org \"k-w1-10-66-207-64-26\" deleted blockaffinity.crd.projectcalico.org \"k-w2-10-66-53-192-26\" deleted blockaffinity.crd.projectcalico.org \"k-w3-10-66-122-192-26\" deleted <\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u044f \u0445\u043e\u0447\u0443 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0435\u0441\u0442 &#8212; \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u043b\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0434\u0430\u043c\u0438, \u043f\u044b\u0442\u0430\u044e\u0441\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u043d\u0430 \u043f\u043e\u0434\u0430\u0445 \u0430\u0434\u0440\u0435\u0441\u0430, \u043d\u043e \u0432\u0438\u0436\u0443 \u0447\u0442\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 CNI \u0443 \u043c\u0435\u043d\u044f \u0443\u0448\u0451\u043b \u043a\u0443\u0434\u0430-\u0442\u043e \u043f\u043e\u0433\u0443\u043b\u044f\u0442\u044c \u0438 \u0437\u0430\u043a\u0440\u0430\u0448\u043b\u0443\u043f\u0438\u043b\u0441\u044f<\/p>\n<pre><code class=\"lua\">user@k-w1:~$ kubectl get pods -o wide | grep calico-kube-controllers NAMESPACE     NAME                                       READY   STATUS             RESTARTS        AGE   IP             NODE       NOMINATED NODE   READINESS GATES kube-system   calico-kube-controllers-658d97c59c-kxtqc   0\/1     CrashLoopBackOff   325 (53s ago)   21h   10.66.53.202   k-w2       &lt;none&gt;           &lt;none&gt; <\/code><\/pre>\n<p>\u0412 \u043b\u043e\u0433\u0430\u0445 \u043e\u0441\u043e\u0431\u043e \u043d\u0438\u0447\u0435\u0433\u043e\u00a0<strong>\u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0433\u043e<\/strong>\u00a0\u043d\u0435\u0442 &#8212; \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0438\u0436\u043d\u043e \u0447\u0442\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u0441 kubeapi, \u043f\u0440\u0430\u0432\u0434\u0430 \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043e\u0442\u043a\u0443\u0434\u0430 \u043e\u043d \u0431\u0435\u0440\u0451\u0442 \u0442\u0430\u043a\u043e\u0439 IP \u0434\u043b\u044f \u043a\u0443\u0431\u0435-\u0430\u043f\u0438,\u043d\u043e \u0434\u0435\u043b\u043e \u0435\u0433\u043e<\/p>\n<pre><code class=\"lua\">user@k-w1:~$ kubectl logs -n kube-system -p calico-kube-controllers-658d97c59c-kxtqc 2025-08-13 03:52:49.481 [INFO][1] main.go 107: Loaded configuration from environment config=&amp;config.Config{LogLevel:\"info\", WorkloadEndpointWorkers:1, ProfileWorkers:1, PolicyWorkers:1, NodeWorkers:1, Kubeconfig:\"\", DatastoreType:\"kubernetes\"} W0813 03:52:49.483540       1 client_config.go:617] Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work. 2025-08-13 03:52:49.483 [INFO][1] main.go 131: Ensuring Calico datastore is initialized 2025-08-13 03:53:19.485 [ERROR][1] client.go 290: Error getting cluster information config ClusterInformation=\"default\" error=Get \"https:\/\/10.96.0.1:443\/apis\/crd.projectcalico.org\/v1\/clusterinformations\/default\": dial tcp 10.96.0.1:443: i\/o timeout 2025-08-13 03:53:19.485 [INFO][1] main.go 138: Failed to initialize datastore error=Get \"https:\/\/10.96.0.1:443\/apis\/crd.projectcalico.org\/v1\/clusterinformations\/default\": dial tcp 10.96.0.1:443: i\/o timeout 2025-08-13 03:53:49.509 [ERROR][1] client.go 290: Error getting cluster information config ClusterInformation=\"default\" error=Get \"https:\/\/10.96.0.1:443\/apis\/crd.projectcalico.org\/v1\/clusterinformations\/default\": context deadline exceeded 2025-08-13 03:53:49.509 [INFO][1] main.go 138: Failed to initialize datastore error=Get \"https:\/\/10.96.0.1:443\/apis\/crd.projectcalico.org\/v1\/clusterinformations\/default\": context deadline exceeded 2025-08-13 03:53:49.510 [FATAL][1] main.go 151: Failed to initialize Calico datastore <\/code><\/pre>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u0442\u0443\u0442 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c, \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u0433\u0440\u043e\u0445\u043d\u0443\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0440\u0430\u0437 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f:<\/p>\n<pre><code class=\"lua\">user@k-w1:~$ kubectl delete pod calico-kube-controllers-658d97c59c-kxtqc -n kube-system pod \"calico-kube-controllers-658d97c59c-kxtqc\" delete<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c? \u0412\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0435\u043f\u0435\u0440\u044c? \u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0434\u0430, \u043f\u043e\u0434 \u0436\u0438\u0432:<\/p>\n<pre><code class=\"lua\">user@k-w1:~$ kubectl get pods -n kube-system NAME                                       READY   STATUS    RESTARTS   AGE calico-kube-controllers-658d97c59c-sjk2n   0\/1     Running   0          23s <\/code><\/pre>\n<p>\u0410 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 &#8212; \u0445\u0443\u0439, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0<code>0\/1<\/code>\u00a0\u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u0435\u00a0<code>READY<\/code>. \u0430 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u0438\u0434\u0438\u043c \u0447\u0442\u043e \u043f\u043e\u0434-\u0440\u0435\u0441\u0442\u0430\u0440\u0442\u0438\u0442\u0441\u044f:<\/p>\n<pre><code class=\"lua\">NAME                                       READY   STATUS    RESTARTS        AGE calico-kube-controllers-658d97c59c-sjk2n   0\/1     Running   7 (5m34s ago)   15m<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u0438\u043a\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439\u00a0<code>kubectl describe pod calico-kube-controllers-658d97c59c-sjk2n -n kube-system<\/code>\u00a0\u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432\u0441\u044f\u043a\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a\u0438\u0435:<\/p>\n<pre><code class=\"lua\">Events: Type     Reason     Age                     From               Message  Normal   Scheduled  14m                     default-scheduler  Successfully assigned kube-system\/calico-kube-controllers-658d97c59c-sjk2n to k-w3 Warning  Unhealthy  13m (x3 over 13m)       kubelet            Readiness probe failed: Error initializing datastore: Get \"https:\/\/10.96.0.1:443\/apis\/crd.projectcalico.org\/v1\/clusterinformations\/default\": dial tcp 10.96.0.1:443: i\/o timeout Warning  Unhealthy  13m (x3 over 13m)       kubelet            Liveness probe failed: Error initializing datastore: Get \"https:\/\/10.96.0.1:443\/apis\/crd.projectcalico.org\/v1\/clusterinformations\/default\": dial tcp 10.96.0.1:443: i\/o timeout Normal   Pulled     13m (x2 over 14m)       kubelet            Container image \"docker.io\/calico\/kube-controllers:v3.25.0\" already present on machine Normal   Created    13m (x2 over 14m)       kubelet            Created container calico-kube-controllers Normal   Started    13m (x2 over 14m)       kubelet            Started container calico-kube-controllers Warning  Unhealthy  13m (x9 over 14m)       kubelet            Readiness probe failed: initialized to false Warning  Unhealthy  12m (x3 over 13m)       kubelet            Liveness probe failed: initialized to false Normal   Killing    12m                     kubelet            Container calico-kube-controllers failed liveness probe, will be restarted Warning  BackOff    4m13s (x24 over 9m55s)  kubelet            Back-off restarting failed container calico-kube-controllers in pod calico-kube-controllers-658d97c59c-sjk2n_kube-system(fdf19539-da56-4c81-83bb-849d6da081eb <\/code><\/pre>\n<p>\u041d\u0443 \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u0434 \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u0438\u0442\u0441\u044f \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0431\u0430 \u043d\u0430 \u0436\u0438\u0432\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 (\u043f\u043e-\u0440\u0443\u0441\u0441\u043a\u0438 &#8212;\u00a0<a href=\"https:\/\/kubernetes.io\/docs\/tasks\/configure-pod-container\/configure-liveness-readiness-startup-probes\/\" rel=\"noopener noreferrer nofollow\">liveness probe<\/a>). \u041f\u0440\u043e\u0431\u0430 \u043d\u0430 \u0436\u0438\u0432\u043e\u0441\u0442\u044c &#8212; \u044d\u0442\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u043a \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u043d\u0435\u043a\u0438\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u0438 \u043f\u043e\u0434 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 &#8212; \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043d\u0430 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a (readiness probe). \u0412 describe \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u043e\u0434\u0430 \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u0435\u0449\u0451:<\/p>\n<pre><code>Liveness:       exec [\/usr\/bin\/check-status -l] delay=10s timeout=10s period=10s #success=1 #failure=6 Readiness:      exec [\/usr\/bin\/check-status -r] delay=0s timeout=1s period=10s #success=1 #failure=3 <\/code><\/pre>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0431 \u043a\u0443\u0431 \u043f\u043e\u043d\u044f\u043b \u0447\u0442\u043e \u0441 \u043f\u043e\u0434\u043e\u043c \u0432\u0441\u0451 \u043e\u043a &#8212; \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u00a0<code>\/usr\/bin\/check-status -l<\/code>\u00a0\u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c\u0441\u044f \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a (\u043f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u044e \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043a\u043e\u0434 0), \u043d\u043e \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u0438 \u0438\u0437 \u043b\u043e\u0433\u043e\u0432 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u043a\u00a0<code>Get \"<\/code><a href=\"https:\/\/10.96.0.1:443\/apis\/crd.projectcalico.org\/v1\/clusterinformations\/default\" rel=\"noopener noreferrer nofollow\"><code>https:\/\/10.96.0.1:443\/apis\/crd.projectcalico.org\/v1\/clusterinformations\/default<\/code><\/a><code>\"<\/code>\u00a0\u0427\u0442\u043e \u0436 \u044d\u0442\u043e \u0437\u0430 \u0430\u0434\u0440\u0435\u0441-\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438? \u0418\u0437\u00a0<a href=\"https:\/\/kubernetes.io\/docs\/tasks\/network\/extend-service-ip-ranges\/\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u043e\u0432 \u0441\u0430\u043c\u043e\u0433\u043e \u043a\u0443\u0431\u0430<\/a>\u00a0\u043f\u0440\u043e\u0446\u0438\u0442\u0438\u0440\u0443\u044e \u0438 \u0440\u0430\u0437\u043e\u0439\u0434\u0451\u043c\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u043c &#8212;\u00a0<code>The default Service, in this case, uses the ClusterIP 10.96.0.1<\/code>, \u0430 \u0447\u0442\u043e \u0437\u0430\u00a0<strong><em>default Service<\/em><\/strong>? &#8212;\u00a0<code>The well-known kubernetes Service, that exposes the kube-apiserver endpoint to the Pods<\/code>. \u0412 \u043e\u0431\u0449\u0435\u043c \u0435\u0441\u043b\u0438 \u043a \u0441\u0443\u0442\u0438, \u0442\u043e 10.96.0.1 &#8212; \u044d\u0442\u043e \u0430\u0434\u0440\u0435\u0441, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u043e\u0434\u044f\u0442 \u0432\u0441\u0435 \u043f\u043e\u0434\u0438\u043a\u0438 \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u043d\u0430\u0448\u0438\u043c \u043c\u043e\u0437\u0433\u043e\u043c \u0432\u0441\u0435\u0433\u043e \u043a\u0443\u0431\u0430 &#8212; kube-api, ClusterIP &#8212; \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e IP \u0448\u0430\u0440\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 \u0432\u0435\u0441\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u043c\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0438 \u0432\u0441\u0435 \u0433\u043e\u0442\u043e\u0432\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430 \u044d\u0442\u043e\u0442 IP. \u041a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430 \u044d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u0434\u0435\u043b\u043e \u043e\u0447\u0435\u043d\u044c \u043c\u0443\u0442\u043d\u043e\u0435 \u0438 \u0435\u0441\u043b\u0438 \u043d\u0430\u0447\u043d\u0443 \u0442\u0443\u0434\u0430 \u0437\u0430\u043a\u0430\u043f\u044b\u0432\u0430\u0442\u044c\u0441\u044f, \u0442\u043e \u0435\u0449\u0451 \u043d\u0430 \u043f\u0430\u0440\u0443 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u043b\u0435\u0442 \u043d\u0430\u0434\u043e \u043e\u0442\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0432\u044b\u043f\u0443\u0441\u043a \u044d\u0442\u043e\u0433\u043e \u0447\u0443\u0434\u0435\u0441\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0437\u0436\u0435 (\u043d\u0435\u0442), \u0432 \u0446\u0435\u043b\u043e\u043c \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0447\u0442\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0439 \u0437\u0430 \u0441\u0435\u0442\u044c &#8212; \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0430\u044f \u0441\u0435\u0442\u044c, \u0440\u0430\u0431\u043e\u0442\u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440. \u041d\u043e \u0442\u043e\u0447\u043d\u043e \u043b\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u043b dataplane? \u0427\u0442\u043e \u0442\u0430\u043c \u0441 \u0441\u0430\u043c\u0438\u043c\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u043c\u0438 \u043d\u043e\u0434\u0430\u043c\u0438? \u0410 \u0442\u0430\u043c \u0442\u043e\u0436\u0435 \u0447\u0451\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e:<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ kubectl get pods -n kube-system -o wide | grep calico calico-kube-controllers-658d97c59c-jz69l   0\/1     CrashLoopBackOff   16 (70s ago)   49m   10.66.217.0    k-w2       &lt;none&gt;           &lt;none&gt; calico-node-5k5bk                          0\/1     Running            0              46h   10.1.11.1      k-w1       &lt;none&gt;           &lt;none&gt; calico-node-cr77p                          0\/1     Running            0              46h   10.2.22.1      k-w2       &lt;none&gt;           &lt;none&gt; calico-node-mvrbb                          0\/1     Running            0              46h   10.0.11.1      k-master   &lt;none&gt;           &lt;none&gt; calico-node-w9m5m                          0\/1     Running            0              46h   10.3.33.1      k-w3       &lt;none&gt;           &lt;none&gt; <\/code><\/pre>\n<p>\u041d\u0438\u043a\u0442\u043e \u043d\u0438 \u043a \u0447\u0435\u043c\u0443 \u043d\u0435 \u0433\u043e\u0442\u043e\u0432 \ud83d\ude41 \u0412 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043f\u043e\u0434\u0438\u043a\u0430 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442:<\/p>\n<pre><code class=\"lua\">Events:   Type     Reason     Age                     From     Message   ----     ------     ----                    ----     -------   Warning  Unhealthy  4m6s (x18714 over 46h)  kubelet  (combined from similar events): Readiness probe failed: 2025-08-14 04:29:04.978 [INFO][2834665] confd\/health.go 180: Number of node(s) with BGP peering established = 3 calico\/node is not ready: felix is not ready: readiness probe reporting 503 <\/code><\/pre>\n<p>\u041a\u0430\u043a-\u0431\u0443\u0434\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u0441 BGP, \u043d\u043e \u043d\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0433\u0440\u043e\u0445\u043d\u0435\u043c \u0438\u0445 \u0432\u0441\u0435\u0445 \u043e\u0442 \u0433\u0440\u0435\u0445\u0430 \u043f\u043e\u0434\u0430\u043b\u044c\u0448\u0435, \u0438 \u043e\u043d\u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f &#8212; \u0442\u0430\u043a \u043a\u0430\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f\u00a0<a href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/controllers\/daemonset\/\" rel=\"noopener noreferrer nofollow\">\u0414\u0435\u043c\u043e\u043d\u0421\u0435\u0442\u043e\u043c<\/a>\u00a0&#8212; \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u0432\u0438\u0434 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0432 \u043e\u0434\u043d\u043e\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u044f\u0440\u0435 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u043e\u0434\u0435. \u0418 \u043a\u0443\u0431 \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u044d\u0442\u0438\u043c. \u0412\u043e\u0442 \u0442\u0430\u043a \u043c\u044b \u0438\u0445 \u0438 \u0443\u0431\u044c\u0451\u043c, \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0431\u0435\u0440\u0435\u043c \u0432\u0441\u0435 \u043f\u043e\u0434\u044b \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0447\u043a\u0430, \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0430\u044f \u043e \u0442\u043e\u043c \u0447\u0442\u043e \u043e\u043d\u0438 &#8212; \u043a\u0430\u043b\u0435\u043a\u043e-\u043d\u043e\u0434\u044b:<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ kubectl delete pods -n kube-system -l k8s-app=calico-node pod \"calico-node-5k5bk\" deleted pod \"calico-node-cr77p\" deleted pod \"calico-node-mvrbb\" deleted pod \"calico-node-w9m5m\" deleted <\/code><\/pre>\n<p>TLDR &#8212; \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u043b\u043e. \u041d\u043e\u0434\u044b \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c, \u043d\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e\u0441\u0442\u0438 \u043e\u0441\u043e\u0431\u043e \u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \ud83d\ude41 \u0422\u0443\u0442 \u044f \u043f\u0441\u0438\u0445\u0430\u043d\u0443\u043b \u0438 \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0435\u0445\u0430\u0442\u044c \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 &#8212; \u043a\u0430\u043a-\u0442\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u044d\u043c\u043e\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u043b \u044f \u0442\u0440\u0430\u0447\u0443 \u043d\u0430, \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 &#8212; \u0441\u043c\u0435\u043d\u0438\u0442\u044c \u043c\u0430\u0441\u043a\u0443 \u0434\u043b\u044f \u043f\u043e\u0434\u043e\u0432\u044b\u0445 CIDR-\u043e\u0432. \u041f\u043e\u043a\u0430 \u0435\u0445\u0430\u043b \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0446\u0435\u043f\u043e\u0447\u043a\u0430 &#8212; \u0441\u0435\u0442\u044c \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u043a\u043e\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440; \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u0441 Kube API; \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043a\u0430\u043b\u0435\u043a\u043e-\u043d\u043e\u0434\u044b \u043d\u0435 ready \u0441\u043e\u0432\u0441\u0435\u043c. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0441\u0430\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0432 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0431\u043b\u0438\u0437\u043e\u0441\u0442\u0438 \u043a Kube API &#8212; \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 &#8212; \u0431\u044b\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u044f\u0441\u044c \u0442\u0430\u043c \u0435\u043c\u0443 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u043e\u0432\u0435\u0440\u043b\u0435\u0438 \u0438 \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u043e\u043d \u0441\u043c\u043e\u0436\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u0434\u043e kube api \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0441\u0435\u043c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u043a\u0430\u043a \u0436\u0438\u0442\u044c? \u0427\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0443 \u0434\u043d\u0435\u0439, \u0432\u0435\u0440\u043d\u0443\u0432\u0448\u0438\u0441\u044c \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0441\u0442\u0430\u0442\u044c\u0438, \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0441\u0432\u043e\u044e \u043b\u0430\u0431\u0443 \u043d\u0435 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0430 PNETLAB \u043c\u0435\u0441\u0442\u043e \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c hdd \u0431\u044b\u043b\u043e \u0432\u044b\u0436\u0440\u0430\u043d\u043e \u0432 \u043d\u043e\u043b\u044c &#8212; \u0444\u0430\u0439\u043b\u044b \u044d\u0442\u043e\u0439 \u043b\u0430\u0431\u044b \u0432 \u043f\u0430\u043f\u043a\u0435 \/opt\/unetlab\/tmp \u0437\u0430\u043d\u044f\u043b\u0438 \u0430\u0436 70G \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u0445\u0443\u044f, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u0432\u0441\u044e \u0440\u0430\u0431\u043e\u0442\u0443. \u0412 \u043e\u0431\u0449\u0435\u043c, \u043d\u043e\u0434\u044b \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0433\u0430\u0441\u0438\u0442\u044c \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043c\u0435\u0441\u0442\u043e. \u041d\u0443 \u0438 \u0432\u044b \u0441\u0430\u043c\u0438 \u0437\u043d\u0430\u0435\u0442\u0435 \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0434\u0430\u043b\u044c\u0448\u0435\u2026 \u041f\u043e\u043c\u043d\u0438\u0442\u0435 \u044d\u0442\u043e\u0433\u043e \u0447\u0443\u0432\u0430\u043a\u0430?<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/154\/fa7\/b77\/154fa7b77443dab27c52ee2bf476fe8b.png\" width=\"275\" height=\"183\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/154\/fa7\/b77\/154fa7b77443dab27c52ee2bf476fe8b.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/154\/fa7\/b77\/154fa7b77443dab27c52ee2bf476fe8b.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0412\u0441\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u0443\u0441\u043b\u044b\u0448\u0430\u043b\u0430 \u043c\u043e\u0451 \u043f\u043e\u0434\u0441\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043d\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0432\u043e \u0432\u0441\u0451\u043c \u044d\u0442\u043e\u043c \u043a\u0430\u043b\u0435\u043a\u043e-\u0434\u0435\u0440\u044c\u043c\u0435 \u0438 \u0432\u044b\u0436\u0440\u0430\u043b\u0430 \u0432\u0441\u0451 \u043c\u0435\u0441\u0442\u043e \u043d\u0430 \u0436\u0451\u0441\u0442\u043a\u043e\u043c \u0434\u0438\u0441\u043a\u0435, \u0432\u044b\u043d\u0443\u0434\u0438\u0432 \u043c\u0435\u043d\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043b\u0430\u0431\u0443. \u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u043e\u0434, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0447\u0443\u0434\u0435\u0441\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u0436\u0438\u0432\u0430\u0435\u0442 \u0438 \u043d\u0435 \u043a\u0440\u0430\u0448\u0438\u0442\u0441\u044f<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ kubectl get pods -n kube-system | grep calico-kube-controllers calico-kube-controllers-658d97c59c-pfstc   1\/1     Running   427 (4d18h ago)   5d23h<\/code><\/pre>\n<p>\u0411\u043b\u043e\u043a\u0438 \u043d\u0430\u0440\u0435\u0437\u0430\u043b\u0438\u0441\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"json\">user@K-Master:~$  kubectl get blockaffinities -o json | jq '.items[].spec' {   \"cidr\": \"10.66.111.0\/24\",   \"deleted\": \"false\",   \"node\": \"k-master\",   \"state\": \"confirmed\" } {   \"cidr\": \"10.66.95.0\/24\",   \"deleted\": \"false\",   \"node\": \"k-w1\",   \"state\": \"confirmed\" } {   \"cidr\": \"10.66.217.0\/24\",   \"deleted\": \"false\",   \"node\": \"k-w2\",   \"state\": \"confirmed\" } {   \"cidr\": \"10.66.52.0\/24\",   \"deleted\": \"false\",   \"node\": \"k-w3\",   \"state\": \"confirmed\" } <\/code><\/pre>\n<p>\u0418 \u0434\u0430\u0436\u0435 \u0441\u0430\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043f\u043e\u043b\u0443\u0447\u0438\u043b IP \u0438\u0437 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430:<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ kubectl get pods -n kube-system -o wide | grep calico-kube-controllers calico-kube-controllers-658d97c59c-pfstc   1\/1     Running   427 (4d18h ago)   5d23h   10.66.52.3   k-w3       &lt;none&gt;           &lt;none&gt; <\/code><\/pre>\n<p>\u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u043e\u0434\u0435 \u0435\u0441\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 bird:<\/p>\n<pre><code class=\"lua\">user@k-w3:~$  ip r | grep bird blackhole 10.66.52.0\/24 proto bird  10.66.95.0\/24 via 10.0.137.15 dev ens5 proto bird  10.66.111.0\/24 via 10.0.137.12 dev ens5 proto bird  10.66.217.0\/24 via 10.0.137.112 dev ens5 proto bird <\/code><\/pre>\n<p>\u0418 \u0435\u0441\u043b\u0438 \u0437\u0430\u0439\u0442\u0438 \u0432\u043d\u0443\u0442\u0440\u044c \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c bird-\u0430, \u0442\u043e \u0432\u0438\u0434\u043d\u043e \u0447\u0442\u043e \u0441\u0435\u0441\u0441\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b:<\/p>\n<pre><code class=\"lua\">user@k-w3:~$ kubectl exec -it calico-node-9gl6c  -n kube-system -- sh Defaulted container \"calico-node\" out of: calico-node, upgrade-ipam (init), install-cni (init), mount-bpffs (init) sh-4.4#  birdcl show protocols | grep BGP Mesh_10_0_137_12 BGP      master   up     03:52:40    Established    Mesh_10_0_137_15 BGP      master   up     03:52:40    Established    Mesh_10_0_137_112 BGP      master   up     03:52:40    Established      sh-4.4#  birdcl show route  BIRD v0.3.3+birdv1.6.8 ready. 10.0.0.0\/8         via 10.3.33.0 on ens3 [kernel1 03:52:39] * (10) 10.3.33.0\/31       dev ens3 [direct1 03:52:38] * (240) 10.66.52.0\/24      blackhole [static1 03:52:38] * (200) 10.66.52.3\/32      dev cali718083fb40c [kernel1 03:52:40] * (10) 10.66.95.0\/24      via 10.0.137.15 on ens5 [Mesh_10_0_137_15 03:52:40] * (100\/0) [i] 10.66.111.0\/24     via 10.0.137.12 on ens5 [Mesh_10_0_137_12 03:52:40] * (100\/0) [i] 10.0.137.0\/24      dev ens5 [direct1 03:52:38] * (240) 10.66.217.0\/24     via 10.0.137.112 on ens5 [Mesh_10_0_137_112 03:52:40] * (100\/0) [i] <\/code><\/pre>\n<p>\u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b-\u043f\u043b\u0435\u0439\u043d\u043e\u043c \u0432\u0441\u0451 \u043e\u043a, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u0438 \u0434\u0430\u0442\u0430\u043f\u043b\u0435\u0439\u043d? \u041c\u043e\u0433\u0443\u0442 \u043b\u0438 \u043f\u043e\u0434\u044b \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043d\u043e\u0434\u044b \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0436\u043a\u043e\u0439? \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c alpine:<\/p>\n<pre><code class=\"lua\"> user@K-Master:~$ kubectl run test-pod --image=alpine --restart=Never --rm -it -- sh If you don't see a command prompt, try pressing enter. \/ # ip a 1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN qlen 1000     link\/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00     inet 127.0.0.1\/8 scope host lo        valid_lft forever preferred_lft forever     inet6 ::1\/128 scope host         valid_lft forever preferred_lft forever 3: eth0@if5: &lt;BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN&gt; mtu 1500 qdisc noqueue state UP      link\/ether b6:21:46:c9:bf:a2 brd ff:ff:ff:ff:ff:ff     inet 10.66.217.2\/32 scope global eth0        valid_lft forever preferred_lft forever     inet6 fe80::b421:46ff:fec9:bfa2\/64 scope link         valid_lft forever preferred_lft forever <\/code><\/pre>\n<p>\u0421\u0443\u0434\u044f \u043f\u043e IP \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e &#8212; \u0432\u043e\u0440\u043a\u0435\u0440 \u0434\u0432\u0430, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0435\u0449\u0451 \u0442\u0430\u043a \u0443\u0431\u0435\u0434\u0438\u0442\u0441\u044f:<\/p>\n<pre><code class=\"lua\">user@k-w1:~$ kubectl get pods -n kube-system -o wide | grep test-pod test-pod       1\/1     Running   0    2m5s    10.66.217.2   k-w2       &lt;none&gt;           &lt;none&gt;<\/code><\/pre>\n<p>\u041d\u0443 \u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043f\u0438\u043d\u0433\u0430\u0442\u044c \u0442\u043e\u0442 \u0436\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043d\u0430 \u0432\u043e\u0440\u043a\u0435\u0440\u0435 \u0442\u0440\u0435\u0442\u044c\u0435\u043c &#8212; 10.66.52.3:<\/p>\n<pre><code class=\"lua\">\/ # ping 10.66.52.3  PING 10.66.52.3 (10.66.52.3): 56 data bytes 64 bytes from 10.66.52.3: seq=0 ttl=62 time=1.224 ms 64 bytes from 10.66.52.3: seq=1 ttl=62 time=0.410 ms 64 bytes from 10.66.52.3: seq=2 ttl=62 time=0.420 ms<\/code><\/pre>\n<p>\u041d\u0443 \u043e\u043a, \u0441\u043e \u0441\u043a\u0440\u0438\u043f\u043e\u043c, \u043d\u043e \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u201c\u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043c\u0430\u0441\u043a\u0443 \u0434\u043b\u044f \u043f\u043e\u0434\u043e\u0432\u044b\u0445 \u0441\u0435\u0442\u0435\u0439\u201d \u0440\u0435\u0448\u0435\u043d\u0430. \u041f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u044e, \u0447\u0442\u043e \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u043c\u043e\u0435\u0433\u043e \u043f\u043b\u0430\u043d\u0430 \u043c\u0435\u0441\u0442\u043e \u043d\u0430 \u0434\u0438\u0441\u043a\u0435 \u043e\u043f\u044f\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u043b\u0436\u043d\u043e \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f.<\/p>\n<h3>\u041f\u0438\u0440\u0438\u043c \u0441 underlay, \u0434\u0435\u043b\u0430\u0435\u043c \u043f\u043b\u043e\u0441\u043a\u0443\u044e \u0441\u0435\u0442\u044c \u0431\u0435\u0437 overlay<\/h3>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c, \u044f \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e \u0438 \u043d\u0435 \u0437\u043d\u0430\u044e \u0447\u0442\u043e \u0442\u0443\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0434\u0435\u0442\u0430\u043b\u044f\u0445 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043a\u0443\u0431\u0430 \ud83d\ude41 \u0414\u0440\u0443\u0437\u0435\u0439 \u0441 calico \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442, \u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043c\u043e\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430:  <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/232\/8c3\/11b\/2328c311b27be1168f714d703596799c.png\" width=\"1874\" height=\"529\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/232\/8c3\/11b\/2328c311b27be1168f714d703596799c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/232\/8c3\/11b\/2328c311b27be1168f714d703596799c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u043a\u0430\u043a \u0432 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u043c \u043c\u0435\u043c\u0435-\u043a\u0435\u043a\u0435 &#8212; \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u0448\u044c &#8212; \u0430 \u0442\u0430\u043c \u0425\u0423\u0419 \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043d, \u0434\u0430\u0440\u043e\u043c \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u041a\u043e\u0440\u0431\u0438\u043d\u0430 \u0422\u0435\u043b\u0435\u043a\u043e\u043c.<\/p>\n<p>\u0411\u0443\u0434\u0435\u043c, \u0432 \u043e\u0431\u0449\u0435\u043c, \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0441 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044f\u043c\u044f \u0442\u043e\u0433\u0434\u0430! \u041f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0434\u0438\u043f\u0441\u0438\u043a, gpt-4, claude 4 \u0438 grok 4. \u0421\u0430\u043c\u044b\u043c \u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u044b\u043c \u043c\u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f Claude &#8212; \u043e\u043d \u043d\u0430\u043a\u0438\u0434\u0430\u043b \u043c\u043d\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u043d, \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043b \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0443 \u0438 \u0437\u0430\u0434\u0430\u043b \u0443\u0442\u043e\u0447\u043d\u044f\u044e\u0449\u0438\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b. \u041c\u044b \u0441 \u043d\u0438\u043c \u0440\u0430\u0441\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043d\u043e\u043c\u0435\u0440\u0430 AS-\u043e\u043a \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u043f\u043b\u0430\u043d \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c. \u041d\u0435 \u0431\u0443\u0434\u0443 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u043e\u044e \u0441 \u043d\u0438\u043c \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0443 (\u044d\u0442\u043e \u043b\u0438\u0447\u043d\u043e\u0435), \u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0451 \u0442\u0430\u043a, \u043a\u0430\u043a \u043c\u044b \u0441 \u043d\u0438\u043c \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438\u0441\u044c. \u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0432 \u043f\u043b\u0430\u043d\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f AS-\u043e\u043a \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0442\u0430\u043a\u043e\u0439:  <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ab7\/f91\/7fc\/ab7f917fc4480d92998189d38cafe37f.png\" width=\"1243\" height=\"818\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/ab7\/f91\/7fc\/ab7f917fc4480d92998189d38cafe37f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ab7\/f91\/7fc\/ab7f917fc4480d92998189d38cafe37f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>\u041d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0442\u0441\u0435\u043b\u0438\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440<\/strong> <\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043c\u0438, \u043c\u0435\u043d\u044f \u0438\u043d\u0442\u0443\u0438\u0442\u0432\u043d\u043e \u043d\u0435 \u043f\u043e\u043a\u0438\u0434\u0430\u043b\u0430 \u043c\u044b\u0441\u043b\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c calico-controller \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u0442\u0435\u0440\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u043e\u043d \u0442\u0430\u043c \u043a\u0430\u043a-\u0442\u043e \u0441\u0430\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043a\u0430\u043c\u0438.Claude \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b, \u0447\u0442\u043e \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0438\u0434\u0435\u044f, \u043d\u043e \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043e\u043d, \u043a\u0430\u043a \u0438 \u0432\u0441\u0435 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043d\u0435 \u043b\u044c\u0441\u0442\u0438\u0442. \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0442\u0451\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u043c\u043e\u0435\u0433\u043e \u0434\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442\u0430, \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e\u00a0<a href=\"https:\/\/kubernetes.io\/docs\/concepts\/scheduling-eviction\/assign-pod-node\/#nodeselector\" rel=\"noopener noreferrer nofollow\">nodeSelector-\u0430<\/a>\u00a0\u0432 \u0446\u0435\u043b\u043e\u043c \u0438\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0447\u0442\u043e \u043e\u043d \u0434\u0435\u043b\u0430\u0435\u0442 &#8212; \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u043d\u043e\u0434\u0443 )<\/p>\n<p>\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043f\u0430\u0442\u0447\u0438\u043a:<\/p>\n<pre><code class=\"json\">  \"spec\": {     \"template\": {       \"spec\": {         \"nodeSelector\": {           \"kubernetes.io\/os\": \"linux\",           \"node-role.kubernetes.io\/control-plane\": \"\"         },         \"tolerations\": [           {             \"key\": \"CriticalAddonsOnly\",             \"operator\": \"Exists\"           },           {             \"key\": \"node-role.kubernetes.io\/control-plane\",             \"operator\": \"Exists\",             \"effect\": \"NoSchedule\"           },           {             \"key\": \"node-role.kubernetes.io\/master\",             \"operator\": \"Exists\",             \"effect\": \"NoSchedule\"           }         ]       }     }   } }'<\/code><\/pre>\n<p>\u041d\u0443 \u0435\u0449\u0451 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0439, \u043c\u044b \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u00a0<code>nodeSelector<\/code>, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u0447\u0442\u043e \u043c\u044b \u044f\u0432\u043d\u043e \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u0434 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 &#8212;\u00a0<code>\"<\/code><a href=\"http:\/\/node-role.kubernetes.io\/control-plane\" rel=\"noopener noreferrer nofollow\"><code>node-role.kubernetes.io\/control-plane<\/code><\/a><code>\"<\/code>, \u043d\u043e \u0435\u0449\u0451 \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043d\u0435\u043a\u0438\u0435 \u0442\u043e\u043b\u0435\u0440\u0435\u0439\u0448\u043d\u044b. \u0427\u0442\u043e \u044d\u0442\u043e? \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u0437\u0430\u043f\u0440\u0435\u0442\u0430 \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0430 \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u043d\u043e\u0434\u0430\u0445 (taint\u044b) \u0438 \u0412\u041d\u0415\u0417\u0410\u041f\u041d\u041e \u043e\u0431\u0445\u043e\u0434\u0430 \u044d\u0442\u0438\u0445 \u0437\u0430\u043f\u0440\u0435\u0442\u043e\u0432 (tolerations). \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u0443\u0442\u044c &#8212;\u00a0<a href=\"https:\/\/kubernetes.io\/docs\/concepts\/scheduling-eviction\/taint-and-toleration\/\" rel=\"noopener noreferrer nofollow\">https:\/\/kubernetes.io\/docs\/concepts\/scheduling-eviction\/taint-and-toleration\/<\/a>\u00a0\u0417\u0430\u0447\u0435\u043c \u043d\u0430\u043c \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443 \u0432\u0441\u0435 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u043a\u0443\u0431\u0430 \u0436\u0438\u0432\u0443\u0442 \u0441 \u0442\u0430\u043a\u0438\u043c \u0442\u0435\u0439\u043d\u0442\u043e\u043c:<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ kubectl describe node k-master | grep Taints -A 3 Taints:             node-role.kubernetes.io\/control-plane:NoSchedule<\/code><\/pre>\n<p>\u0427\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u201c\u041d\u0435 \u043d\u0430\u0434\u043e \u043c\u043d\u0435 \u0442\u0443\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0432\u043e\u043e\u0431\u0449\u0435!!1\u201d, \u044d\u0442\u043e\u0442 \u0442\u0435\u0439\u043d\u0442 \u043c\u044b \u0438 \u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u043c\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438:<\/p>\n<pre><code class=\"json\">          {             \"key\": \"node-role.kubernetes.io\/control-plane\",             \"operator\": \"Exists\",             \"effect\": \"NoSchedule\"           } <\/code><\/pre>\n<p>\u0427\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 &#8212; \u201c\u0415\u0441\u043b\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b-\u043f\u043b\u0435\u0439\u043d \u043d\u043e\u0434\u0430 \u0442\u0435\u0431\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u201c\u041d\u0435 \u043d\u0430\u0434\u043e \u043c\u043d\u0435 \u0442\u0443\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0432\u043e\u043e\u0431\u0449\u0435!!1\u201d \u043d\u0435 \u043e\u0431\u0440\u0430\u0449\u0430\u0439 \u043d\u0430 \u044d\u0442\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435\u201d. \u0410 \u044d\u0442\u043e \u043d\u0430\u043c \u0438 \u043d\u0430\u0434\u043e!<\/p>\n<p>\u0418\u0442\u043e\u0433\u043e, \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0447\u0435\u0440\u0435\u0437\u00a0<code>kubectl patch deployment calico-kube-controllers -n kube-system -p [\u0422\u0443\u0442 \u0442\u0435\u043a\u0441\u0442 \u043f\u0430\u0442\u0447\u0430]<\/code>:<\/p>\n<p>\u0411\u044b\u043b\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ kubectl get pods -n kube-system -l k8s-app=calico-kube-controllers -o wide NAME                                       READY   STATUS    RESTARTS          AGE     IP           NODE   NOMINATED NODE   READINESS GATES calico-kube-controllers-658d97c59c-pfstc   1\/1     Running   427 (5d18h ago)   6d23h   10.66.52.3   k-w3   &lt;none&gt;           &lt;none&gt; <\/code><\/pre>\n<p>\u0421\u0442\u0430\u043b\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ kubectl get pods -n kube-system -l k8s-app=calico-kube-controllers -o wide NAME                                       READY   STATUS    RESTARTS   AGE     IP            NODE       NOMINATED NODE   READINESS GATES calico-kube-controllers-6c879b76df-f5f44   1\/1     Running   0          2m40s   10.66.111.1   k-master   &lt;none&gt;           &lt;none&gt; <\/code><\/pre>\n<p>\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u043b, IP \u0441\u043c\u0435\u043d\u0438\u043b\u0441\u044f, \u0441\u0432\u044f\u0437\u044c \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u0438\u0437 \u0440\u0430\u043d\u0434\u043e\u043c\u043d\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0430:<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ kubectl run test-pod --image=alpine --restart=Never --rm -it -- ip -a &amp; ping 10.66.111.1 [1] 1828972 PING 10.66.111.1 (10.66.111.1) 56(84) bytes of data. 64 bytes from 10.66.111.1: icmp_seq=1 ttl=64 time=1.59 ms 64 bytes from 10.66.111.1: icmp_seq=2 ttl=64 time=0.030 ms 64 bytes from 10.66.111.1: icmp_seq=3 ttl=64 time=0.047 ms <\/code><\/pre>\n<p>\u041e\u043a, \u043f\u043e\u0433\u043d\u0430\u043b\u0438 \u0434\u0430\u043b\u044c\u0448\u0435. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u0430\u0437\u043e\u0432\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u044e BGP \u043d\u0430 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0430\u0445 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043d\u043e\u0434 \u0438 \u0441\u0434\u0435\u043b\u0430\u044e \u0440\u0435\u0434\u0438\u0441\u0442\u0440\u0438\u0431\u044c\u044e\u0442 \u0432 OSFP \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0447\u0442\u043e\u0431\u044b \u0443\u0448\u043b\u043e \u043d\u0430 \u0441\u043f\u0430\u0439\u043d\u044b:<\/p>\n<pre><code class=\"json\">#===  Leaf-1  ===*   router bgp 65011     neighbor 10.0.11.1 remote-as 65000     neighbor 10.1.11.1 remote-as 65001     !     address-family ipv4         neighbor 10.0.11.1 activate         neighbor 10.1.11.1 activate   router ospf 1     redistribute bgp  #===  Leaf-2  ===*   router bgp 65012     neighbor 10.2.22.1 remote-as 65002     !     address-family ipv4         neighbor 10.2.22.1 activate   router ospf 1     redistribute bgp  #===  Leaf-3  ===*   router bgp 65013     neighbor 10.3.33.1 remote-as 65003     !     address-family ipv4         neighbor 10.3.33.1 activate   router ospf 1     redistribute bgp <\/code><\/pre>\n<p>\u0412\u043e\u0442 \u043d\u0430\u0448 \u043f\u043b\u0430\u043d \u043d\u0430 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:<\/p>\n<ol>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e BGP<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043f\u0440\u0430\u0432\u0438\u043c calico-\u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0442\u0438\u043f\u0430 node<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0442\u043e\u0447\u0435\u0447\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u043e\u0434\u044b \u043a\u0430\u043a \u0438 \u0441 \u043a\u0435\u043c \u043f\u0438\u0440\u0438\u0442\u044c\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439 full-mesh \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043c \u0442\u0443\u043d\u043d\u0435\u043b\u0438.<\/p>\n<\/li>\n<li>\n<p>???<\/p>\n<\/li>\n<li>\n<p>PROFIT!<\/p>\n<\/li>\n<\/ol>\n<h4>\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f BGP<\/h4>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u043f\u043e-\u0444\u0430\u043a\u0442\u0443 \u0442\u0430\u043a\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u043d\u0435\u0442. \u0412\u043e\u0442 \u0442\u0430\u043a\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442:<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ calicoctl get bgpconfig NAME   LOGSEVERITY   MESHENABLED   ASNUMBER     user@K-Master:~$ <\/code><\/pre>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0430\u043c\u0438 BGP \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b &#8212; \u043a\u0430\u0436\u0434\u0430\u044f \u043d\u043e\u0434\u0430 \u0441 \u043a\u0430\u0436\u0434\u043e\u0439:<\/p>\n<pre><code class=\"sql\">user@K-Master:~$ sudo calicoctl node status  IPv4 BGP status +--------------+-------------------+-------+------------+-------------+ | PEER ADDRESS |     PEER TYPE     | STATE |   SINCE    |    INFO     | +--------------+-------------------+-------+------------+-------------+ | 10.0.137.15  | node-to-node mesh | up    | 2025-08-20 | Established | | 10.0.137.112 | node-to-node mesh | up    | 2025-08-20 | Established | | 10.0.137.142 | node-to-node mesh | up    | 2025-08-20 | Established | +--------------+-------------------+-------+------------+-------------+<\/code><\/pre>\n<p>\u042d\u0442\u043e \u043d\u0435\u043a\u043e\u0435 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 Calico &#8212; \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0430\u0432\u0442\u043e\u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0435\u0434\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0438\u0440\u044f\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043e iBGP \u0432 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u0439 AS-\u043a\u0435 64512. \u042f \u0441\u043e\u0437\u0434\u0430\u043c \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0442\u0438\u043f\u0430\u00a0<code>bgpconfig<\/code>\u00a0\u0447\u0435\u0440\u0435\u0437 yaml \u0432\u043e\u0442 \u0441 \u0442\u0430\u043a\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:<\/p>\n<pre><code class=\"yaml\">apiVersion: projectcalico.org\/v3 kind: BGPConfiguration metadata:   name: default spec:   logSeverityScreen: Info   nodeToNodeMeshEnabled: true  # \u041f\u043e\u043a\u0430 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c mesh \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c   asNumber: 65000  # \u0414\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439 AS, \u043d\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u043d\u043e\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u0432\u043e\u0439   serviceClusterIPs:   - cidr: 10.96.0.0\/12  # \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 CIDR \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 k8s <\/code><\/pre>\n<pre><code class=\"lua\">user@K-Master:~$ calicoctl apply -f bgp-config.yaml Successfully applied 1 'BGPConfiguration' resource(s)<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u0432\u043e\u0434 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u043a\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f BGP:<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ calicoctl get bgpconfig NAME      LOGSEVERITY   MESHENABLED   ASNUMBER    default   Info          true          65000  <\/code><\/pre>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u043b\u043e\u043c\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e &#8212; \u0441\u0435\u0441\u0441\u0438\u0438 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0432 up.<\/p>\n<h4>\u041f\u0440\u0430\u0432\u043a\u0430 node-\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Calico<\/h4>\n<p>\u0410 \u0432\u043e\u0442 \u0442\u0443\u0442 \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0447\u0442\u043e-\u0442\u043e \u0441\u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f. \u041d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043f\u0430\u0442\u0447\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e \u0432 spec-\u0443 \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0435 (\u043d\u0430 \u043f\u0440\u0438\u0430\u043c\u0435\u0440\u0435 master-\u0430):<\/p>\n<pre><code class=\"yaml\">apiVersion: projectcalico.org\/v3 kind: Node metadata:   name: k-master spec:   bgp:     asNumber: 65000     ipv4Address: 10.0.11.1\/31<\/code><\/pre>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441, \u0435\u0441\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0442\u043e \u0442\u0430\u043c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"yaml\">user@K-Master:~$ calicoctl get node k-master -o yaml | grep spec -A 100 spec:   addresses:   - address: 10.0.137.12\/24     type: CalicoNodeIP   - address: 10.0.11.1     type: InternalIP   bgp:     ipv4Address: 10.0.137.12\/24     ipv4IPIPTunnelAddr: 10.66.111.0   orchRefs:   - nodeName: k-master     orchestrator: k8s status:   podCIDRs:   - 10.66.0.0\/24<\/code><\/pre>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u043c\u0435\u043d\u044f\u0435\u043c\u00a0<code>ipv4Address: 10.0.137.12<\/code>\u00a0\u043d\u0430\u00a0<code>ipv4Address: 10.0.11.1\/31<\/code>. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e calico \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043c\u0435\u043d\u044f \u043d\u0435 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u043b \u0438 \u0432\u044b\u0431\u0440\u0430\u043b \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0435\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0430 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f BGP. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0438\u043c\u0445\u043e \u0432\u0441\u0451 \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0437\u0432\u0430\u043b\u0438\u0442\u044c\u0441\u044f. \u041d\u0443 \u0432\u043e\u0442 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c. \u0410\u043f\u043b\u0430\u0435\u043c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 \u0434\u043b\u044f k-master-\u0430<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ calicoctl apply -f node-k-master-bgp.yaml Successfully applied 1 'Node' resource(s)<\/code><\/pre>\n<p>\u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e? \u041d\u0443 \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445 \u0443 \u043c\u0435\u043d\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u043e\u0434\u044b:<\/p>\n<pre><code class=\"yaml\">user@K-Master:~$  calicoctl get node k-master -o yaml | grep spec -A 100 spec:   addresses:   - address: 10.0.11.1\/31     type: CalicoNodeIP   - address: 10.0.11.1     type: InternalIP   bgp:     asNumber: 65000     ipv4Address: 10.0.11.1\/31   orchRefs:   - nodeName: k-master     orchestrator: k8s <\/code><\/pre>\n<p>\u0422\u0443\u0442 \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0447\u0442\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u00a0<code>ipv4Address<\/code>\u00a0\u0432 \u0441\u0435\u043a\u0446\u0438\u0438 BGP, \u043d\u043e \u0435\u0449\u0451 \u0438\u00a0<code>CalicoNodeIP<\/code>\u00a0address &#8212; \u043e\u043d \u0442\u043e\u0436\u0435 \u0441\u043c\u0435\u043d\u0438\u043b\u0441\u044f \u043d\u0430\u00a0<code>10.0.11.1<\/code>. \u041d\u0443 \u043e\u043a, calico \u0432\u0438\u0434\u043d\u0435\u0435.<\/p>\n<p>\u0421\u0432\u044f\u0437\u044c, \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0441\u043b\u043e\u043c\u0430\u043b\u0430\u0441\u044c. \u041d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u043f\u043e\u0434\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d:<\/p>\n<pre><code class=\"lua\">user@k-w2:~$ kubectl run test-pod1 --image=alpine --restart=Never --rm -it -- ip a &amp;&amp; ping 10.66.111.1 3: eth0@if15: &lt;BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN&gt; mtu 1500 qdisc noqueue state UP      link\/ether 02:a9:74:b1:03:bd brd ff:ff:ff:ff:ff:ff     inet 10.66.95.11\/32 scope global eth0        valid_lft forever preferred_lft forever     inet6 fe80::a9:74ff:feb1:3bd\/64 scope link tentative         valid_lft forever preferred_lft forever pod \"test-pod1\" deleted PING 10.66.111.1 (10.66.111.1) 56(84) bytes of data. From 10.2.22.0 icmp_seq=1 Destination Net Unreachable From 10.2.22.0 icmp_seq=2 Destination Net Unreachable From 10.2.22.0 icmp_seq=3 Destination Net Unreachable From 10.2.22.0 icmp_seq=4 Destination Net Unreachable <\/code><\/pre>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c BGP \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0432 UP!<\/p>\n<pre><code class=\"sql\">user@K-Master:~$  sudo calicoctl node status Calico process is running.  IPv4 BGP status +--------------+-------------------+-------+----------+-------------+ | PEER ADDRESS |     PEER TYPE     | STATE |  SINCE   |    INFO     | +--------------+-------------------+-------+----------+-------------+ | 10.0.137.15  | node-to-node mesh | up    | 04:30:59 | Established | | 10.0.137.112 | node-to-node mesh | up    | 04:30:59 | Established | | 10.0.137.142 | node-to-node mesh | up    | 04:30:59 | Established | +--------------+-------------------+-------+----------+-------------+ <\/code><\/pre>\n<p>\u0410 \u0435\u0441\u043b\u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043b\u044e\u0431\u043e\u0433\u043e \u0432\u043e\u0440\u043a\u0435\u0440\u0430, \u0442\u043e \u0432\u0438\u0434\u043d\u043e \u0447\u0442\u043e bgp \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043b\u0441\u044f \u0434\u043e \u043d\u043e\u0432\u043e\u0433\u043e IP:<\/p>\n<pre><code class=\"sql\">user@k-w1:~$ sudo calicoctl node status  IPv4 BGP status +--------------+-------------------+-------+----------+-------------+ | PEER ADDRESS |     PEER TYPE     | STATE |  SINCE   |    INFO     | +--------------+-------------------+-------+----------+-------------+ | 10.0.137.112 | node-to-node mesh | up    | 04:16:40 | Established | | 10.0.137.142 | node-to-node mesh | up    | 04:16:40 | Established | | 10.0.11.1    | node-to-node mesh | up    | 04:30:59 | Established | +--------------+-------------------+-------+----------+-------------+ <\/code><\/pre>\n<p>\u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0431\u0451\u0440\u0434\u0430 \u043d\u0430 \u0432\u043e\u0440\u043a\u0435\u0440\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f, \u0432\u0438\u0434\u0438\u043c bgp \u0434\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u043e\u0441\u0435\u0434\u0430<\/p>\n<pre><code class=\"lua\">sh-4.4#  birdcl show protocols | grep BGP Mesh_10_0_137_112 BGP      master   up     04:16:40    Established    Mesh_10_0_137_142 BGP      master   up     04:16:40    Established    Mesh_10_0_11_1 BGP      master   up     04:30:59    Established    <\/code><\/pre>\n<p>\u0421\u043c\u0443\u0449\u0430\u0435\u0442, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0432\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438, \u043d\u043e \u0447\u0442\u043e\u0436. \u0411\u0443\u0434\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0447\u0442\u043e \u044d\u0442\u043e bird-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a \u0432\u0435\u0449\u044c \u0438 \u0441\u043c\u0435\u043d\u0430 IP \u0443 \u0441\u043e\u0441\u0435\u0434\u0430 \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u043c \u0441\u043e\u0441\u0435\u0434\u043e\u043c )) \u0427\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u0432\u0441\u0451 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u044f \u0432\u0441\u0442\u0430\u043b \u0434\u0430\u043c\u043f\u043e\u043c \u0432\u043e\u0442 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/407\/a17\/755\/407a177551aed14ade9a698b25296d95.png\" width=\"1246\" height=\"654\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/407\/a17\/755\/407a177551aed14ade9a698b25296d95.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/407\/a17\/755\/407a177551aed14ade9a698b25296d95.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0418 \u0443\u0432\u0438\u0434\u0435\u043b \u0442\u0430\u043c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0439 BGP \u0441\u0435\u0441\u0441\u0438\u0438 \u043e\u0442 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0432\u043e\u0440\u043a\u0435\u0440\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:  <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9b2\/639\/1a2\/9b26391a24b648edfe8bf24e111ff8d2.png\" width=\"1854\" height=\"230\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/9b2\/639\/1a2\/9b26391a24b648edfe8bf24e111ff8d2.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9b2\/639\/1a2\/9b26391a24b648edfe8bf24e111ff8d2.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041e\u0431\u0440\u0430\u0442\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043d\u0435 \u0432\u0438\u0434\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0440\u043e\u0443\u0442\u0438\u043d\u0433\u0443 \u043f\u0430\u043a\u0435\u0442\u044b \u0434\u043e\u00a0<code>10.0.137.15<\/code>\u00a0\u0443\u0439\u0434\u0443\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0434\u043a\u043e\u0441\u0442\u044b\u043b\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441. \u0422\u0443\u0442 \u0432\u0430\u0436\u0435\u043d \u0441\u0430\u043c \u0444\u0430\u043a\u0442 &#8212; \u043a\u0430\u043b\u0438\u043a\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u0432\u0441\u0435\u043c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u043d\u043e\u0434\u0430\u043c, \u0447\u0442\u043e \u0443 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0441\u044f IP \u0438 \u0442\u0435\u043f\u0435\u0440\u044c BGP \u043d\u0430\u0434\u043e \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430.<\/p>\n<p>\u0422\u0443\u043d\u043d\u0435\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0440\u0430\u0437\u0432\u0430\u043b\u0438\u043b\u0438\u0441\u044c, \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0434\u0430\u043c\u0438 \u043d\u0435\u0442. \u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0443 &#8212; \u043e\u043f\u044f\u0442\u044c \u0443\u0439\u0434\u0443 \u0432 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u0430\u0440\u0443 \u043d\u0435\u0434\u0435\u043b\u044c, \u0430 \u0441\u043e \u0441\u0442\u0430\u0442\u044c\u0451\u0439 \u0443\u0436\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u043a\u043e\u043d\u0447\u0438\u0442\u044c! \u0412 \u043e\u0431\u0449\u0435\u043c, \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0443 \u043d\u0430\u0441 \u0441\u0435\u0442\u044c \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438 \u043d\u0430\u0434\u043e \u043f\u043e\u0441\u043a\u043e\u0440\u0435\u0435 \u0435\u0451 \u043f\u043e\u0447\u0438\u043d\u0438\u0442\u044c! \u0410\u043f\u043f\u043b\u0430\u0435\u043c \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u043e\u0434:<\/p>\n<pre><code class=\"yaml\"># k-w1 (AS 65001) cat &lt;&lt; EOF &gt; node-k-w1-bgp.yaml apiVersion: projectcalico.org\/v3 kind: Node metadata:   name: k-w1 spec:   bgp:     asNumber: 65001     ipv4Address: 10.1.11.1\/31 EOF  # k-w2 (AS 65002) cat &lt;&lt; EOF &gt; node-k-w2-bgp.yaml apiVersion: projectcalico.org\/v3 kind: Node metadata:   name: k-w2 spec:   bgp:     asNumber: 65002     ipv4Address: 10.2.22.1\/31 EOF  # k-w3 (AS 65003) cat &lt;&lt; EOF &gt; node-k-w3-bgp.yaml apiVersion: projectcalico.org\/v3 kind: Node metadata:   name: k-w3 spec:   bgp:     asNumber: 65003     ipv4Address: 10.3.33.1\/31 EOF  # \u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438  calicoctl apply -f node-k-w1-bgp.yaml calicoctl apply -f node-k-w2-bgp.yaml calicoctl apply -f node-k-w3-bgp.yaml <\/code><\/pre>\n<p>\u0422\u044b\u0446, \u0438 \u0432\u0441\u0451 \u0443 \u043d\u0430\u0441 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043b\u043e\u0441\u044c \u043f\u043e \u043d\u043e\u0432\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u0430\u043c. \u041f\u043e\u043a\u0430 \u0447\u0442\u043e full mesh:<\/p>\n<pre><code class=\"sql\">user@K-Master:~$ sudo calicoctl node status Calico process is running.  IPv4 BGP status +--------------+-------------------+-------+----------+-------------+ | PEER ADDRESS |     PEER TYPE     | STATE |  SINCE   |    INFO     | +--------------+-------------------+-------+----------+-------------+ | 10.1.11.1    | node-to-node mesh | up    | 05:13:02 | Established | | 10.2.22.1    | node-to-node mesh | up    | 05:13:02 | Established | | 10.3.33.1    | node-to-node mesh | up    | 05:13:02 | Established | +--------------+-------------------+-------+----------+-------------+ <\/code><\/pre>\n<p>\u0421\u0432\u044f\u0437\u0438 \u043f\u043e \u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043d\u0435\u0442, \u0432 \u043c\u043e\u0451\u043c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0442\u0443\u043d\u043d\u0435\u043b\u0438 &#8212; \u043d\u043e \u0411\u043e\u0433 \u0435\u0439 \u0441\u0443\u0434\u044c\u044f\u2026 \u041a\u0430\u0440\u043e\u0447\u0435, \u044f \u043d\u0435 \u0441\u043c\u043e\u0433 \u0443\u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u0438 \u043d\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0447\u0435\u043c\u0443 \u0441\u0432\u044f\u0437\u0438 \u043d\u0435\u0442 \ud83d\ude41 \u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043e\u0434 \u0438 \u043f\u043e\u043f\u0438\u043d\u0433\u0430\u0442\u044c \u0438\u0437 \u043d\u0435\u0433\u043e \u0430\u0434\u0440\u0435\u0441 \u0442\u043e\u0433\u043e-\u0436\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0442\u0430\u043a\u043e\u0435:<\/p>\n<pre><code class=\"lua\">user@k-w2:~$ kubectl run test-pod1 --image=alpine --restart=Never --rm -it -- ip a &amp;&amp; ping 10.66.111.1 3: eth0@if16: &lt;BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN&gt; mtu 1500 qdisc noqueue state UP      link\/ether aa:7d:90:55:12:47 brd ff:ff:ff:ff:ff:ff     inet 10.66.95.12\/32 scope global eth0        valid_lft forever preferred_lft forever     inet6 fe80::a87d:90ff:fe55:1247\/64 scope link tentative         valid_lft forever preferred_lft forever pod \"test-pod1\" deleted PING 10.66.111.1 (10.66.111.1) 56(84) bytes of data. From 10.2.22.0 icmp_seq=1 Destination Net Unreachable From 10.2.22.0 icmp_seq=2 Destination Net Unreachable From 10.2.22.0 icmp_seq=3 Destination Net Unreachable <\/code><\/pre>\n<p><code>From 10.2.22.0 icmp_seq=1 Destination Net Unreachable<\/code>\u00a0&#8212; \u043d\u0430\u043c \u0441\u0432\u0438\u0442\u0447 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u043e\u043b \u0434\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0434\u043e \u0441\u0435\u0442\u0438 \u043e\u043d \u043d\u0435 \u043c\u043e\u0436\u0435\u0442! \u041a\u043e\u0433\u0434\u0430 \u043c\u0430\u0441\u0442\u0435\u0440-\u043d\u043e\u0434\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0430 BGP \u0441\u0435\u0441\u0441\u0438 \u0434\u043e \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u043e\u0440\u043a\u0435\u0440\u0430, \u043e\u043d\u0430 \u043f\u043e\u0441\u043b\u0430\u043b\u0430 \u0435\u043c\u0443 \u0442\u0430\u043a\u043e\u0439 Update, \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0435\u0442\u0438:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/454\/b69\/05f\/454b6905fea817105f86be78afe2056a.png\" width=\"1138\" height=\"717\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/454\/b69\/05f\/454b6905fea817105f86be78afe2056a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/454\/b69\/05f\/454b6905fea817105f86be78afe2056a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0422\u0438\u043f\u0430 &#8212; \u201c\u0435\u0441\u043b\u0438 \u0447\u0442\u043e, \u043f\u043e\u0434\u0440\u0443\u0433\u0430, \u0442\u043e \u0434\u043b\u044f \u0441\u0435\u0442\u0438 10.66.111.0\/24 \u043d\u0435\u043a\u0442\u0441-\u0445\u043e\u043f\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f 10.0.11.1\u201d, \u0447\u0442\u043e \u0432\u0438\u0434\u043d\u043e \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 bird-\u0435 \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u043d\u043e\u0434\u0435:<\/p>\n<pre><code class=\"lua\">sh-4.4# birdcl show route 10.66.111.0\/24 all BIRD v0.3.3+birdv1.6.8 ready. 10.66.111.0\/24     via 10.2.22.0 on ens3 [Mesh_10_0_11_1 05:13:02 from 10.0.11.1] * (100\/?) [AS65000i] Type: BGP unicast univ BGP.origin: IGP BGP.as_path: 65000 BGP.next_hop: 10.0.11.1 BGP.local_pref: 100 <\/code><\/pre>\n<p>\u041d\u043e \u044d\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442. \u0412 \u043a\u0430\u043a\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441-\u0442\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0430\u043a\u0435\u0442 \u043d\u0430\u0434\u043e? \u0420\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044f next-hop, \u043d\u043e\u0434\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043a \u0432\u044b\u0432\u043e\u0434\u0443 \u0447\u0442\u043e\u00a0<code>10.66.111.0\/24 via 10.2.22.0 on ens3<\/code>, \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044f \u043f\u0430\u043a\u0435\u0442 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0443 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0445\u0443\u0439 \u0432 \u043e\u0442\u0432\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440 \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u0440\u043e \u044d\u0442\u0443 \u0441\u0435\u0442\u044c &#8212; \u0435\u043c\u0443 \u0435\u0449\u0451 \u043d\u0438\u043a\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b<\/p>\n<pre><code class=\"lua\">Leaf-2# show ip ro 10.66.111.1 Gateway of last resort is not set Leaf-2#<\/code><\/pre>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u0438 \u043d\u0443\u0436\u0435\u043d \u0442\u0440\u0435\u0442\u0438\u0439 \u0448\u0430\u0433 &#8212; \u043d\u0430\u0434\u043e \u0437\u0430\u043f\u0438\u0440\u0438\u0442\u044c \u043d\u043e\u0434\u044b \u0441 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0430\u043c\u0438, \u0438 \u0418\u041c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u044d\u0442\u0443 \u0441\u0435\u0442\u044c, \u0430 \u043d\u0435 \u043d\u043e\u0434\u0430\u043c-\u0441\u043e\u0441\u0435\u0434\u043a\u0430\u043c<\/p>\n<h4>BGP \u0441\u043e \u0441\u0432\u0438\u0442\u0447\u0430\u043c\u0438<\/h4>\n<p>\u041d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u0430\u043b\u0435\u043a\u043e-\u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0442\u0438\u043f\u0430 BGPPeer. \u0421\u0435\u0439\u0447\u0430\u0441 \u0438\u0445 \u043d\u0435\u0442:<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ calicoctl get bgppeer NAME   PEERIP   NODE   ASN     user@K-Master:~$ <\/code><\/pre>\n<p>\u041d\u0443\u0436\u043d\u043e \u0447\u0442\u043e \u0431\u044b \u0431\u044b\u043b\u0438. \u041d\u0443 \u043d\u0443\u0436\u043d\u043e, \u0442\u0430\u043a \u043d\u0443\u0436\u043d\u043e. \u0414\u0435\u043b\u0430\u044e \u0442\u0430\u043a\u043e\u0439 \u044f\u043c\u043b\u0438\u043a:<\/p>\n<pre><code class=\"yaml\">apiVersion: projectcalico.org\/v3 kind: BGPPeer metadata:   name: k-master-to-switch spec:   peerIP: 10.0.11.0 # \u0441\u0432\u0438\u0442\u0447   asNumber: 65011  # \u0435\u0433\u043e ASN   nodeSelector: kubernetes.io\/hostname == \"k-master\" <\/code><\/pre>\n<p>\u041f\u0440\u0438\u043c\u0435\u043d\u044f\u044e, \u043f\u043e\u043b\u0443\u0447\u0430\u044e:<\/p>\n<p>\u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043a\u0443\u0431\u0430:<\/p>\n<pre><code class=\"sql\">user@K-Master:~$ calicoctl get bgppeer NAME                 PEERIP      NODE                                   ASN      k-master-to-switch   10.0.11.0   kubernetes.io\/hostname == \"k-master\"   65011     #\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0435\u0441\u0441\u0438\u0439:  user@K-Master:~$ sudo calicoctl node status IPv4 BGP status +--------------+-------------------+-------+----------+-------------+ | PEER ADDRESS |     PEER TYPE     | STATE |  SINCE   |    INFO     | +--------------+-------------------+-------+----------+-------------+ | 10.1.11.1    | node-to-node mesh | up    | 05:13:02 | Established | | 10.2.22.1    | node-to-node mesh | up    | 05:13:02 | Established | | 10.3.33.1    | node-to-node mesh | up    | 05:13:02 | Established | | 10.0.11.0    | node specific     | up    | 05:41:14 | Established | +--------------+-------------------+-------+----------+-------------+ <\/code><\/pre>\n<p>\u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0441\u0432\u0438\u0442\u0447\u0430 \u0441\u0435\u0441\u0441\u0438\u044f \u0442\u043e\u0436\u0435 \u043f\u043e\u0434\u043d\u044f\u043b\u0430\u0441\u044c:<\/p>\n<pre><code class=\"lua\">Leaf-1# show ip bgp summary | inc 10.0.11.1|Nei Neighbor Status Codes: m - Under maintenance   Neighbor  V AS           MsgRcvd   MsgSent  InQ OutQ  Up\/Down State   PfxRcd PfxAcc   10.0.11.1 4 65000            135       550    0    0 01:41:53 Estab   32     32 <\/code><\/pre>\n<p>32 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u044e, \u043e\u0433\u043e! \u0427\u0442\u043e \u0436\u0435 \u0442\u0430\u043c:<\/p>\n<pre><code class=\"lua\"> * &gt;      10.66.52.0\/24          10.0.11.1             0       -          100     0       65000 65003 i  *        10.66.52.0\/24          10.0.11.1             0       -          100     0       65000 65001 65003 i  *        10.66.52.0\/24          10.0.11.1             0       -          100     0       65000 65002 65001 65003 i  *        10.66.52.0\/24          10.0.11.1             0       -          100     0       65000 65001 65002 65003 i  *        10.66.52.0\/24          10.0.11.1             0       -          100     0       65000 65002 65003 i  * &gt;      10.66.95.0\/24          10.0.11.1             0       -          100     0       65000 65001 i  *        10.66.95.0\/24          10.0.11.1             0       -          100     0       65000 65003 65001 i  *        10.66.95.0\/24          10.0.11.1             0       -          100     0       65000 65002 65001 i  *        10.66.95.0\/24          10.0.11.1             0       -          100     0       65000 65003 65002 65001 i  *        10.66.95.0\/24          10.0.11.1             0       -          100     0       65000 65002 65003 65001 i  * &gt;      10.66.111.0\/24         10.0.11.1             0       -          100     0       65000 i  * &gt;      10.66.217.0\/24         10.0.11.1             0       -          100     0       65000 65002 i  *        10.66.217.0\/24         10.0.11.1             0       -          100     0       65000 65003 65002 i  *        10.66.217.0\/24         10.0.11.1             0       -          100     0       65000 65001 65003 65002 i  *        10.66.217.0\/24         10.0.11.1             0       -          100     0       65000 65003 65001 65002 i  *        10.66.217.0\/24         10.0.11.1             0       -          100     0       65000 65001 65002 i  * &gt;      10.96.0.0\/12           10.0.11.1             0       -          100     0       65000 i  *        10.96.0.0\/12           10.0.11.1             0       -          100     0       65000 65003 65002 i  *        10.96.0.0\/12           10.0.11.1             0       -          100     0       65000 65003 65001 65002 i  *        10.96.0.0\/12           10.0.11.1             0       -          100     0       65000 65002 65001 65003 i  *        10.96.0.0\/12           10.0.11.1             0       -          100     0       65000 65001 65003 i  *        10.96.0.0\/12           10.0.11.1             0       -          100     0       65000 65001 i  *        10.96.0.0\/12           10.0.11.1             0       -          100     0       65000 65002 65003 i  *        10.96.0.0\/12           10.0.11.1             0       -          100     0       65000 65002 65003 65001 i  *        10.96.0.0\/12           10.0.11.1             0       -          100     0       65000 65002 65001 i  *        10.96.0.0\/12           10.0.11.1             0       -          100     0       65000 65001 65002 i  *        10.96.0.0\/12           10.0.11.1             0       -          100     0       65000 65001 65003 65002 i  *        10.96.0.0\/12           10.0.11.1             0       -          100     0       65000 65002 i  *        10.96.0.0\/12           10.0.11.1             0       -          100     0       65000 65003 i  *        10.96.0.0\/12           10.0.11.1             0       -          100     0       65000 65003 65002 65001 i  *        10.96.0.0\/12           10.0.11.1             0       -          100     0       65000 65001 65002 65003 i  *        10.96.0.0\/12           10.0.11.1             0       -          100     0       65000 65003 65001 i <\/code><\/pre>\n<p>\u0410\u0433\u0430, \u044d\u0442\u043e \u043d\u0430\u043c \u0430\u0443\u043a\u0430\u044e\u0442\u0441\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 full-mesh \u0441\u0435\u0441\u0441\u0438\u0438. Bird \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043e\u0434\u0438\u043d \u0431\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0438 \u043f\u0440\u0438\u0441\u043b\u0430\u0442\u044c \u0435\u0433\u043e \u043a \u043d\u0430\u043c &#8212; \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0435\u0442 \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0441\u0451, \u0447\u0442\u043e \u043e\u043d\u0438 \u0442\u0430\u043c \u0441\u0435\u0431\u0435 \u0432 \u0444\u0443\u043b-\u043c\u0435\u0448\u0435 \u043d\u0430\u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0438. \u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u0432\u0441\u0435\u0433\u043e \u043d\u0430\u043c \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0430\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0440\u043e\u0443\u0442:<\/p>\n<pre><code class=\"lua\">Leaf-1#show ip ro 10.66.111.0   B E      10.66.111.0\/24 [200\/0] via 10.0.11.1, Ethernet2 <\/code><\/pre>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u043e\u0432\u0430\u044f \u0441\u0435\u0442\u044c \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u0443 \u043d\u0430\u0441 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u0430 \u0432 Underlay. \u0418 \u0442\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u0430\u044f \u0441\u0432\u044f\u0437\u044c:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1d5\/645\/0b6\/1d56450b65d3176485968356ddbb3b6e.png\" width=\"1738\" height=\"718\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/1d5\/645\/0b6\/1d56450b65d3176485968356ddbb3b6e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1d5\/645\/0b6\/1d56450b65d3176485968356ddbb3b6e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u201cClient\u201d &#8212; \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u0438\u043d\u0443\u043a\u0441 \u0445\u043e\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043a underlay. \u041f\u0438\u043d\u0433\u0438 \u0445\u043e\u0434\u044e\u0442:<\/p>\n<pre><code class=\"lua\">user@ubuntu:~$ ping 10.66.111.1 PING 10.66.111.1 (10.66.111.1) 56(84) bytes of data. 64 bytes from 10.66.111.1: icmp_seq=1 ttl=60 time=11.6 ms 64 bytes from 10.66.111.1: icmp_seq=2 ttl=60 time=13.0 ms 64 bytes from 10.66.111.1: icmp_seq=3 ttl=60 time=15.0 ms <\/code><\/pre>\n<p>\u0422\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u0431\u0435\u0436\u0438\u0442 \u043a\u0430\u043a \u0434\u043e\u043b\u0436\u043d\u0430:<\/p>\n<pre><code class=\"lua\">user@ubuntu:~$ traceroute 10.66.111.1 traceroute to 10.66.111.1 (10.66.111.1), 30 hops max, 60 byte packets  1  10.4.44.0 (10.4.44.0)  5.134 ms  5.174 ms  7.521 ms  2  10.33.99.0 (10.33.99.0)  16.426 ms  16.529 ms  19.762 ms  3  10.11.99.1 (10.11.99.1)  25.497 ms  25.656 ms  27.368 ms  4  10.0.11.1 (10.0.11.1)  36.243 ms  36.421 ms  39.167 ms  5  10.66.111.1 (10.66.111.1)  39.321 ms  42.110 ms  42.218 ms <\/code><\/pre>\n<p>\u0414\u043e \u043a\u0443\u0447\u0438 \u044f \u0435\u0449\u0451 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u043f\u0440\u044f\u043c\u043e \u0432 \u043f\u043e\u0434\u043e\u0432\u043e\u0439 \u0441\u0435\u0442\u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0443 \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439 \u0432\u0435\u0431 \u0441\u0435\u0440\u0432\u0435\u0440, \u043d\u0443 \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"yaml\">user@K-Master:~$ cat web-on-master  apiVersion: v1 kind: Pod metadata:   name: test-web-master   labels:     app: test-web spec:   nodeSelector:     kubernetes.io\/hostname: k-master   tolerations:   - key: node-role.kubernetes.io\/control-plane     operator: Exists     effect: NoSchedule   - key: node-role.kubernetes.io\/master     operator: Exists     effect: NoSchedule   containers:   - name: web     image: nginx:alpine     ports:     - containerPort: 80   restartPolicy: Always    <\/code><\/pre>\n<p>\u0410\u043f\u043f\u043b\u0430\u0435\u043c \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ kubectl apply -f web-on-master  pod\/test-web-master created * \u0447\u0435\u043a\u0430\u0435\u043c \u043f\u043e\u0434: user@K-Master:~$ kubectl get pods -o wide | grep web test-web-master                            1\/1     Running   0              2m55s   10.66.111.2   k-master   &lt;none&gt;           &lt;none&gt; <\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0438\u0437 Client-\u0430:<\/p>\n<pre><code class=\"lua\">user@ubuntu:~$ curl -s http:\/\/10.66.111.2 &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Welcome to nginx!&lt;\/title&gt; &lt;style&gt; html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } &lt;\/style&gt; &lt;\/head&gt; &lt;body&gt; &lt;h1&gt;Welcome to nginx!&lt;\/h1&gt; &lt;p&gt;If you see this page, the nginx web server is successfully installed and working. Further configuration is required.&lt;\/p&gt;  &lt;p&gt;For online documentation and support please refer to &lt;a href=\"http:\/\/nginx.org\/\"&gt;nginx.org&lt;\/a&gt;.&lt;br\/&gt; Commercial support is available at &lt;a href=\"http:\/\/nginx.com\/\"&gt;nginx.com&lt;\/a&gt;.&lt;\/p&gt;  &lt;p&gt;&lt;em&gt;Thank you for using nginx.&lt;\/em&gt;&lt;\/p&gt; &lt;\/body&gt; &lt;\/html&gt; <\/code><\/pre>\n<p>\u041f\u0443\u0448\u043a\u0430-\u0431\u043e\u043c\u0431\u0430!<\/p>\n<p>\u0414\u043e\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0438\u0440\u0438\u043d\u0433 \u043d\u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u043e\u0434\u0430\u0445:<\/p>\n<pre><code class=\"yaml\"># BGP peer \u0434\u043b\u044f k-w1 cat &lt;&lt; EOF &gt; bgppeer-k-w1.yaml apiVersion: projectcalico.org\/v3 kind: BGPPeer metadata:   name: k-w1-to-switch spec:   peerIP: 10.1.11.0   asNumber: 65011   nodeSelector: kubernetes.io\/hostname == \"k-w1\" EOF  # BGP peer \u0434\u043b\u044f k-w2 cat &lt;&lt; EOF &gt; bgppeer-k-w2.yaml apiVersion: projectcalico.org\/v3 kind: BGPPeer metadata:   name: k-w2-to-switch spec:   peerIP: 10.2.22.0   asNumber: 65012   nodeSelector: kubernetes.io\/hostname == \"k-w2\" EOF  # BGP peer \u0434\u043b\u044f k-w3 cat &lt;&lt; EOF &gt; bgppeer-k-w3.yaml apiVersion: projectcalico.org\/v3 kind: BGPPeer metadata:   name: k-w3-to-switch spec:   peerIP: 10.3.33.0   asNumber: 65013   nodeSelector: kubernetes.io\/hostname == \"k-w3\" EOF  # \u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u0432\u0441\u0435 BGP peers calicoctl apply -f bgppeer-k-w1.yaml calicoctl apply -f bgppeer-k-w2.yaml calicoctl apply -f bgppeer-k-w3.yaml <\/code><\/pre>\n<p>\u0427\u0435\u043a\u0430\u0435\u043c \u0442\u043e \u0432\u0441\u0435 \u043f\u0438\u0440\u044b \u0435\u0441\u0442\u044c:<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ calicoctl get bgppeer NAME                 PEERIP      NODE                                   ASN      k-master-to-switch   10.0.11.0   kubernetes.io\/hostname == \"k-master\"   65011    k-w1-to-switch       10.1.11.0   kubernetes.io\/hostname == \"k-w1\"       65011    k-w2-to-switch       10.2.22.0   kubernetes.io\/hostname == \"k-w2\"       65012    k-w3-to-switch       10.3.33.0   kubernetes.io\/hostname == \"k-w3\"       65013    <\/code><\/pre>\n<p>\u041d\u0430 \u0441\u0432\u0438\u0442\u0447\u0430\u0435\u0445 \u0432\u0441\u0435 \u0441\u0435\u0441\u0441\u0438 \u043f\u043e\u0434\u043d\u044f\u043b\u0438\u0441\u044c:<\/p>\n<pre><code class=\"lua\"> Leaf-1#show ip bgp su    Neighbor  V AS           MsgRcvd   MsgSent  InQ OutQ  Up\/Down State   PfxRcd PfxAcc   10.0.11.1 4 65000            220       635    0    0 02:55:10 Estab   32     32   10.1.11.1 4 65001             22       503    0    0 00:02:56 Estab   32     32   Leaf-2#show ip bgp summary     Neighbor  V AS           MsgRcvd   MsgSent  InQ OutQ  Up\/Down State   PfxRcd PfxAcc   10.2.22.1 4 65002             30       497    0    0 00:05:37 Estab   39     39  Leaf-3#show ip bgp summary     Neighbor  V AS           MsgRcvd   MsgSent  InQ OutQ  Up\/Down State   PfxRcd PfxAcc   10.3.33.1 4 65003             30       496    0    0 00:05:53 Estab   39     39 <\/code><\/pre>\n<p>\u041d\u043e \u043f\u043e \u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u0435\u0442 \u043a\u0443\u0447\u0430 \u043b\u0438\u0448\u043d\u0435\u0433\u043e &#8212; \u043d\u0430\u0434\u043e \u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c full-mesh<\/p>\n<h3>\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c full-mesh \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0442\u0443\u043d\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c<\/h3>\n<p>\u041f\u0430\u0442\u0447\u0438\u043c \u043d\u0430\u0448 \u043f\u0443\u043b, \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0442\u0430\u043c IPIP \u0442\u0443\u043d\u0435\u043b\u0438:<\/p>\n<p><code>kubectl patch ippool new-wonderful-pool --type='merge' -p='{\"spec\":{\"ipipMode\":\"Never\"}}'<\/code><\/p>\n<p>\u0438 NAT:<\/p>\n<p><code>kubectl patch ippool new-wonderful-pool --type='merge' -p='{\"spec\":{\"natOutgoing\":false}}'<\/code><\/p>\n<p>\u0420\u0435\u0441\u0442\u0430\u0440\u0442\u0438\u043c calico-\u043d\u043e\u0434\u044b \u0447\u0435\u0440\u0435\u0437 \u0440\u043e\u043b\u043b\u0430\u0443\u0442:<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ kubectl rollout restart daemonset\/calico-node -n kube-system daemonset.apps\/calico-node restarted user@K-Master:~$ kubectl rollout status daemonset\/calico-node -n kube-system Waiting for daemon set \"calico-node\" rollout to finish: 1 out of 4 new pods have been updated... Waiting for daemon set \"calico-node\" rollout to finish: 1 out of 4 new pods have been updated... Waiting for daemon set \"calico-node\" rollout to finish: 2 out of 4 new pods have been updated... Waiting for daemon set \"calico-node\" rollout to finish: 2 out of 4 new pods have been updated... Waiting for daemon set \"calico-node\" rollout to finish: 3 out of 4 new pods have been updated... Waiting for daemon set \"calico-node\" rollout to finish: 3 out of 4 new pods have been updated... Waiting for daemon set \"calico-node\" rollout to finish: 3 of 4 updated pods are available... daemon set \"calico-node\" successfully rolled out <\/code><\/pre>\n<p>\u041f\u043e\u043a\u0430 \u043d\u043e\u0434\u044b \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u0438\u043b\u0438\u0441\u044c \u044f \u043f\u0443\u0441\u0442\u0438\u043b \u043f\u0438\u043d\u0433 \u043e\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0434\u043e\u00a0<code>10.66.111.1<\/code>, \u043f\u0430\u0440\u0443 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u043e\u0441\u044c:<\/p>\n<pre><code class=\"lua\">64 bytes from 10.66.111.1: icmp_seq=54 ttl=60 time=12.2 ms 64 bytes from 10.66.111.1: icmp_seq=55 ttl=60 time=11.5 ms 64 bytes from 10.66.111.1: icmp_seq=56 ttl=60 time=13.2 ms From 10.4.44.0 icmp_seq=57 Destination Net Unreachable From 10.4.44.0 icmp_seq=58 Destination Net Unreachable From 10.4.44.0 icmp_seq=59 Destination Net Unreachable From 10.4.44.0 icmp_seq=60 Destination Net Unreachable From 10.4.44.0 icmp_seq=61 Destination Net Unreachable 64 bytes from 10.66.111.1: icmp_seq=62 ttl=60 time=13.7 ms 64 bytes from 10.66.111.1: icmp_seq=63 ttl=60 time=14.0 ms <\/code><\/pre>\n<p>\u041d\u0443 \u0438 \u0447\u0442\u043e \u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c full-mesh bgp &#8212; \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u043f\u0430\u0442\u0447\u0438\u0442\u044c \u043d\u0430\u0448 BGPConfig \u0438 full mesh \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u043e\u043f\u0430\u0441\u0442\u044c:<\/p>\n<pre><code class=\"lua\">user@K-Master:~$ calicoctl patch bgpconfig default --patch='{\"spec\":{\"nodeToNodeMeshEnabled\":false}}' Successfully patched 1 'BGPConfiguration' resource  user@K-Master:~$ sudo calicoctl node status Calico process is running.  IPv4 BGP status +--------------+---------------+-------+----------+-------------+ | PEER ADDRESS |   PEER TYPE   | STATE |  SINCE   |    INFO     | +--------------+---------------+-------+----------+-------------+ | 10.0.11.0    | node specific | up    | 08:50:34 | Established | +--------------+---------------+-------+----------+-------------+  * \u041d\u0443 \u0438 \u043f\u0440\u0438\u043c\u0435\u0440 \u0435\u0449\u0451 \u0441 \u043e\u0434\u043d\u043e\u0439 \u043d\u043e\u0434\u044b:  user@k-w1:~$ sudo calicoctl node status Calico process is running.  IPv4 BGP status +--------------+---------------+-------+----------+-------------+ | PEER ADDRESS |   PEER TYPE   | STATE |  SINCE   |    INFO     | +--------------+---------------+-------+----------+-------------+ | 10.1.11.0    | node specific | up    | 09:03:20 | Established | +--------------+---------------+-------+----------+-------------+ <\/code><\/pre>\n<p>\u0410 \u0432\u043e\u0442 \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u0432\u0438\u0442\u0447\u0435\u0439:<\/p>\n<pre><code class=\"lua\">Leaf-1#show ip bgp su BGP summary information for VRF default Router identifier 10.11.99.1, local AS number 65011 Neighbor Status Codes: m - Under maintenance   Neighbor  V AS           MsgRcvd   MsgSent  InQ OutQ  Up\/Down State   PfxRcd PfxAcc   10.0.11.1 4 65000            334       694    0    0 00:02:13 Estab   2      2   10.1.11.1 4 65001            131       560    0    0 00:02:13 Estab   2      2 <\/code><\/pre>\n<p>\u041f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u0432 \u0441\u0442\u0430\u043b\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043d\u043e \u043c\u0435\u043d\u044c\u0448\u0435 &#8212; \u0434\u0432\u0430. \u041e\u0434\u0438\u043d \u0434\u043b\u044f \u043f\u043e\u0434\u043e\u0432\u043e\u0439 \u0441\u0435\u0442\u0438, \u0434\u0440\u0443\u0433\u043e\u0439 \u0434\u043b\u044f \u0441\u0435\u0442\u0438 10.96.0.0\/12 (Cluster Services)<\/p>\n<p>\u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043b\u0438\u0444\u0430, \u0443 \u043d\u0435\u0433\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u043f\u043e BGP \u043d\u0430 \u043f\u043e\u0434\u043e\u0432\u044b\u0435 \u0441\u0435\u0442\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u043e\u0434\u044b:<\/p>\n<pre><code class=\"lua\">Leaf-1#show ip ro bgp | inc \/24  B E      10.66.95.0\/24 [200\/0] via 10.1.11.1, Ethernet3  B E      10.66.111.0\/24 [200\/0] via 10.0.11.1, Ethernet2  Leaf-2#show ip ro bgp | inc \/24  B E      10.66.217.0\/24 [200\/0] via 10.2.22.1, Ethernet2  Leaf-3#show ip ro bgp | inc \/24  B E      10.66.52.0\/24 [200\/0] via 10.3.33.1, Ethernet2 <\/code><\/pre>\n<p>\u0410 \u044d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e!<\/p>\n<p>\u041f\u0430\u0440\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043d\u0430 \u043a\u043e\u043d\u0435\u0446:<\/p>\n<p>\u041a\u0443\u0440\u043b \u043a\u0443\u0440\u043b\u0438\u0442\u044c\u0441\u044f \u0438\u0437\u0432\u043d\u0435:<\/p>\n<pre><code class=\"lua\">user@ubuntu:~$ curl -s http:\/\/10.66.111.2 &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Welcome to nginx!&lt;\/title&gt; <\/code><\/pre>\n<p>\u0418 \u0432\u0433\u0435\u0442\u0438\u0442\u0441\u044f \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u043e\u0434\u0430:<\/p>\n<pre><code class=\"bash\"> user@k-w2:~$ kubectl run test-pod2 --image=alpine --restart=Never --rm -it -- sh If you don't see a command prompt, try pressing enter.  \/ # curl -s http:\/\/10.66.111.2 sh: curl: not found  \/ # wget http:\/\/10.66.111.2 -S Connecting to 10.66.111.2 (10.66.111.2:80)   HTTP\/1.1 200 OK   Server: nginx\/1.29.1   Date: Fri, 22 Aug 2025 09:11:48 GMT   Content-Type: text\/html   Content-Length: 615   Last-Modified: Wed, 13 Aug 2025 15:10:23 GMT   Connection: close   ETag: \"689caadf-267\"   Accept-Ranges: bytes    saving to 'index.html' index.html           100% |*****************************************************************************************|   615  0:00:00 ETA 'index.html' saved <\/code><\/pre>\n<h2>\u0412\u044b\u0432\u043e\u0434<\/h2>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a \u0437\u0430 \u043f\u0430\u0440\u0443 \u043c\u0438\u043d\u0443\u0442 \u043c\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043b\u043e\u0441\u043a\u0443\u044e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u0441\u0435\u0442\u044c \u0432 \u043a\u0443\u0431\u0435 )<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/939806\/\"> https:\/\/habr.com\/ru\/articles\/939806\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><em>\u0414\u043b\u044f \u0441\u0435\u0442\u0435\u0432\u0438\u043a\u043e\u0432 \u043e\u0442 \u0441\u0435\u0442\u0435\u0432\u0438\u043a\u0430<\/em><\/p>\n<h4>\u0421\u0440\u0435\u0434\u0430<\/h4>\n<p>\u041a\u0430\u043a \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0446\u0430\u043d\u044b, \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u044e Kubernetes-\u0430 \u0432 \u0432\u0438\u0434\u0435 \u201cbaremetal-\u0430\u201d, \u0430 \u043f\u043e \u0444\u0430\u043a\u0442\u0443, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u044d\u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u0433\u043e\u043b\u044b\u0439 \u043c\u0435\u0442\u0430\u043b \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u0437 \u0441\u0435\u0431\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0443 \u0441 \u0443\u0431\u0443\u043d\u0442\u043e\u0439, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0440\u0435\u0434\u044b \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u043e\u0436\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430. \u041d\u0430\u043a\u0438\u0434\u0430\u0435\u043c \u0442\u0430\u043a\u0443\u044e \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u044e:  <\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u043d\u043e\u0440\u043c \u043f\u0430\u0446\u0430\u043d\u044b, \u0442\u043e:<\/p>\n<ol>\n<li>\n<p>\u0412\u0441\u0451 \u0441\u044d\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u044f\u043c\u043e \u0432 PNETLAB-\u0435<\/p>\n<\/li>\n<li>\n<p>\u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u044e Leaf-Spine<\/p>\n<\/li>\n<li>\n<p>\u041c\u044b \u043d\u0430\u0447\u0438\u0442\u0430\u043b\u0438\u0441\u044c\u00a0<a href=\"https:\/\/t.me\/NetArchNotes\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u043c\u0435\u0442\u043e\u043a \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440\u0430<\/a>, \u0438 \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0432\u043b\u0430\u043d\u043e\u0432, \u043f\u0440\u043e\u0441\u0442\u043e \u0447\u0438\u0441\u0442\u044b\u0439 L3 &#8212; \u0432\u0441\u0435 \u043b\u0438\u043d\u043a\u0438 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0435<\/p>\n<ul>\n<li>\n<p>\u041c\u0435\u0436\u0434\u0443 \u0441\u0432\u0438\u0442\u0447\u0430\u043c\u0438 \u043c\u044b \u043f\u043e\u0434\u044b\u043c\u0435\u043c OSFP, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0441\u0435\u0440\u0432\u0430\u0447\u043a\u0438 \u043c\u043e\u0433\u043b\u0438 \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0436\u043a\u043e\u0439 \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f. \u0417\u0434\u043e\u0440\u043e\u0432\u043e \u0431\u0443\u0434\u0435\u0442.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u041c\u044b \u0431\u0443\u0434\u0435\u043c \u044e\u0437\u0430\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0443\u0431\u0443\u043d\u0442\u0443 (\u043f\u0435\u0440\u0432\u043e\u0435 \u0447\u0442\u043e \u043f\u043e\u0434 \u0440\u0443\u043a\u0443 \u043f\u043e\u043f\u0430\u043b\u043e\u0441\u044c, \u043a\u0430\u0440\u043e\u0447\u0435):<\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"bash\">root@K-Master:~# lsb_release -a   No LSB modules are available.   Distributor ID:Ubuntu   Description:Ubuntu 22.04.2 LTS   Release:22.04   Codename:jammy<\/code><\/pre>\n<h4>\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0435\u0442\u0438<\/h4>\n<p>\u041d\u0430\u043c\u0443\u0442\u0438\u043c \u043a\u0430\u043a\u0443\u044e-\u043d\u0438\u0431\u0443\u0434\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a\u0443\u044e \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0447\u0442\u043e \u043d\u043e\u0434\u044b \u043f\u0438\u043d\u0433\u0430\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430:  <\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0423 \u201c\u043d\u0438\u0436\u043d\u0435\u0433\u043e\u201d \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 IP, \u0443 \u201c\u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e\u201d &#8212; \u043d\u0443\u043b\u0435\u0432\u043e\u0439. \u041c\u0435\u0436\u0434\u0443 \u043b\u0438\u0444\u0430\u043c\u0438 \u0438 \u0441\u043f\u0430\u0439\u043d\u0430\u043c\u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439 \u043e\u044d\u0441\u043f\u044d\u044d\u0444\u0447\u0438\u043a, \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u043b\u0438\u0444\u044b &#8212; \u0448\u043b\u044e\u0437\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:<\/p>\n<p>\u041d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u043b\u0438\u0444\u0435 \u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cs\">interface Ethernet1    no switchport    ip address 10.11.99.1\/31 ! interface Ethernet2    no switchport    ip address 10.0.11.0\/31 ! interface Ethernet3    no switchport    ip address 10.1.11.0\/31<\/code><\/pre>\n<p>\u041d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"lua\">root@K-Master:~# ip addr add 10.0.11.1\/31 dev ens3  # \u043f\u0438\u043d\u0433\u0443\u0435\u0442\u0446\u043e: root@K-Master:~# ping 10.0.11.0 PING 10.0.11.0 (10.0.11.0) 56(84) bytes of data. 64 bytes from 10.0.11.0: icmp_seq=1 ttl=64 time=32.3 ms 64 bytes from 10.0.11.0: icmp_seq=2 ttl=64 time=3.05 ms  # \u043d\u0443 \u0448\u043b\u044e\u0437 \u0435\u0449\u0451 \u043f\u0440\u043e\u043f\u0438\u0448\u0435\u043c root@K-Master:~# ip r add default via 10.0.11.0 dev ens3 root@K-Master:~# ip r default via 10.0.11.0 dev ens3  10.0.11.0\/31 dev ens3 proto kernel scope link src 10.0.11.1 <\/code><\/pre>\n<p>\u041d\u043e \u0442\u0430\u043a, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0434\u0435\u043b\u043e \u043d\u0435 \u043f\u043e\u0439\u0434\u0451\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u0432\u0435\u0449\u044c \u043d\u0435 \u043d\u0430\u0434\u0451\u0436\u043d\u0430\u044f &#8212; \u043d\u043e\u0434\u044b \u0440\u0435\u0431\u0443\u0442\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0431\u0435\u0437 \u0432\u0441\u044f\u043a\u043e\u0439 \u043d\u0430 \u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0430\u0434\u043e \u0437\u0430\u043f\u0435\u0440\u0441\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443 \u043a\u0430\u043a-\u0442\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0447\u0435\u0440\u0435\u0437 netplan:<\/p>\n<pre><code class=\"yaml\">root@K-Master:~# cat \/etc\/netplan\/01-KubeBase.yaml  network:   ethernets:     ens3:       addresses:       - 10.0.11.1\/31       dhcp4: false       routes:       -  to: default          via: 10.0.11.0   version: 2<\/code><\/pre>\n<h4>\u0422\u0435\u043f\u0435\u0440\u044c \u041e\u0422\u041c\u0410\u0421\u0428\u0422\u0410\u0411\u0418\u0420\u0423\u0415\u041c \u044d\u0442\u043e \u0432\u0441\u0451<\/h4>\n<p>\u041b\u0438\u04442:<\/p>\n<pre><code class=\"cs\">interface Ethernet1    no switchport    ip address 10.22.99.1\/31 ! interface Ethernet2    no switchport    ip address 10.2.22.0\/31 !<\/code><\/pre>\n<p>\u041b\u0438\u04443:<\/p>\n<pre><code class=\"cs\">interface Ethernet1    no switchport    ip address 10.33.99.1\/31 ! interface Ethernet2    no switchport    ip address 10.3.33.0\/31 !<\/code><\/pre>\n<p>\u0412\u043e\u0440\u043a\u0435\u04401:<\/p>\n<pre><code class=\"yaml\">root@k-w1:~#cat &lt;&lt;EOF &gt; \/etc\/netplan\/01-KubeBase.yaml network:   ethernets:     ens3:       addresses:       - 10.1.11.1\/31       dhcp4: false       routes:       -  to: default          via: 10.1.11.0   version: 2 EOF root@k-w1:~# netplan apply<\/code><\/pre>\n<p>\u0412\u043e\u0440\u043a\u0435\u04402<\/p>\n<pre><code class=\"yaml\">root@k-w2:~#cat &lt;&lt;EOF &gt; \/etc\/netplan\/01-KubeBase.yaml  network:   ethernets:     ens3:       addresses:       - 10.2.22.1\/31       dhcp4: false       routes:       -  to: default          via: 10.2.22.0   version: 2 EOF root@k-w2:~# netplan apply <\/code><\/pre>\n<p>\u0412\u043e\u0440\u043a\u0435\u0440 3<\/p>\n<pre><code class=\"yaml\">root@k-w3:~#cat &lt;&lt;EOF &gt; \/etc\/netplan\/01-KubeBase.yaml  network:   ethernets:     ens3:       addresses:       - 10.3.33.1\/31       dhcp4: false       routes:       -  to: default          via: 10.3.33.0   version: 2 EOF root@k-w3:~# netplan apply<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u0441\u0435\u0433\u043e \u0432\u043e\u0440\u043a\u0435\u0440 1 \u043c\u043e\u0436\u0435\u0442 \u043f\u0438\u043d\u0433\u0430\u0442\u044c \u043c\u0430\u0441\u0442\u0435\u0440\u0430:<\/p>\n<pre><code class=\"lua\">root@k-w1:~# ping 10.0.11.1 PING 10.0.11.1 (10.0.11.1) 56(84) bytes of data. 64 bytes from 10.0.11.1: icmp_seq=1 ttl=63 time=5.99 ms 64 bytes from 10.0.11.1: icmp_seq=2 ttl=63 time=24.9 ms<\/code><\/pre>\n<p>\u041d\u043e \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u0430 \u043d\u0435\u0442\u0443 \u0440\u0443\u0442\u0438\u043d\u0433\u0430 \u0447\u0435\u0440\u0435\u0437 \u0441\u043f\u0430\u0439\u043d. \u041a\u0430\u043a \u0438 \u043e\u0431\u0435\u0449\u0430\u043b, \u043c\u0443\u0442\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 OSFP.<\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0441\u043f\u0430\u0439\u043d:<\/p>\n<pre><code class=\"cs\">interface Ethernet1    no switchport    ip address 10.11.99.0\/31 ! interface Ethernet2    no switchport    ip address 10.22.99.0\/31 ! interface Ethernet3    no switchport    ip address 10.33.99.0\/31<\/code><\/pre>\n<p>\u0418 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0441\u0432\u0438\u0442\u0447\u0430\u0445 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c OSFP:<\/p>\n<pre><code class=\"cs\">router ospf 1    network 0.0.0.0\/0 area 0.0.0.0<\/code><\/pre>\n<p>(\u043d\u0435 \u043d\u0430\u0434\u043e \u0442\u0430\u043a \u043f\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 OSFP-\u0430 \u0432 \u043f\u0440\u043e\u0434\u0435, \u043d\u043e \u0434\u043b\u044f \u043b\u0430\u0431\u044b \u043f\u043e\u0434\u043e\u0439\u0434\u0451\u0442)<\/p>\n<p>OSFP \u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f:<\/p>\n<pre><code class=\"lua\">Spine-1#show ip ospf neighbor  Neighbor ID     Instance VRF      Pri State                  Dead Time   Address         Interface 10.11.99.1      1        default  1   FULL\/DR                00:00:29    10.11.99.1      Ethernet1 10.22.99.1      1        default  1   FULL\/DR                00:00:30    10.22.99.1      Ethernet2 10.33.99.1      1        default  1   FULL\/DR                00:00:35    10.33.99.1      Ethernet3  Spine-1#show ip ro ospf   O        10.0.11.0\/31 [110\/20] via 10.11.99.1, Ethernet1  O        10.1.11.0\/31 [110\/20] via 10.11.99.1, Ethernet1  O        10.2.22.0\/31 [110\/20] via 10.22.99.1, Ethernet2  O        10.3.33.0\/31 [110\/20] via 10.33.99.1, Ethernet3 <\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0435 \u0432\u043e\u0440\u043a\u0435\u0440\u044b \u0432\u0438\u0434\u044f\u0442 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u0438 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0436\u043a\u0443, \u0432\u043e\u0442 \u043f\u0440\u0443\u0444:<\/p>\n<pre><code class=\"lua\">root@k-w3:~# ping 10.0.11.1 PING 10.0.11.1 (10.0.11.1) 56(84) bytes of data. 64 bytes from 10.0.11.1: icmp_seq=1 ttl=61 time=13.6 ms 64 bytes from 10.0.11.1: icmp_seq=2 ttl=61 time=15.7 ms  root@k-w3:~# tracepath 10.0.11.1 -n  1?: [LOCALHOST]                      pmtu 1500  1:  10.3.33.0                                             3.027ms   1:  10.3.33.0                                             2.535ms   2:  10.33.99.0                                            6.473ms   3:  10.11.99.1                                           10.034ms   4:  10.0.11.1                                            11.929ms reached      Resume: pmtu 1500 hops 4 back 4 <\/code><\/pre>\n<p>\u0412\u0441\u0451! \u0412\u0441\u0451 \u0434\u0430 \u043d\u0435 \u0432\u0441\u0451 &#8212; ubunutu \u0443 \u043d\u0430\u0441 \u201c\u0433\u043e\u043b\u0430\u044f\u201d, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0442 \u043d\u0430\u0448 \u043a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u044b \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u044b. \u0412 PNETLAB, \u0435\u0441\u043b\u0438 \u0445\u043e\u0441\u0442 \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0431\u043b\u0430\u0447\u043a\u043e \u0441 \u0442\u0438\u043f\u043e\u043c NAT, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0443\u0434\u0430 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u043f\u043e dhcp \u0438 \u043d\u0430\u0441\u043b\u0430\u0436\u0434\u0430\u0442\u044c\u0441\u044f. \u0422\u0430\u043a \u043a\u0430\u043a \u044f \u044f\u0440\u044b\u0439 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u0438\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0447\u0435\u0433\u043e-\u043b\u0438\u0431\u043e \u043a\u0440\u043e\u043c\u0435 \u043b\u0438\u0444\u043e\u0444 \u0432 \u0441\u043f\u0430\u0439\u043d\u044b, \u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u0441\u043f\u0430\u0439\u043d \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u044f \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0443:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043b\u0438 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043d\u0430 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u043e\u0434\u0435:<\/p>\n<pre><code class=\"lua\">user@k-w1:~$ ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. From 10.1.11.0 icmp_seq=1 Destination Net Unreachable From 10.1.11.0 icmp_seq=2 Destination Net Unreachable From 10.1.11.0 icmp_seq=3 Destination Net Unreachable<\/code><\/pre>\n<p>\u041d\u0438\u0447\u0451 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u043d\u0430\u0434\u043e \u0447\u0442\u043e-\u0442\u043e \u0433\u0434\u0435-\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c. \u041d\u0430 \u0441\u043f\u0430\u0439\u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c IP \u0447\u0435\u0440\u0435\u0437 DHCP \u043d\u0430 \u043f\u043e\u0440\u0442\u0443, \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0434\u0435\u0444\u043e\u043b\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0432 \u0441\u0435\u0442\u0438 (\u0447\u0438\u0441\u0442\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u043b):<\/p>\n<pre><code class=\"lua\"># \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442: Spine-1#ping 8.8.8.8 connect: Network is unreachable  # \u0427\u0438\u043d\u0438\u043c Spine-1#conf t Spine-1(config)#int ethernet 4 Spine-1(config-if-Et4)#no switchport  Spine-1(config-if-Et4)#ip address dhcp   Spine-1#show ip int ethernet 4 brief                                            Interface      IP Address           Status      Protocol         MTU    Owner   -------------- -------------------- ----------- ------------- --------- ------- Ethernet4      10.0.137.189\/24      up          up              1500        Spine-1(config)#ip route 0.0.0.0 0.0.0.0  10.0.137.1  # \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Spine-1#ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 72(100) bytes of data. 80 bytes from 8.8.8.8: icmp_seq=1 ttl=99 time=23.2 ms 80 bytes from 8.8.8.8: icmp_seq=2 ttl=99 time=20.6 ms 80 bytes from 8.8.8.8: icmp_seq=3 ttl=99 time=20.6 ms 80 bytes from 8.8.8.8: icmp_seq=4 ttl=99 time=21.2 ms 80 bytes from 8.8.8.8: icmp_seq=5 ttl=99 time=20.7 ms  # \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u043c \u0434\u0435\u0444\u043e\u043b\u0442 \u043f\u043e \u0444\u0430\u0431\u0440\u0438\u043a\u0435: Spine-1(config)#router ospf 1 Spine-1(config-router-ospf)#redistribute static  # \u041d\u0430 \u043b\u0438\u0444, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u043e\u0440\u043a\u0435\u0440 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u0434\u0435\u0444\u043e\u043b\u0442 \u043f\u0440\u0438\u0448\u0451\u043b, \u0438 \u0432\u0438\u0434\u0451\u0442 \u043d\u0430 \u0441\u043f\u0430\u0439\u043d: Leaf-1#show ip ro 0.0.0.0 Gateway of last resort:  O E2     0.0.0.0\/0 [110\/1] via 10.11.99.0, Ethernet1  # \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0432\u043e\u0440\u043a\u0435\u0440\u04351: user@k-w1:~$ ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.    :(  #\u0422\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u0432\u0435\u0434\u0451\u0442 \u043a\u0443\u0434\u0430 \u043d\u0430\u0434\u043e: user@k-w1:~$ tracepath -n 8.8.8.8  1?: [LOCALHOST]                      pmtu 1500  1:  10.1.11.0                                             4.290ms   1:  10.1.11.0                                             2.697ms   2:  10.11.99.0                                            8.022ms   3:  no reply <\/code><\/pre>\n<p>\u0418 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u0431\u0440\u0438\u0434\u0436 \u0441 \u0441\u0430\u043c\u043e\u0439 \u043d\u043e\u0434\u043e\u0439, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d NAT \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442. \u041d\u043e \u043d\u043e\u0434\u0430 \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0438 \u043f\u0440\u043e \u043a\u0430\u043a\u0438\u0435 \u0432\u043e\u0440\u043a\u0435\u0440\u044b \u0438 \u0441\u0435\u0442\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043d\u0438 \u0436\u0438\u0432\u0443\u0442, \u0442\u0430\u043a \u0447\u0442\u043e \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u043c \u0440\u043e\u0443\u0442\u0435\u0440\u0435 (\u0441\u043f\u0430\u0439\u043d\u0435) \u0442\u043e\u0436\u0435 \u043d\u0443\u0436\u043d\u043e NAT \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c:<\/p>\n<pre><code class=\"lua\">Spine-1(config)#ip access-list ACL_NAT Spine-1(config-acl-ACL_NAT)# permit ip 10.0.0.0\/8 any log   Spine-1(config)#int et4 Spine-1(config-if-Et4)#ip nat source dynamic access-list ACL_NAT overload <\/code><\/pre>\n<p>\u0418 \u044d\u0442\u043e \u0434\u0430\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043f\u0446 \u043a\u0430\u043a \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e &#8212; \u0432\u0441\u0451 \u0442\u0430\u043a\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 pnetlab-\u0430 \u043d\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0434\u043b\u044f \u0441\u043a\u043e\u043b\u044c\u043a\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u0430\u0442\u0430\u043f\u043b\u0435\u0439\u043d\u0430.\u00a0\u0412 \u043e\u0431\u0449\u0435\u043c, \u044f \u0438\u0437\u043c\u0435\u043d\u0438\u043b \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0441\u0434\u0435\u043b\u043a\u0438\u00a0<s>\u0438 \u043c\u043e\u043b\u0438\u0442\u0435\u0441\u044c \u0447\u0442\u043e \u0431\u044b \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437<\/s>\u00a0&#8212; \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0445\u043e\u0441\u0442, \u0432\u043e\u0442\u043a\u043d\u0451\u043c \u0438\u0445 \u0432 \u044d\u0442\u043e \u043e\u0431\u043b\u0430\u0447\u043a\u043e \u0441 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043e\u043c, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0430\u0434\u0440\u0435\u0441 \u043f\u043e DHCP, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0434\u0435\u0444\u043e\u043b\u0442, \u0430 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0441\u0432\u0438\u0447\u0435\u0439 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u043f\u0438\u0448\u0435\u043c \u0441\u0442\u0430\u0442\u0438\u043a\u0443 \u043d\u0430 \u0441\u0435\u0442\u044c 10\/8, \u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043a\u043e\u0435, \u0432 \u043e\u0431\u0449\u0435\u043c, \u0447\u0442\u043e \u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c:<\/p>\n<pre><code class=\"lua\">user@k-w1:~$ ip r  default via 10.0.137.1 dev ens5 proto dhcp src 10.0.137.132 metric 100  10.0.0.0\/8 via 10.1.11.0 dev ens3 proto static  10.0.137.0\/24 dev ens5 proto kernel scope link src 10.0.137.132 metric 100  10.0.137.1 dev ens5 proto dhcp scope link src 10.0.137.132 metric 100  10.1.11.0\/31 dev ens3 proto kernel scope link src 10.1.11.1 <\/code><\/pre>\n<p>ens5 &#8212; \u044d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u043d\u043e\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0432\u043e\u0442\u043a\u043d\u0443\u0442\u044b\u0439 \u0432 \u043e\u0431\u043b\u0430\u0447\u043a\u043e \u0441 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430\u043c\u0438.<\/p>\n<h2>\u041d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e, kubernetes<\/h2>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e \u0442\u043e, \u0432 \u0447\u0451\u043c \u043d\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u044e\u0441\u044c \u0432\u043e\u043e\u0431\u0449\u0435.  <\/p>\n<h4>CNI<\/h4>\n<p>\u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043f\u0440\u043e \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 &#8212; \u0441\u0435\u0442\u0438 \u0441\u0430\u043c\u0438 \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u0430\u0445\u0443\u0439 \u043d\u0438 \u043a\u043e\u043c\u0443 \u043d\u0435 \u0443\u043f\u0451\u0440\u043b\u0438\u0441\u044c. \u0421\u0435\u0442\u0438 \u043d\u0443\u0436\u043d\u044b \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u041f\u043e\u043c\u043d\u0438\u0442\u0435 \u043f\u0440\u043e \u044d\u0442\u043e. \u0418 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0435 \u0432\u0435\u0440\u043d\u043e &#8212; \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0431\u0435\u0437 \u0441\u0435\u0442\u0435\u0439, \u0434\u0430\u0436\u0435 \u0432\u0441\u0435\u043c\u043e\u0433\u0443\u0449\u0438\u0439 \u043a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441. \u0417\u0430 \u0441\u0435\u0442\u0438 \u0432 \u043a\u0443\u0431\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 CNI &#8212; Container Network Interface. \u0417\u0430\u0434\u0430\u0447\u0438 \u0443 CNI \u0431\u0430\u0437\u043e\u0432\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u044b:<\/p>\n<ul>\n<li>\n<p>\u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u043e\u0434\u0438\u043a\u0430\u043c<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0441\u0432\u044f\u0437\u044c \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0434\u0438\u043a\u0430\u043c\u0438<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0441\u0432\u044f\u0437\u044c \u043f\u043e\u0434\u0438\u043a\u043e\u0432 \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u043c\u0438\u0440\u043e\u043c<\/p>\n<\/li>\n<li>\n<p>\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434\u0438\u043a\u0430\u043c<\/p>\n<\/li>\n<\/ul>\n<p>\u0410 \u043f\u043e\u0434 \u043a\u043e\u043f\u043e\u0442\u043e\u043c \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u043c\u0430\u0433\u0438\u044f.<\/p>\n<p>\u0410 \u0447\u0442\u043e \u0435\u0449\u0451 \u0437\u0430<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-471640","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/471640","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=471640"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/471640\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=471640"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=471640"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=471640"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}