Я пытаюсь настроить кластер хранилища с автоматическим запечатыванием в кубернетах, но наблюдаю странное поведение.
У меня есть одно хранилище, обеспечивающее транзитный секрет для автоматического опознавания второго хранилища. Они работают в одном кластере k8s в разных пространствах имен. Второе хранилище запускается в модуле со сценарием автоматического запуска (см. Ниже), но при запуске хранилища init зависает и в конечном итоге возвращает код 2 (тайм-аут), несмотря на то, что экземпляр хранилища успешно инициализирован и распечатан.
Проблема в том, что я пытаюсь запустить второе хранилище с помощью сценария после запуска в его модуле, и код ошибки 2 нарушает работу модуля.
Кто-нибудь видел подобное поведение или может помочь его решить?
apiVersion: v1
kind: ConfigMap
metadata:
name: post-start
data:
post-start.sh: |
#!/bin/sh
#redirect stdout and stderr to kube logs
# exec &> /proc/1/fd/1
export VAULT_CLIENT_TIMEOUT=240
echo $VAULT_CLIENT_TIMEOUT > /proc/1/fd/1
nc -z 127.0.0.1 8200
while [ $? = 1 ]; do
sleep 2
nc -z 127.0.0.1 8200
done
echo "port 8200 ready" > /proc/1/fd/1
vault init
После некоторой игры выясняется, что настоящая проблема заключалась в том, что порт 8200 никогда не был готов, потому что второе хранилище не запускалось. Второе хранилище не запускалось, потому что оно не могло связаться с хранилищем 1, и я разобрался, правильно настроив TLS (эта ссылка может пригодиться)
После настройки TLS хранилище 2 смогло запуститься, и пост-сценарий успешно завершился.
Пожалуйста, обратитесь к документация определения обработчиков postStart и preStop и для крючки жизненного цикла контейнера:
Доставка крючка должна быть по крайней мере один раз, что означает, что ловушка может вызываться несколько раз для любого данного события, например, для PostStart или PreStop. Реализация ловушки должна правильно с этим справиться.
Посмотрите например:
lifecycle:
postStart:
exec:
command:
- "sh"
- "-c"
- >
if [ -s /var/www/mybb/inc/config.php ]; then
rm -rf /var/www/mybb/install;
fi;
if [ ! -f /var/www/mybb/index.php ]; then
cp -rp /originroot/var/www/mybb/. /var/www/mybb/;
fi
Также предоставьте журналы сбоя POD.