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

Does it make sense to run Kubernetes on a single server?

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

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

所以,我的问题是:在单个服务器上 运行 Kubernetes "cluster"(主节点和节点)来编排和路由容器(代替 Traefik/Rancher/Docker 撰写)?

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

谢谢。

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/

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

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

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

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