2016-02-19 5 views
11

У меня есть кластер Google Container Engine с 21 узлом, есть, в частности, один модуль, который мне всегда нужно запускать на узле со статическим IP-адресом (для исходящих целей).DaemonSets в Google Container Engine (Kubernetes)

Kubernetes поддерживает DaemonSets

Это способ, чтобы иметь стручок быть развернут на определенный узел (или в наборе узлов), давая узел метку, которая соответствует nodeSelector в DaemonSet. Затем вы можете назначить статический IP-адрес экземпляру VM, на который помечен узел с меткой. Однако 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"] 

Когда эта функция будет поддерживаться и каковы временные решения?

ответ

5

Если вы хотите только запустить модуль на одном узле, вы фактически не хотите использовать DaemonSet. DaemonSets предназначены для запуска модуля на каждый узел, а не один конкретный узел.

Чтобы запустить модуль на определенном узле, вы можете использовать nodeSelector в спецификации pod, как описано в Node Selection example in the docs.


редактировать: Но для тех, кто читает это, что действительно хочет запустить что-то на каждом узле GKE, есть две вещи, которые я могу сказать:

Во-первых, DaemonSet будет включена в GKE в версии 1.2, который запланирован на март. Он не включен в GKE в версии 1.1, потому что он не считался достаточно стабильным в то время, когда был сокращен 1.1.

Во-вторых, если вы хотите что-то запускать на каждом узле до выхода 1.2, мы рекомендуем создать контроллер репликации с количеством реплик больше вашего количества узлов и запросить hostPort в спецификации контейнера. hostPort гарантирует, что на узел будет выполняться не более одного модуля из RC.

0

DaemonSets все еще является альфа-функцией, а Google Container Engine поддерживает только производственные функции Kubernetes. Обходной путь: создайте собственный кластер Kubernetes (GCE, AWS, голый металл, ...) и включите функции альфа/бета.

Смежные вопросы