Как мне предотвратить замену IP-адресов нескольких контейнеров, запущенных внутри модуля, если модуль перезапускается / завершается сбоем в kubernetes?

#cassandra #kubernetes-statefulset #kubernetes-networkpolicy

#cassandra #kubernetes-statefulset #kubernetes-networkpolicy

Вопрос:

Мы настроили кластер Cassandra в Kubernetes. Мы используем StatefulSet amp; headless service. И планирую реализовать функцию многостоечной.

Для этого я хочу развернуть несколько контейнеров внутри модуля и планирую добавить правила привязки для этого.

Но одна из возможных проблем, о которой я могу подумать, это

В Kubernetes IP может меняться во время перезапуска / сбоя.

Итак, если у меня есть 2 контейнера внутри модуля, и мой модуль выходит из строя. При запуске модуля pod существует вероятность, что оба контейнера могут поменять свои IP-адреса, что приведет к несогласованному состоянию. Поскольку диапазоны первичных токенов для этих 2 контейнеров изменены, а другие узлы Cassandra не обновляются об этом изменении.

Если оба контейнера получат новые IP-адреса, я не вижу никаких проблем, потому что другие узлы Cassandra обновятся сами. Прав ли я на данный момент?

Как мне предотвратить эту замену IP-адресов во время перезапуска / сбоя?

Есть ли какой-либо доступный документ, который может помочь мне реализовать функцию многостоек?

Ответ №1:

Итак, если у меня есть 2 контейнера внутри модуля, и мой модуль выходит из строя. При запуске модуля pod существует вероятность, что оба контейнера могут поменять свои IP-адреса, что приведет к несогласованному состоянию. Поскольку диапазоны первичных токенов для этих 2 контейнеров изменены, а другие узлы Cassandra не обновляются об этом изменении.

Замена IP-адресов невозможна. Поскольку C * cluster будет жаловаться, что IP-адрес уже используется. Поэтому нормально, если C * pod выдает какой-либо другой IP, отличный от существующего в кластере C *, но если он попытается найти IP, существующий в кластере C *, то pod не сможет запуститься и останется зависшим.

Если оба контейнера получат новые IP-адреса, я не вижу никаких проблем, потому что другие узлы Cassandra обновятся сами. Прав ли я на данный момент?

Да, вы правы в этом.

Как мне предотвратить эту замену IP-адресов во время перезапуска / сбоя?

Вместо замены IP-адресов мы можем назвать это IP crossover. Вы не можете предотвратить эту ситуацию. Вы можете предпринять действия по исправлению положения только при возникновении такой ситуации. Вы можете определить, что произошло пересечение IP-адресов, а затем отключить модуль и посмотреть, поднимает ли он какой-либо другой IP.