<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>60219</bug_id>
          
          <creation_ts>2026-08-20 12:25:52 +0300</creation_ts>
          <short_desc>Ошибки при настройке Virtual (Shared) IP</short_desc>
          <delta_ts>2026-08-21 11:21:39 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Альт Оркестрация</product>
          <component>Ошибки работы</component>
          <version>11.0</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pivkin Denis">pivkindyu</reporter>
          <assigned_to name="Alexey Shabalin">shaba</assigned_to>
          <cc>geochip</cc>
    
    <cc>maks1ms</cc>
          
          <qa_contact name="Alexey Shabalin">shaba</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>292921</commentid>
    <comment_count>0</comment_count>
    <who name="Pivkin Denis">pivkindyu</who>
    <bug_when>2026-08-20 12:25:52 +0300</bug_when>
    <thetext>Образ:
Orchestra 11.0

Шаги для воспроизведения:
1) Развернуть кластер состоящий из трех ControlPlane узлов по документации Альт Оркестрация 25.3. Проверка работы VIP;
2) На рабочем месте администратора настроен дополнительный интерфейс в том же VLAN, что и ControlPlane. Настроена статика:
# mkdir /etc/net/ifaces/ens20
# cat &gt;&gt; /etc/net/ifaces/ens20/options &lt;&lt;EOF
TYPE=eth
BOOTPROTO=static
CONFIG_WIRELESS=no
SYSTEMD_BOOTPROTO=static
CONFIG_IPV4=yes
DISABLED=no
NM_CONTROLLED=no
SYSTEMD_CONTROLLED=no
EOF
# cat &gt;&gt; /etc/net/ifaces/ens20/ipv4address &lt;&lt;EOF
192.168.0.200/24
EOF
# systemctl restart network
3) Выполнить патч создания VIP (192.168.0.100) на всех узлах:
$ talosctl -n 192.168.0.140 patch machineconfig \
-p &apos;[{&quot;op&quot;:&quot;add&quot;,&quot;path&quot;:&quot;/machine/network/interfaces&quot;,&quot;value&quot;:[{&quot;deviceSelector&quot;:{&quot;physical&quot;:true},&quot;dhcp&quot;:true,&quot;vip&quot;:{&quot;ip&quot;:&quot;192.168.0.100&quot;}}]}]&apos;
$ talosctl -n 192.168.0.141 patch machineconfig \
-p &apos;[{&quot;op&quot;:&quot;add&quot;,&quot;path&quot;:&quot;/machine/network/interfaces&quot;,&quot;value&quot;:[{&quot;deviceSelector&quot;:{&quot;physical&quot;:true},&quot;dhcp&quot;:true,&quot;vip&quot;:{&quot;ip&quot;:&quot;192.168.0.100&quot;}}]}]&apos;
$ talosctl -n 192.168.0.142 patch machineconfig \
-p &apos;[{&quot;op&quot;:&quot;add&quot;,&quot;path&quot;:&quot;/machine/network/interfaces&quot;,&quot;value&quot;:[{&quot;deviceSelector&quot;:{&quot;physical&quot;:true},&quot;dhcp&quot;:true,&quot;vip&quot;:{&quot;ip&quot;:&quot;192.168.0.100&quot;}}]}]&apos;

4) Убедиться, что виртуальный IP-адрес назначен: $ talosctl get addresses 2&gt;/dev/null | grep 192.168.0.100
5) Скопировать конфигурацию k8s: $ cp ~/kubeconfig ~/vipk8sconfig
6) Заменить IP-адрес на виртуальный: $ sed -i &apos;s|192.168.1.2|192.168.1.100|g&apos; ~/vipk8sconfig
7) Создать скрипт для отслеживания виртуального IP-адреса: $ echo &apos;talosctl get addresses -e &lt;Адреса Control Plane, кроме узла с VIP&gt; | grep 192.168.0.100&apos; &gt; get.sh
8) Выполнить удаление VIP и убедиться, что виртуальный IP-адрес отсутствует: $ talosctl get addresses 2&gt;/dev/null | grep 192.168.0.100

