DaemonSets в Google Container Engine (Kubernetes)

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

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

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

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


person Michael    schedule 19.02.2016    source источник


Ответы (2)


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

Чтобы запустить модуль на определенном узле, вы можете использовать nodeSelector в спецификации модуля, как описано в пример выбора узла в документации.


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

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

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

person Alex Robinson    schedule 19.02.2016

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

person Jan Garaj    schedule 19.02.2016