REPO INI SEKARANG DITINGGALKAN
Jika Anda tertarik untuk menggunakan maintened fork dari repo ini, silakan gunakan pelotech-nidhogg, fork yang telah disetujui untuk dipelihara oleh tim teknik di Pelotech.
Lihat masalah ini untuk lebih jelasnya
Kami hanya tim kecil dan kami tidak memiliki kapasitas untuk memelihara alat yang tidak kami gunakan lagi, jadi mulai sekarang kami akan memindahkan repo ini ke Abandoned tapi kami senang tim seperti yang ada di Pelotech ada. berinvestasi dalam solusi ini dan memberikan kontribusi kembali kepada komunitas open source dengan mempertahankan fork yang aktif.
Nidhogg adalah sebuah pengontrol yang mencemari node berdasarkan apakah sebuah Pod dari Daemonset tertentu sedang berjalan pada node tersebut.
Terkadang Anda memiliki Daemonset yang sangat penting sehingga Anda tidak ingin pod lain berjalan di node Anda sampai Daemonset tersebut aktif dan berjalan di node tersebut. Nidhogg memecahkan masalah ini dengan melakukan taint pada node hingga pod Daemonset Anda siap, sehingga mencegah pod yang tidak mentoleransi taint untuk dijadwalkan di sana.
Nidhogg memberi anotasi pada node ketika semua noda yang diperlukan telah dihapus: nidhogg.uswitch.com/first-time-ready: 2006-01-02T15:04:05Z
Nidhogg dibangun menggunakan Kubebuilder
Nidhogg memerlukan file konfigurasi yaml/json untuk memberitahukannya Daemonset apa yang harus diperhatikan dan node mana yang harus ditindaklanjuti. nodeSelector
adalah peta kunci/nilai yang sesuai dengan label node. daemonsets
adalah larik Daemonset yang harus diperhatikan, masing-masing berisi dua bidang name
dan namespace
. Node tercemar dengan taint yang mengikuti format nidhogg.uswitch.com/namespace.name:NoSchedule
.
Contoh:
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 "
}
]
}
Contoh ini akan memilih node apa pun di AWS ASG bernama "standar" atau "khusus" yang memiliki label node-role.kubernetes.io/node
, dan tidak ada node dengan label node-role.kubernetes.io/master
. Jika node yang cocok tidak memiliki pod yang berjalan dan siap pakai dari daemonset kiam
di namespace kube-system
. Ini akan menambahkan noda nidhogg.uswitch.com/kube-system.kiam:NoSchedule
hingga ada kiam pod yang siap pada node.
Jika Anda ingin pod dapat berjalan pada node yang tercemar nidhogg, Anda dapat menambahkan toleransi:
spec :
tolerations :
- key : nidhogg.uswitch.com/kube-system.kiam
operator : " Exists "
effect : NoSchedule
Gambar Docker dapat ditemukan di https://quay.io/uswitch/nidhogg
Contoh manifes Kustomize dapat ditemukan di sini untuk menyebarkannya dengan cepat ke sebuah 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")