Google容器引擎(Kubernetes)上的DaemonSets

11

我有一个包含21个节点的Google容器引擎集群,我需要确保一个特定的Pod始终运行在一个具有静态IP地址的节点上(以便用于出站目的)。

Kubernetes支持DaemonSets

这是一种通过将标签与DaemonSet中的nodeSelector匹配来将Pod部署到特定节点(或节点集合)的方法。您可以为带有标签的节点分配静态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"]

这个功能什么时候得到支持,有什么解决方法吗?

2个回答

6
如果您只想在单个节点上运行Pod,实际上不需要使用DaemonSet。DaemonSet是为在每个节点上运行pod而设计的,而不是在单个特定节点上运行。
要在特定节点上运行Pod,可以在Pod规范中使用nodeSelector,如文档中节点选择示例所述。

编辑:但是对于任何想要在GKE的每个节点上运行某些东西的人,我有两件事可以说:

首先,在计划于三月发布的版本1.2中,DaemonSet将在GKE中启用。它在版本1.1中未启用,因为当时不被认为足够稳定。

其次,如果您想在1.2版本之前在每个节点上运行某些东西,我们建议在容器规范中创建一个具有大于节点数量的副本数并请求hostPort的复制控制器。 hostPort将确保每个节点只运行来自RC的一个pod。


0

DaemonSets 仍然是 alpha 特性,Google 容器引擎只支持生产级别的 Kubernetes 特性。解决方法:构建自己的 Kubernetes 集群(GCE、AWS、裸机等),并启用 alpha/beta 特性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接