【问题标题】:Use Kubernetes to deploy a single app to multiple servers使用 Kubernetes 将单个应用程序部署到多个服务器
【发布时间】:2021-07-29 09:36:19
【问题描述】:

我想一次将一个应用部署到多台服务器。

我正在使用KubernetesK3S 轻松部署容器。 基本上,我有一个我运行的主服务器和多个位于我的客户设施中的服务器。

使用以下命令初始化主服务器:

k3sup install \
    --ip $MASTER_IP \
    --user ubuntu \
    --cluster --k3s-channel latest \
    --k3s-extra-args "--node-label ols.role=master"

客户的服务器是通过以下方式启动的:

k3sup join \
    --ip $WORKER01_IP \
    --user ubuntu \
    --server-ip $MASTER_IP \
    --server-user ubuntu \
    --k3s-channel latest \
    --k3s-extra-args "--node-label ols.role=worker"

当我想在每个客户的服务器上部署新的 Web 服务时,我尝试了以下代码:

helm install node-red k8s-at-home/node-red --set nodeSelector."ols\.role"=worker

问题:只部署了一个 pod。

我想要的是在每台服务器上部署一个 pod 并使其独立。 有没有办法做到这一点?

【问题讨论】:

  • 如果所有服务器都在同一个集群中,它们应该都可以通过集群网络相互通信;您通常不需要在每台服务器上都有应用程序的本地副本。如果您想为每个用户配备专用硬件,您可能会考虑使用通用自动化软件,如 Chef、Ansible 或 Salt Stack,而不是 Kubernetes 等集群系统。

标签: kubernetes kubernetes-helm k3s k3sup


【解决方案1】:

我们需要考虑两件不同的事情。

如果要求只是运行application 中更多数量的replicas,请更改helm 图表中的deployment 模板或通过values,您可以传递最少replicas 需要的数量在集群中工作。

参考documentation 获取deployments

接下来,如果要求只是在集群中现有的所有节点上运行应用程序,Daemonsets 是能够在所有现有节点上运行的工作负载。

documentation 参考 daemonsets

同样,如果您使用helm 进行部署,则需要根据helm 图表的现有内容添加或修改daemonsetsdeployments 的适当模板。

还有不同的workloads k8s 支持,因此可以根据要求适当地选择它们。

【讨论】:

  • DaemonSet 正是我想要的。谢谢!
猜你喜欢
  • 1970-01-01
  • 2010-12-12
  • 2018-12-26
  • 1970-01-01
  • 2018-05-17
  • 1970-01-01
  • 2019-07-27
  • 2011-02-07
  • 2023-04-09
相关资源
最近更新 更多