ESTE REPO AHORA ESTÁ SIENDO ABANDONADO
Si está interesado en utilizar una bifurcación mantenida de este repositorio, utilice pelotech-nidhogg, la bifurcación que el equipo de ingeniería de Pelotech acordó amablemente mantener.
Consulte este número para obtener más detalles.
Somos solo un equipo pequeño y no tenemos la capacidad de mantener una herramienta que ya no usamos, por lo que de ahora en adelante trasladaremos este repositorio a Abandonado, pero estamos felices de que un equipo como el de Pelotech esté disponible. invertir en esta solución y retribuir a la comunidad de código abierto manteniendo una bifurcación activa.
Nidhogg es un controlador que contamina los nodos en función de si se está ejecutando en ellos un Pod de un Daemonset específico.
A veces tienes un Daemonset que es tan importante que no quieres que otros pods se ejecuten en tu nodo hasta que ese Daemonset esté funcionando en el nodo. Nidhogg resuelve este problema contaminando el nodo hasta que su pod Daemonset esté listo, evitando que los pods que no toleran la contaminación se programen allí.
Nidhogg anota el nodo cuando se eliminan todas las manchas requeridas: nidhogg.uswitch.com/first-time-ready: 2006-01-02T15:04:05Z
Nidhogg fue construido usando Kubebuilder
Nidhogg requiere un archivo de configuración yaml/json para indicarle qué Daemonsets observar y en qué nodos actuar. nodeSelector
es un mapa de claves/valores correspondientes a etiquetas de nodos. daemonsets
es una matriz de Daemonsets para observar, cada uno de los cuales contiene dos campos name
y namespace
. Los nodos están contaminados con una contaminación que sigue el formato de nidhogg.uswitch.com/namespace.name:NoSchedule
.
Ejemplo:
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 "
}
]
}
Este ejemplo seleccionará cualquier nodo en AWS ASG denominado "estándar" o "especial" que tenga la etiqueta node-role.kubernetes.io/node
presente, y ningún nodo con la etiqueta node-role.kubernetes.io/master
. Si los nodos coincidentes no tienen un pod listo y en ejecución del kiam
daemonset en el espacio de nombres kube-system
. Agregará una mancha de nidhogg.uswitch.com/kube-system.kiam:NoSchedule
hasta que haya un kiam pod listo en el nodo.
Si desea que los pods puedan ejecutarse en los nodos contaminados de nidhogg, puede agregar una tolerancia:
spec :
tolerations :
- key : nidhogg.uswitch.com/kube-system.kiam
operator : " Exists "
effect : NoSchedule
Las imágenes de Docker se pueden encontrar en https://quay.io/uswitch/nidhogg
Aquí se pueden encontrar ejemplos de manifiestos de Kustomize para implementarlos rápidamente en un clúster.
-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")