이 저장소는 현재 폐기되고 있습니다
이 저장소의 유지 관리 포크 사용에 관심이 있으시면 Pelotech의 엔지니어링 팀이 유지 관리에 동의한 포크인 pelotech-nidhogg를 사용하세요.
자세한 내용은 이 문제를 참조하세요.
우리는 소규모 팀일 뿐이고 더 이상 사용하지 않는 도구를 유지 관리할 역량이 없기 때문에 지금부터 이 저장소를 Abandoned로 이동할 예정이지만 Pelotech에 있는 것과 같은 팀이 있다는 사실이 기쁩니다. 이 솔루션에 투자하고 활성 포크를 유지함으로써 오픈 소스 커뮤니티에 환원합니다.
Nidhogg는 특정 데몬셋의 포드가 실행 중인지 여부에 따라 노드를 오염시키는 컨트롤러입니다.
때로는 매우 중요한 데몬셋이 있어서 해당 데몬셋이 노드에서 실행될 때까지 다른 포드가 노드에서 실행되는 것을 원하지 않을 때가 있습니다. Nidhogg는 Daemonset 포드가 준비될 때까지 노드를 오염시켜 오염을 허용하지 않는 포드가 노드에서 예약하는 것을 방지함으로써 이 문제를 해결합니다.
Nidhogg는 필요한 모든 오염이 제거되면 노드에 주석을 답니다. nidhogg.uswitch.com/first-time-ready: 2006-01-02T15:04:05Z
Nidhogg는 Kubebuilder를 사용하여 구축되었습니다.
Nidhogg에는 감시할 데몬셋과 작동할 노드를 알려주는 yaml/json 구성 파일이 필요합니다. nodeSelector
노드 레이블에 해당하는 키/값의 맵입니다. 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 "
}
]
}
이 예에서는 node-role.kubernetes.io/node
레이블이 있고 node-role.kubernetes.io/master
레이블이 있는 노드가 없는 "standard" 또는 "special"이라는 AWS ASG의 모든 노드를 선택합니다. 일치하는 노드에 kube-system
네임스페이스의 kiam
daemonset에서 실행 중이고 준비된 포드가 없는 경우. 노드에 준비된 kiam 포드가 있을 때까지 nidhogg.uswitch.com/kube-system.kiam:NoSchedule
오염이 추가됩니다.
nidhogg 오염된 노드에서 Pod를 실행할 수 있도록 하려면 toleration을 추가할 수 있습니다.
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")