LINUX.ORG.RU

История изменений

Исправление samson_b, (текущая версия) :

Это скорее всего неверно и проблема была совсем в другом.

Проблема была именно в этом. Я нашел несколько issues на гитхабе, где люди решали проблему именно так. У меня она точно также решилась.

Вопрос моего топика не в том, почему dashboard не заработал, а почему pod не поставился на мастер ноду.

Сейчас еще раз углубился в tains и tolerations, поправьте меня если я не прав, вот что я понял:

tains - это метки, которые ставятся на ноды.

tolerations - это метки, которые ставятся на поды.

Каждая метка имеет название (key), значение (value) и действие (effect)

Система работает следующим образом, чтобы применить (например установить) pod к ноде нужно, чтобы tolerations у pod совпали с tains у node.

В данном случае мастер нода имеет следующий tain

key=node-role.kubernetes.io/master

value= (не указано, т.е. пустое)

effect=NoSchedule (значит не устанавливать)

Есть два способа сравнить trains и tolerations: 1. Сравнить у обоих key и value (оператор Equal) 2. Проверить наличие у обоих одинаковых key (оператор Exists)

В оригинальном yaml pod указано:

tolerations:
        - key: node-role.kubernetes.io/master
          effect: NoSchedule

Оператор Equal используется по умолчанию (если не указывать ничего), но тогда нужно обязательно указать value, если value не указывать, то нужно указать использование оператора Exists

Т.е. правильный код должен выглядеть так

tolerations:
        - key: node-role.kubernetes.io/master
          operator: "Exists"
          effect: NoSchedule

В оригинальном коде пропущена строка с указанием оператора (operator: «Exists»)

Я думаю проблема в этом

Исходная версия samson_b, :

Это скорее всего неверно и проблема была совсем в другом.

Проблема была именно в этом. Я нашел несколько issues на гитхабе, где люди решали проблему именно так. У меня она точно также решилась.

Вопрос моего топика не в том, почему dashboard не заработал, а почему pod не поставился на мастер ноду.

Сейчас еще раз углубился в tains и tolerations, поправьте меня если я не прав, вот что я понял:

tains - это метки, которые ставятся на ноды.

tolerations - это метки, которые ставятся на поды.

Каждая метка имеет название (key), значение (value) и действие (effect)

Система работает следующим образом, чтобы применить (например установить) pod к ноде нужно, чтобы tolerations у pod совпали с tains у node.

В данном случае мастер нода имеет следующий tain

key=node-role.kubernetes.io/master

value= (не указано, т.е. пустое)

effect=NoSchedule (значит не устанавливать)

Есть два способа сравнить trains и tolerations: 1. Сравнить у обоих key и value (оператор Equal) 2. Проверить наличие у обоих одинаковых key (оператор Exist)

В оригинальном yaml pod указано:

tolerations:
        - key: node-role.kubernetes.io/master
          effect: NoSchedule

Оператор Equal используется по умолчанию (если не указывать ничего), но тогда нужно обязательно указать value, если value не указывать, то нужно указать использование оператора Exist

Т.е. правильный код должен выглядеть так

tolerations:
        - key: node-role.kubernetes.io/master
          operator: "Exist"
          effect: NoSchedule

В оригинальном коде пропущена строка с указанием оператора (operator: «Exist»)

Я думаю проблема в этом