问题标签 [nomad]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - 两级调度器(如在 Apache Mesos 中)与单级调度器(如在 Nomad 或 Kubernetes 中)的优缺点是什么?
两级调度器(如在 Apache Mesos 中)与单级调度器(如在 Kubernetes 中)的优缺点是什么?对于通常在构建、测试、部署无状态、有状态和大数据应用程序中发生的各种工作负载,它们将如何在小型和大型集群上执行?
nomad - 在 Nomad 服务器上等待
我目前正在尝试使用 Nomad 构建一些集成测试。
为此,我尝试:
这当然会失败,因为它会在服务器运行之前尝试提交作业。不好的选择是插入睡眠。我的问题是,是否有更好的方法来等到服务器启动并接受工作。
json - Converting map to string in golang
I am trying to find the best way to convert
map[string]string
to type string . I tried converting to json with marshall to keep the format and then converting back to string but this was not successful. More specifically I am trying to convert a map containing keys and vals to a string to accommodate https://www.nomadproject.io/docs/job-specification/template.html#environment-variables https://github.com/hashicorp/nomad/blob/master/nomad/structs/structs.go#L3647
For example the final string should be like
The map
consul - Consul/Nomad 组合 - consul 健康检查如何解析其主机 IP
我的机器上有 nomad 和 consul 的设置。
我用游牧工作启动了一项服务,并成功注册了它。
我的问题是关于 IP 解析:
- 在 Nomad UI 中,我可以看到 IP 10.0.75.1
- 在 Consul UI 中,在服务发现中,我可以看到 IP 10.0.75.1
- 在 consul 健康检查中,使用的 IP 是不同的172.31 .194.209
两个 IP 都是很好的主机 IP,但我的问题是服务只回答10.0.75.1。
我的意思并不是真的试图让该服务正常工作,因为我可以通过在171.31.194.209上设置不同的配置来解决这个问题。
我想了解的是consul 健康检查如何解析其主机 IP,在我的情况下解析为与 Nomad/Consul-UI 不同的 IP。一种强制解决该决议的方法也很棒。
请注意,健康检查是由 Nomad 使用network_mode = host设置的
一些配置:
CONSUL
游牧民族
grpc - 如何使用 envoy、nomad 和 consul 配置 gRPC 请求的动态路由
我们使用nomad将我们的应用程序(提供gRPC端点)部署为任务。然后使用nomad 的 service stanza将任务注册到Consul。
我们的应用程序的路由是通过envoy proxy实现的。我们在 IP 上运行负载均衡的中央特使实例10.1.2.2
。
路由到哪个端点/任务的决定当前基于host
标头,并且每个任务都注册为<$JOB>.our.cloud
. 这导致了两个问题。
访问服务时,必须为负载均衡器 IP 注册 DNS 名称,这会导致
/etc/hosts
类似的条目使用 可以部分缓解这个问题
dnsmasq
,但是当我们添加新服务时仍然有点烦人。不可能同时运行多个提供相同 gRPC 服务的服务。例如,如果我们决定测试一个服务的新实现,我们需要以
job
相同的名称以相同的名称运行它,并且需要实现在 gRPC 服务文件中定义的所有服务。
我们一直在讨论的一个可能的解决方案是使用tags
该service
节的 来添加定义提供的 gRPC 服务的标签,例如:
但是Consul不鼓励这样做:
现在我们正在考虑使用像这样的标签来做这件事grpc-my-company-firstpackage__ServiceA
......这看起来真的很恶心,虽然:-(
所以我的问题是:
- 有没有人做过这样的事情?
- 如果是这样,关于如何路由到由 Consul 自动发现的 gRPC 服务有什么建议?
- 有人对此有其他想法或见解吗?
- 这是如何在例如istio中完成的?
nomad - Nomad 理解调度器节点选择
我有一个 3 节点测试集群和几个作业(简单配置、无约束、java 服务)。我的问题是每次我开始工作时都会在第一个节点上启动。如果我增加 count=2 并添加一个不同的主机约束,那么其他节点上也会有分配。但是,如果我以 count=1 开始 50 个作业,则第一个节点上有 50 个分配,而 node2 或 node3 上没有。
现在我想了解/看看 Nomad 如何为分配选择节点。所有 3 个节点都有相同的资源 - 所以作业应该平均分配吗?
编辑:突然之间,工作将被分配。所以我的新问题是:是否有详细的输出或者我可以看到 Nomad 在开始新工作时如何以及为什么选择特定节点的东西。
bash - Nomad 定期不运行 bash 脚本
我在游牧民族中有这个定期任务。目的是nomad3
每 5 分钟在主机上运行一次脚本。我还在下面包含了脚本的内容。
包含cronjob-test.sh
:
该脚本位于 nomad host 上nomad3
。我应该看到/tmp
我在 bash 脚本中指定的格式的文件,但我没有看到这个。需要帮助了解正在发生的事情。
nomad - 从游牧状态中删除死工作
我通过 nomad 每 30 秒运行一次 cron (定期)作业,该作业只做
echo "some string"
因此立即结束
当我做
nomad status
我也得到了所有死掉的工作——那些已经完成执行的工作,对我来说毫无用处。有什么方法可以删除死掉的工作吗?
PS:一个明显的解决方案是grep out dead jobs,nomad提供的任何解决方案吗?
containers - 专用硬件设备中的微服务编排
如果有人分享他在硬件设备上的微服务编排方面的经验以及为此提供的更好的工具集,那就太好了。从逻辑上讲,云中有明确定义的方法,kubernetes 可以用于这些目的,但是在硬件设备上的部署有一些细节。
因此,需要在硬件设备上保留 docker 容器而不是常规应用程序。并且有一个痛点,不同的客户可以拥有不同数量的硬件设备(他的部署中的 1 个客户可以有 2 个设备,另一个客户 3 或 4 甚至 5 个)。
在每个硬件设备上可以部署多个容器(5,6),我们的想法是在这样的环境中为容器编排选择合适的平台。
在有 2 个 VM 的环境中,哪个编排工具更好?
想到的第一个平台是 kubernetes,但它可能很重,尤其是当我们谈论在 2 个设备上部署时。但在所有建议中,k8s 至少需要 3 个节点来处理生产负载。
其他选项是 docker swarm,但为了获得仲裁,您需要拥有大多数可用节点。如果有 2 个硬件设备出现故障,您将不会拥有仲裁Docker swarm 容错能力。
第三个选项 id nomad + consul 并配置像单独的可用区这样的设备,但是我更感兴趣是否有人有这样的经验并且已经为这样的用例做出了设计决定。
任何建议表示赞赏。
nomad - 在 Nomad 中持久保存定期作业运行数据
我正在做 Nomad 的 POC 来运行定期作业。保留作业运行的历史非常重要。但是,我看到当 Nomad 被杀死时,作业运行历史数据会丢失。
请为此提出解决方案。