политика отключения kubernetes replicaSet

=— это присвоение. Используйте ==для сравнения значений. Вы получаете 1, потому что, по сути, у вас есть $1 = ($2 && $3 = $4).

awk 'NF == 5 && $1 == $2 && $3 == $4 { print $1, $5 }' filename

Также обратите внимание, что ваши данные содержат 5 или 6 столбцов, а не 4 или 5, поэтому, возможно, вы хотели использовать

$ awk 'NF == 6 && $2 == $3 && $4 == $5 { print $1, $6 }' filename
343 test
565 testi
345 testin

NF— это переменная awk, которая содержит количество полей в текущей записи. Разделителем вывода по умолчанию(OFS)является пробел, поэтому нет необходимости печатать явный пробел с print.

Кроме того, если бы вы хотели напечатать явный пробел, это было бы более читабельно сделать

print $1 " " $6

вместо

print $1" "$6

awkобъединяет значения переменных и строк, когда они встречаются друг за другом. Пробелы между переменными и строками не имеют значения.

0
31.01.2021, 12:45
2 ответа

Жизненный цикл Kubernetes — хорошее решение для подобных проблем:
Крючки жизненного цикла контейнера

0
18.03.2021, 22:33

Это можно сделать с помощью тупой -инициализации.

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

В вашем Dockerfile должно быть что-то вроде

CMD ["dumb-init", "--rewrite", "15:28", "/app/start.sh"]

Проверьте с помощью kill -l, SIGINTдолжно быть число 15.

Затем в стартовом сценарии вы можете перехватить сигналSIGWINCH(28):

#!/bin/sh

trap "cd /app ; catalina.sh stop" SIGWINCH

[your startup script]
exec $JAVA_HOME/bin/java...

редактировать, как я вижу, был принят другой ответ :конечно, хуки жизненного цикла контейнера могли бы звучать красиво.

С одной стороны, они существуют уже около года :могут оказаться непригодными для использования в зависимости от версии вашего кластера.

И тогда вы поймете, что они работают только при завершениях, управляемых API, что может быть проблемой.

1
18.03.2021, 22:33

Теги

Похожие вопросы