該回購協議現已放棄
如果您有興趣使用此儲存庫的維護分叉,請使用 pelotech-nidhogg,Pelotech 的工程團隊已同意維護該分叉。
請參閱此問題以了解更多詳細信息
我們只是一個小團隊,我們沒有能力維護我們不再使用的工具,因此從現在開始,我們將把這個存儲庫移至“廢棄”,但我們很高興像 Pelotech 這樣的團隊投資該解決方案並通過維護活躍的分叉來回饋開源社群。
Nidhogg 是一個控制器,它根據特定 Daemonset 中的 Pod 是否在節點上運行來污染節點。
有時,您有一個非常重要的 Daemonset,以至於您不希望其他 Pod 在您的節點上運行,直到該 Daemonset 在該節點上啟動並運行。 Nidhogg 透過污染節點直到 Daemonset pod 準備好來解決這個問題,從而防止不能容忍污染的 pod 調度到那裡。
當所有必要的污點被刪除時,Nidhogg 註解節點: nidhogg.uswitch.com/first-time-ready: 2006-01-02T15:04:05Z
Nidhogg 是使用 Kubebuilder 建構的
Nidhogg 需要一個 yaml/json 設定檔來告訴它要監視哪些 Daemonsets 以及要對哪些節點進行操作。 nodeSelector
是與節點標籤對應的鍵/值的對應。 daemonsets
是要監視的 Daemonsets 數組,每個 Daemonsets 包含兩個字段name
和namespace
。節點受到以下格式的污點污染: nidhogg.uswitch.com/namespace.name:NoSchedule
。
例子:
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 "
}
]
}
此範例將選擇 AWS ASG 中名為「standard」或「special」且具有標籤node-role.kubernetes.io/node
的任何節點,並且不選擇具有標籤node-role.kubernetes.io/master
的節點。如果符合節點沒有來自kube-system
命名空間中的kiam
daemonset 的正在運作且準備就緒的 pod。它將添加nidhogg.uswitch.com/kube-system.kiam:NoSchedule
污點,直到節點上有就緒的 kiam pod。
如果您希望 pod 能夠在 nidhogg 污染的節點上運行,您可以添加一個容忍度:
spec :
tolerations :
- key : nidhogg.uswitch.com/kube-system.kiam
operator : " Exists "
effect : NoSchedule
Docker 映像可以在 https://quay.io/uswitch/nidhogg 找到
可以在此處找到範例 Kustomize 清單,以將其快速部署到叢集。
-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")