在单个服务器上运行 Kubernetes 有意义吗?

Posted

技术标签:

【中文标题】在单个服务器上运行 Kubernetes 有意义吗?【英文标题】:Does it make sense to run Kubernetes on a single server? 【发布时间】:2019-03-18 22:48:14 【问题描述】:

我正在使用 Docker 我已经使用 Traefik (*.dev.domain.com) 和 Docker Compose 模板实现了一个基于 Git 分支部署环境(在单个服务器上)的系统。

我喜欢 Kubernetes,但我从未切换到它,因为我的基础架构仅限于一台服务器。我只在本地安装(Docker for Windows)中使用过它。

所以,我的问题是:在单个服务器上运行 Kubernetes“集群”(主节点和节点)来编排和路由容器(代替 Traefik/Rancher/Docker Compose)是否有意义?

此用途目前仅用于开发和登台,因此高可用性不是先决条件。

谢谢。

【问题讨论】:

【参考方案1】:

AFAIU,

我看不到对 kubernetes 的要求,除非我们至少对使用本机 docker rundocker-composedocker engine swarm mode 的单个主机执行以下操作 -

确保在单个服务器中有足够的 (>=2) 个应用程序副本,并且您正在平衡这些应用程序 docker 容器之间的负载。 如果您想更高级一点,我们应该能够动态地向上和向下扩展(docker swarm 模式支持开箱即用,否则使用 jwilder nginx proxy)。 您的部署不应导致停机。确保单个容器在部署过程中的任何时刻始终处于健康状态。 容器应该自动修复(自动重启)以防您的 HTTP 或 TCP 健康检查失败。 执行上述所有操作肯定会让您处于一个更好的位置,但单主机仍然是您必须定期处理的单一故障源。 首选:如果可能,请尝试以 docker engine swarm modekubernetes single masterminikube 开头。这将自动处理所有上述场景,并且还允许您随时通过添加更多节点来进一步扩展,而无需对 docker swarm 或 kubernetes 的 YML 文件进行太多更改。

参考 -https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/ https://docs.docker.com/engine/swarm/

【讨论】:

【参考方案2】:

如果您想尝试一下,您最简单的选择可能是 minikube(易于在本地运行单节点集群,但没有某些功能)或使用其中一个免费试用帐户来获取来自大型企业之一的托管 Kubernetes 服务云提供商(功能齐全的多节点,但在您必须付费之前使用有限)。

【讨论】:

【参考方案3】:

如果不是生产环境,那么使用多少节点都没有关系。所以是的,在这种情况下应该没问题。但请确保您在生产中需要的所有 k8s 功能在 test/dev 中可用,以保持相似和可移植性。

【讨论】:

【参考方案4】:

仅当我管理具有我想部署到所述主机的相同项目的集群时,我才会使用单主机 k8s。这使您能够重用清单和您为集群创建的所有自动化。

如果我只有单一主机环境,我可能会坚持使用 docker-compose。

【讨论】:

以上是关于在单个服务器上运行 Kubernetes 有意义吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 docker 中运行 c# worker 服务有意义吗?

在 HTTP/2 中使用图像精灵有意义吗?

“std::size_t”在 C++ 中有意义吗?

SQL插入上的开销有意义吗?

boost::strand 生产者/消费者有意义吗?

应用程序范围的异常处理程序有意义吗?