Фактический результат:
1) Команда $ talosctl get addresses 2&gt;/dev/null | grep 192.168.0.100 при проверке назначения виртуального IP-адреса ничего не возвращает:
$ talosctl get addresses
nodes are not set for the command: please use `--nodes` flag or configuration file to set the nodes to run the command against

Usage:
  talosctl get &lt;type&gt; [&lt;id&gt;] [flags]

Aliases:
  get, g

Flags:
  -c, --cluster string             Cluster to connect to if a proxy endpoint is used.
      --context string             Context to be used in command
  -e, --endpoints strings          override default endpoints in Talos configuration
  -h, --help                       help for get
  -i, --insecure                   get resources using the insecure (encrypted with no auth) maintenance service
      --namespace string           resource namespace (default is to use default namespace per resource)
  -n, --nodes strings              target the specified nodes
  -o, --output string              output mode (json, table, yaml, jsonpath) (default &quot;table&quot;)
      --siderov1-keys-dir string   The path to the SideroV1 auth PGP keys directory. Defaults to &apos;SIDEROV1_KEYS_DIR&apos; env variable if set, otherwise &apos;$HOME/.talos/keys&apos;. Only valid for Contexts that use SideroV1 auth.
      --talosconfig string         The path to the Talos configuration file. Defaults to &apos;TALOSCONFIG&apos; env variable if set, otherwise &apos;$HOME/.talos/config&apos; and &apos;/var/run/secrets/talos.dev/config&apos; in order.
  -w, --watch                      watch resource changes

2) IP в команде замены IP-адреса на виртуальный указан неверно: 192.168.1.100
3) Команда в скрипте для отслеживания виртуального IP-адреса (talosctl get addresses -e &lt;Адреса Control Plane, кроме узла с VIP&gt; | grep 192.168.0.100) указана неверно:
$ talosctl --talosconfig test-vip/talosconfig get addresses -e &lt;IP address&gt;,&lt;IP address&gt;
nodes are not set for the command: please use `--nodes` flag or configuration file to set the nodes to run the command against

Usage:
  talosctl get &lt;type&gt; [&lt;id&gt;] [flags]

Aliases:
  get, g

Flags:
  -c, --cluster string             Cluster to connect to if a proxy endpoint is used.
      --context string             Context to be used in command
  -e, --endpoints strings          override default endpoints in Talos configuration
  -h, --help                       help for get
  -i, --insecure                   get resources using the insecure (encrypted with no auth) maintenance service
      --namespace string           resource namespace (default is to use default namespace per resource)
  -n, --nodes strings              target the specified nodes
  -o, --output string              output mode (json, table, yaml, jsonpath) (default &quot;table&quot;)
      --siderov1-keys-dir string   The path to the SideroV1 auth PGP keys directory. Defaults to &apos;SIDEROV1_KEYS_DIR&apos; env variable if set, otherwise &apos;$HOME/.talos/keys&apos;. Only valid for Contexts that use SideroV1 auth.
      --talosconfig string         The path to the Talos configuration file. Defaults to &apos;TALOSCONFIG&apos; env variable if set, otherwise &apos;$HOME/.talos/config&apos; and &apos;/var/run/secrets/talos.dev/config&apos; in order.
  -w, --watch                      watch resource changes
4) Команда $ talosctl get addresses 2&gt;/dev/null | grep 192.168.0.100 при проверке удаления виртуального IP-адреса ничего не возвращает.

Ожидаемый результат:
1) Команда проверки назначения виртуального IP-адреса указана верно: $ talosctl -n &lt;ip_cp1&gt;,&lt;ip_cp2&gt;,&lt;ip_cp3&gt; get addresses | grep 192.168.0.100
2) IP в команде замены IP-адреса на виртуальный указан верно: 192.168.0.100
3) Команда в скрипте для отслеживания виртуального IP-адреса указана верно: *@talosctl get addresses -n &lt;ip_cp2&gt;,&lt;ip_cp3&gt; | grep 192.168.0.100
4) Команда проверки удаления виртуального IP-адреса указана верно: $ talosctl -n &lt;ip_cp1&gt;,&lt;ip_cp2&gt;,&lt;ip_cp3&gt; get addresses | grep 192.168.0.100</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>