如何在AWS上部署Kubernetes?

3
我想知道人们如何在AWS中部署生产级别的Kubernetes集群,更重要的是,他们选择了哪种方法。 k8s文档指向Debian、Ubuntu、CentOS和RHEL的kops或CoreOS/Container Linux的kube-aws。在这些选择中,不清楚如何选择其中之一。CoreOS似乎是最有吸引力的选项,因为它专为容器工作负载而设计。
但等等,还有更多。 bootkube似乎是CoreOS部署技术的下一个迭代,并且在路线图中计划包含在kube-aws中。我应该等到kube-aws使用bootkube吗?

Heptio 最近宣布了一种快速入门架构,用于在AWS上部署k8s。这是最新的方法,因此可能是最不成熟的方法,但它似乎已经在AWS内部得到了广泛应用。

最后,kubeadm 是一种工具,我真的不确定它在所有这些中的位置。

可能还有其他方法我没有涉及到。

由于存在多种意图重叠的选项,选择前进的道路非常困难。我对概念验证不感兴趣。我想能够部署一个安全、高可用的集群以供生产使用,并能随着时间的推移升级集群(主机操作系统、etcd和k8s系统组件)。

你选择了什么,你是如何决定的?


你可能想要查看CoreOS Tectonic发行版。 - Paweł Prażak
1个回答

3
我建议选择符合你需求的任何内容(请查看选择合适的解决方案)...
可能包括:
- 集群设置速度 - 集成现有工具链
例如,kops与Terraform集成起来可能非常好。
- 团队/公司内部经验
例如,您对相关的Linux发行版是否感到舒适。
- 工具本身所需的成熟度
一些工具非常初期,您是否愿意扮演早期采用者的角色?
- Kubernetes版本之间升级的能力
Kubeadm把这个放在他们的议程上,有些人喜欢丢掉集群而不是升级。
- 集成到外部工具(监视、日志记录、验证等)所需的支持
- 支持的云提供商
根据您的特定要求,我会选择Heptio或kubeadm方法。
- 如果您可以接受给定的限制(例如,预定义的操作系统),则使用Heptio。 - 如果您需要更多的灵活性,则使用kubeadm,kubeadm完成的所有工作都可以转移到其他云提供商。
AWS的其他选项不在我的首选名单上:
- Kubernetes the hard way - 使用这种方法可能是设置生产集群的唯一真正的方式,因为这是您可以完全了解系统每个运动部分的唯一方式。但并不总是首选,因为使用其他任意一个工具得到的结果往往已经足够好,即使对于生产也是如此。 - kube-up.sh - 社区已弃用,因此我不会在新项目中使用它。 - kops - 我的团队遇到一些奇怪的问题,似乎是由于我们那时候的(自定义)需求(现有VPC)造成的,这就是为什么它不在我的首选名单上——如果Terraform也被使用,那么它将是第一选择。 - bootkube - 不在我的首选名单上,因为它受限于CoreOS。 - Rancher - 有趣的工具链,似乎对于单个集群来说过于复杂。

离题:如果你没有必要在AWS上运行,我也会考虑在GCE上运行生产工作负载,因为这是一个被很好管理的平台,而不是你需要自己构建的东西。


谢谢您的回复。正如我之前所写,AWS是这里的基本要求。您能否更详细地解释一下为什么您会选择Heptio和Kubeadm?老实说,鉴于我对它们的能力的理解,它们两者都不是我的首选。 - bfallik
我已经添加了一些其他解决方案,并附上了我的非常主观的意见 - 我不会等待任何工具,而是准备随时切换/升级。等待意味着你依赖于工具在发布时完全满足你的需求。 - pagid
非常有帮助的回复 - bfallik
1
只是指出一下,Heptio的快速开始最终在幕后使用kubeadm,因此它并没有做任何非标准的事情。使用快速开始时得到的结果与手动执行并没有太大区别,只是帮助自动化以便您不会错过任何东西(比如安全组配置等)。 - Ken Simon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接