DaemonSets в Google Container Engine (Кубернетес)
У меня есть кластер Google Container Engine с 21 узлом, есть, в частности, один модуль, который мне всегда нужно запускать на node со статическим IP-адресом (для исходящих целей).
Kubernetes поддерживает DaemonSets
Это способ развертывания pod для определенного node (или в наборе узлов), указав метку node, которая соответствует узлуSelector в DaemonSet. Затем вы можете назначить статический IP-адрес экземпляра виртуальной машины, на который помечен помеченный node. Однако GKE не поддерживает тип DaemonSet.
$ kubectl create -f go-daemonset.json
error validating "go-daemonset.json": error validating data: the server could not find the requested resource; if you choose to ignore these errors, turn validation off with --validate=false
$ kubectl create -f go-daemonset.json --validate=false
unable to recognize "go-daemonset.json": no kind named "DaemonSet" is registered in versions ["" "v1"]
Когда эта функция будет поддерживаться и каковы обходные пути?
Ответы
Ответ 1
Если вы хотите только запустить модуль на одном node, вы фактически не хотите использовать DaemonSet. DaemonSets предназначены для запуска модуля на каждом node, а не в одном конкретном node.
Чтобы запустить модуль на конкретном node, вы можете использовать nodeSelector в спецификации pod, как описано в Node примере выбора в документах..
edit: Но для тех, кто читает это, который хочет что-то запускать на каждом node в GKE, есть две вещи, которые я могу сказать:
Во-первых, DaemonSet будет включен в GKE в версии 1.2, которая запланирована на март. Он не включен в GKE в версии 1.1, потому что он не считался достаточно стабильным в то время, когда был сокращен 1.1.
Во-вторых, если вы хотите что-то запускать на каждом node до выхода 1.2, мы рекомендуем создать контроллер репликации с количеством реплик, превышающим количество узлов, и запросить hostPort
в спецификации контейнера. hostPort
гарантирует, что не будет загружено не более одного модуля из RC за node.
Ответ 2
DaemonSets по-прежнему является альфа-функцией, а Google Container Engine поддерживает только производственные функции Kubernetes. Обходной путь: создайте собственный кластер Kubernetes (GCE, AWS, голый металл,...) и включите функции альфа/бета.