在单个服务器上运行 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 run
或 docker-compose
或 docker engine swarm mode
的单个主机执行以下操作 -
jwilder nginx proxy
)。
您的部署不应导致停机。确保单个容器在部署过程中的任何时刻始终处于健康状态。
容器应该自动修复(自动重启)以防您的 HTTP 或 TCP 健康检查失败。
执行上述所有操作肯定会让您处于一个更好的位置,但单主机仍然是您必须定期处理的单一故障源。
首选:如果可能,请尝试以 docker engine swarm mode
或 kubernetes single master
或 minikube
开头。这将自动处理所有上述场景,并且还允许您随时通过添加更多节点来进一步扩展,而无需对 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 有意义吗?的主要内容,如果未能解决你的问题,请参考以下文章