ЭТО РЕПО СЕЙЧАС ЗАКАЗЫВАЕТСЯ
Если вы заинтересованы в использовании поддерживаемой вилки этого репозитория, используйте pelotech-nidhogg, вилку, которую команда инженеров Pelotech любезно согласилась поддерживать.
Подробнее см. в этом выпуске.
Мы всего лишь небольшая команда, и у нас нет возможности поддерживать инструмент, который мы больше не используем, поэтому с этого момента мы перенесем этот репозиторий в Заброшенный, но мы рады, что такая команда, как команда Pelotech, инвестируя в это решение и возвращая пользу сообществу открытого исходного кода, поддерживая активный форк.
Nidhogg — это контроллер, который портит узлы в зависимости от того, запущен ли на них под из определенного демонсета.
Иногда у вас есть набор демонов, который настолько важен, что вы не хотите, чтобы другие модули запускались на вашем узле до тех пор, пока этот набор демонов не будет запущен и не заработает на узле. Nidhogg решает эту проблему, искажая узел до тех пор, пока ваш модуль Daemonset не будет готов, не позволяя модулям, которые не допускают такого загрязнения, планировать там работу.
Нидхёгг аннотирует узел после удаления всех необходимых загрязнений: nidhogg.uswitch.com/first-time-ready: 2006-01-02T15:04:05Z
Нидхёгг был создан с использованием Kubebuilder.
Nidhogg требуется файл конфигурации yaml/json, чтобы указать, какие демонсеты следует отслеживать и с какими узлами действовать. nodeSelector
— это карта ключей/значений, соответствующих меткам узлов. daemonsets
— это массив демонсетов для просмотра, каждый из которых содержит два поля name
и namespace
. Узлы испорчены пятном, которое соответствует формату nidhogg.uswitch.com/namespace.name:NoSchedule
.
Пример:
ЯМЛ:
nodeSelector :
node-role.kubernetes.io/node
daemonsets :
- name : kiam
namespace : kube-system
JSON:
{
"nodeSelector" : [
" node-role.kubernetes.io/node " ,
" !node-role.kubernetes.io/master " ,
" aws.amazon.com/ec2.asg.name in (standard, special) "
],
"daemonsets" : [
{
"name" : " kiam " ,
"namespace" : " kube-system "
}
]
}
В этом примере будут выбраны любые узлы в AWS ASG с именем «стандартный» или «специальный», у которых есть метка node-role.kubernetes.io/node
, и нет узлов с меткой node-role.kubernetes.io/master
. Если на соответствующих узлах нет работающего и готового модуля из набора демонов kiam
в пространстве имен kube-system
. Это добавит оттенок nidhogg.uswitch.com/kube-system.kiam:NoSchedule
до тех пор, пока на узле не появится готовый модуль kiam.
Если вы хотите, чтобы модули могли работать на узлах, зараженных nidhogg, вы можете добавить допуск:
spec :
tolerations :
- key : nidhogg.uswitch.com/kube-system.kiam
operator : " Exists "
effect : NoSchedule
Образы Docker можно найти по адресу https://quay.io/uswitch/nidhogg.
Примеры манифестов настройки можно найти здесь, чтобы быстро развернуть их в кластере.
-config-file string
Path to config file (default "config.json")
-kubeconfig string
Paths to a kubeconfig. Only required if out-of-cluster.
-leader-configmap string
Name of configmap to use for leader election
-leader-election
enable leader election
-leader-namespace string
Namespace where leader configmap located
-master string
The address of the Kubernetes API server. Overrides any value in kubeconfig. Only required if out-of-cluster.
-metrics-addr string
The address the metric endpoint binds to. (default ":8080")