我的组织管理的系统中,每个客户端都配备了一个VPS,然后通过Docker Compose在该系统上启动它们的技术堆栈。
使用Docker组成卷将数据存储在系统上。没有别出心裁的命名存储--只是很好的老的直接路径卷。
虽然这种解决方案是可行的,但问题是这种方法不能扩展。我们总是可以为VPS提供更多的CPU/内存,但这并不能解决潜在的问题。
试运行/开发环境必须手动启动-并且没有服务冗余。在我们当前的系统中,热插拔是不可能的。
Kubernetes已经被推荐给我来解决我们的问题,但老实说,我不知道从哪里开始-大多数文档都很迟钝,我找不到有我们特殊困境的人。
最终目标将是只有几台运行Kubernetes的高规格机器-具有冗余、登台和根据需要旋转新客户端的能力(而不必配置额外的机器或外部IP)。
我的组织需要使用哪些特定工具来实现此目标?
有没有什么工具可以让我们把现有的Docker Compose堆栈带到Kubernetes中?
发布于 2021-12-03 21:34:07
从哪里开始:考虑到您告诉我们的内容,我将首先研究一下实现一些SDS的选项。
您当前正在使用本地卷,这可能不能使用Kubernetes -或者至少不应该这样做,如果您不想将容器绑定到唯一节点的话。
最简单的方法--虽然不一定是我推荐的方法--是使用一些NFS服务器。更好的方法是:使用一些DRBD、起搏器/同步,使用VIP进行故障转移--或者采用FreeBSD的方式: hastd、carp、ifstated,也许还有一些zfs。您可能必须部署不同的系统来扩展您的Kubernetes集群,分发IOs,...单个NFS服务器在负载超过50的情况下不会持续很长时间,并且会出现峰值...
更好的方法是查看实际的SDS解决方案。我可以推荐的一个是Ceph,尽管还有很多我不太熟悉的新解决方案……而且我肯定会避免使用GlusterFS。部署Ceph的一种简单方法是使用ceph-ansible。
考虑到您可以使用的公司硬件,您可能会有一些NetApp或等效的东西,可以实现hardware,和/或一些iSCSI网关。
现在,这些都是您可以在副业运行的解决方案,尽管请注意,您还会找到"CNS“解决方案(容器原生),它们将部署在Kubernetes之上。Ceph集群可以使用Rook进行管理。这些可能很有趣,但就维护和操作而言,它需要对您操作的解决方案和kubernetes/containers有很好的了解:故障排除和修复中断可能不像老式的裸元/VM设置那么容易。对于第一次Kubernetes的经历:我会克制自己。当你觉得足够舒服的时候,就去吧。
在任何情况下,部署集群之前的另一个重要考虑因素是将托管您的安装的网络。考虑到Kubernetes不应该直接部署在公共实例上:您可能希望有一些专用VLAN,可能是内部DNS、本地resitry (可以是Kubernetes托管的)或其他工具,如LDAP服务器、一些SMTP中继、HTTP缓存/代理、放在API前面的负载均衡器……
一旦你对这些问题下定了决心,你就可以考虑使用诸如Kops (ansible)或Kops(使用Terraform,因此需要一些云API,例如: aws)之类的工具来部署Kubernetes集群。这两个项目都是Kubernetes项目的一部分,并由其社区维护。cover祈祷将涵盖所有场景(IAAS和裸机),与流行的SDS开箱即用,可以与各种入口控制器一起发货,...总体而言,它提供了良好的默认值,并提供了许多变量来定制您的安装。
从一个3-master、2-worker集群开始,确保得到的集群符合您的期望。
在进行prod之前,请从容不迫地正确转换您现有的配置。有时候,重构代码或图像可能是值得的。
转到prod,考虑添加一组“基础设施”节点:如果您想托管一些日志记录解决方案或其他内部服务,这些服务对用户来说是关键的,不应该受到最终用户工作负载造成的中断(例如:入口路由器、监控、日志记录、集成注册表等)。
https://github.com/kubernetes-sigs/kubespray/
(
https://stackoverflow.com/questions/70218344
复制相似问题