Google 容器引擎 (Kubernetes) 上的 DaemonSet
DaemonSets on Google Container Engine (Kubernetes)
我有一个包含 21 个节点的 Google Container Engine 集群,特别是有一个 pod 我需要始终 运行 在具有静态 IP 地址的节点上(用于出站目的) .
Kubernetes 支持 DaemonSets
这是一种通过为节点提供与 DaemonSet 中的 nodeSelector 相匹配的标签来将 pod 部署到特定节点(或一组节点中)的方法。然后,您可以为标记节点所在的 VM 实例分配一个静态 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"]
何时支持此功能以及解决方法是什么?
DaemonSets 仍然是 alpha 功能,Google Container Engine 仅支持生产 Kubernetes 功能。解决方法:构建您自己的 Kubernetes 集群(GCE、AWS、裸机……)并启用 alpha/beta 功能。
如果您只想运行 单个节点上的 pod,您实际上不想使用 DaemonSet。 DaemonSets 是为 运行 在 每个 节点而不是单个特定节点上设置 pod 而设计的。
要运行特定节点上的 pod,您可以在 pod 规范中使用 nodeSelector,如 Node Selection example in the docs.
中所述
编辑:但是对于任何阅读这篇文章的人确实想要 运行 在 GKE 中的每个节点上做一些事情,我可以说两件事:
首先,DaemonSet 将在 GKE 1.2 版本中启用,计划于 3 月推出。它在 1.1 版的 GKE 中未启用,因为在 1.1 被砍掉时它被认为不够稳定。
其次,如果你想在 1.2 出来之前在每个节点上 运行 一些东西,我们建议创建一个复制控制器,其副本数大于你的节点数,并要求 hostPort
在容器规范中。 hostPort
将确保来自 RC 的每个节点不超过一个 pod 运行。
我有一个包含 21 个节点的 Google Container Engine 集群,特别是有一个 pod 我需要始终 运行 在具有静态 IP 地址的节点上(用于出站目的) .
Kubernetes 支持 DaemonSets
这是一种通过为节点提供与 DaemonSet 中的 nodeSelector 相匹配的标签来将 pod 部署到特定节点(或一组节点中)的方法。然后,您可以为标记节点所在的 VM 实例分配一个静态 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"]
何时支持此功能以及解决方法是什么?
DaemonSets 仍然是 alpha 功能,Google Container Engine 仅支持生产 Kubernetes 功能。解决方法:构建您自己的 Kubernetes 集群(GCE、AWS、裸机……)并启用 alpha/beta 功能。
如果您只想运行 单个节点上的 pod,您实际上不想使用 DaemonSet。 DaemonSets 是为 运行 在 每个 节点而不是单个特定节点上设置 pod 而设计的。
要运行特定节点上的 pod,您可以在 pod 规范中使用 nodeSelector,如 Node Selection example in the docs.
中所述编辑:但是对于任何阅读这篇文章的人确实想要 运行 在 GKE 中的每个节点上做一些事情,我可以说两件事:
首先,DaemonSet 将在 GKE 1.2 版本中启用,计划于 3 月推出。它在 1.1 版的 GKE 中未启用,因为在 1.1 被砍掉时它被认为不够稳定。
其次,如果你想在 1.2 出来之前在每个节点上 运行 一些东西,我们建议创建一个复制控制器,其副本数大于你的节点数,并要求 hostPort
在容器规范中。 hostPort
将确保来自 RC 的每个节点不超过一个 pod 运行。