CE REPO EST MAINTENANT ABANDONNÉ
Si vous souhaitez utiliser un fork maintenu de ce dépôt, veuillez utiliser pelotech-nidhogg, le fork que l'équipe d'ingénierie de Pelotech a aimablement accepté de maintenir.
Voir ce problème pour plus de détails
Nous ne sommes qu'une petite équipe et nous n'avons pas la capacité de maintenir un outil que nous n'utilisons plus, donc désormais nous allons déplacer ce repo vers Abandoned mais nous sommes heureux qu'une équipe comme celle de Pelotech soit investir dans cette solution et redonner à la communauté open source en maintenant un fork actif.
Nidhogg est un contrôleur qui corrompt les nœuds selon qu'un pod d'un Daemonset spécifique est exécuté sur eux.
Parfois, vous disposez d'un ensemble de démons si important que vous ne souhaitez pas que d'autres pods s'exécutent sur votre nœud tant que ce ensemble de démons n'est pas opérationnel sur le nœud. Nidhogg résout ce problème en corrompant le nœud jusqu'à ce que votre pod Daemonset soit prêt, empêchant ainsi les pods qui ne tolèrent pas la souillure de s'y planifier.
Nidhogg annote le nœud lorsque toutes les souillures requises sont supprimées : nidhogg.uswitch.com/first-time-ready: 2006-01-02T15:04:05Z
Nidhogg a été construit à l'aide de Kubebuilder
Nidhogg nécessite un fichier de configuration yaml/json pour lui indiquer quels démonsets surveiller et sur quels nœuds agir. nodeSelector
est une carte de clés/valeurs correspondant aux étiquettes de nœuds. daemonsets
est un tableau de Daemonsets à surveiller, chacun contenant deux champs name
et namespace
. Les nœuds sont entachés d'une teinte qui suit le format de nidhogg.uswitch.com/namespace.name:NoSchedule
.
Exemple:
YAML :
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 "
}
]
}
Cet exemple sélectionnera tous les nœuds des AWS ASG nommés « standard » ou « spécial » qui ont l'étiquette node-role.kubernetes.io/node
présente, et aucun nœud avec l'étiquette node-role.kubernetes.io/master
. Si les nœuds correspondants n'ont pas de pod en cours d'exécution et prêt du démonset kiam
dans l'espace de noms kube-system
. Cela ajoutera une teinte de nidhogg.uswitch.com/kube-system.kiam:NoSchedule
jusqu'à ce qu'il y ait un pod kiam prêt sur le nœud.
Si vous souhaitez que les pods puissent s'exécuter sur les nœuds contaminés nidhogg, vous pouvez ajouter une tolérance :
spec :
tolerations :
- key : nidhogg.uswitch.com/kube-system.kiam
operator : " Exists "
effect : NoSchedule
Les images Docker peuvent être trouvées sur https://quay.io/uswitch/nidhogg
Des exemples de manifestes Kustomize peuvent être trouvés ici pour les déployer rapidement sur un cluster.
-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")