почему ip узла кластера не является ip текущего модуля - PullRequest
0 голосов
/ 25 февраля 2020

Я являюсь модулем входа kubernetes (v1.15.2) для проверки текущего IP-адреса кластера Redis, но проблема заключается в кластере Redis (Redis: 5.0.1-alpine). IP-адрес не является IP-адресом текущего модуля:

~ ⌚ 23:45:03
$ kubectl exec -it redis-app-0 /bin/ash
/data # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:1E:E0:1E
          inet addr:172.30.224.30  Bcast:172.30.231.255  Mask:255.255.248.0
          UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1
          RX packets:78447 errors:0 dropped:0 overruns:0 frame:0
          TX packets:64255 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:74638073 (71.1 MiB)  TX bytes:74257972 (70.8 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:3922 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3922 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:297128 (290.1 KiB)  TX bytes:297128 (290.1 KiB)

/data # /usr/local/bin/redis-cli -c
127.0.0.1:6379> cluster nodes
a1ecebe5c9dc2f9edbe3c239c402881da10da6de 172.30.224.22:6379@16379 myself,master - 0 1582644797000 0 connected
127.0.0.1:6379>

IP-адрес модуля: 172.30.224.30, а IP-адрес redis: 172.30.224.22, в чем проблема? Возможно ли это исправить?

1 Ответ

1 голос
/ 25 февраля 2020

Как этот IP-адрес определяется в вашей конфигурации redis? Редис, должно быть, взял это откуда-то. Помните, что Pod ip может изменяться при воссоздании Pod, поэтому у вас нет гарантии, что IP-адрес, определенный в вашем узле Redis , статически не изменится. Я бы даже сказал, что вы можете быть почти на 100% уверены, что это изменится.

Вы можете проверить IP-адрес определенного интерфейса несколькими способами. Одним из них является выполнение:

hostname -I | awk '{print $1}'

Вы можете попытаться добавить контейнер init к вашему Pod работающему простому bash сценарию, который будет проверять текущий IP-адрес хоста, например, используя вышеупомянутая команда и затем заполнила бы конфигурацию redis соответственно. Но это кажется мне излишним, и я почти уверен, что это можно сделать проще. Если ваш узел redis по умолчанию привязан к всем IP-адресам (0.0.0.0), на выходе cluster nodes должен отображаться текущий IP-адрес вашего Pod.

* 1021. * Предоставляете ли вы Redis конфигурацию для вашего Pod через некоторые ConfigMap?

Пожалуйста, поделитесь более подробной информацией, связанной с вашим Deployment, чтобы вы могли получить более точный ответ, который решит вашу конкретную проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...