本文发布已超过一年。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否已失效。

如何在 AWS 上部署安全、可审计且可重现的 Kubernetes 集群

在 CoreOS,我们专注于大规模在生产环境中部署 Kubernetes。今天,我们很高兴分享一个能让在 Amazon Web Services (AWS) 上部署 Kubernetes 变得轻而易举的工具。Kube-aws 是一个用于在 AWS 上部署可审计和可重现 Kubernetes 集群的工具,目前 CoreOS 使用它来快速启动生产集群。

今天,您可能仍在以更手动的方式组装 Kubernetes 组件。借助这个有用的工具,Kubernetes 可以以流线型的打包方式交付,从而节省时间,最大程度地减少相互依赖,并快速创建生产就绪的部署。

它利用简单的模板系统将集群配置生成为一组声明性配置模板,这些模板可以进行版本控制、审计和重新部署。由于整个 Provisioning 过程通过 AWS CloudFormation 和 cloud-init 完成,您无需使用外部配置管理工具。电池已包含 (开箱即用)!

要跳过介绍直接查看项目,请访问kube-aws 的最新版本,它支持 Kubernetes 1.2.x。要让您的集群运行起来,请查看文档

为何选择 kube-aws?安全、可审计和可重现

Kube-aws 的设计重点是三个核心目标。

安全:TLS 资产在嵌入到 CloudFormation JSON 之前,通过 AWS Key Management Service (KMS) 进行加密。通过独立管理 KMS 密钥的 IAM policy,操作员可以将对 CloudFormation 堆栈的操作访问与对 TLS 密钥的访问分开。

可审计:kube-aws 是围绕集群资产的概念构建的。这些配置和凭证资产代表了集群的完整描述。由于 KMS 用于加密 TLS 资产,您可以放心地将未加密的堆栈 JSON 也纳入版本控制!

可重现--export 选项将参数化的集群定义打包到一个定义 CloudFormation 堆栈的 JSON 文件中。如果需要,该文件可以进行版本控制,并通过现有部署工具直接提交到 CloudFormation API。

如何开始使用 kube-aws

在此基础上,kube-aws 实现了一些特性,使得在 AWS 上部署 Kubernetes 更易于管理且更灵活。以下是一些示例。

Route53 集成:Kube-aws 可以在 Provisioning 过程中管理您的集群 DNS 记录。

cluster.yaml

externalDNSName: my-cluster.kubernetes.coreos.com

createRecordSet: true

hostedZone: kubernetes.coreos.com

recordSetTTL: 300

支持现有 VPC:将您的集群部署到现有 VPC。

cluster.yaml

vpcId: vpc-xxxxx

routeTableId: rtb-xxxxx

验证:Kube-aws 支持验证 cloud-init 和 CloudFormation 定义,以及集群堆栈将集成的任何外部资源。例如,这里有一个 cloud-config,其中一个参数拼写错误:

userdata/cloud-config-worker

#cloud-config

coreos:

  flannel:  
    interrface: $private\_ipv4  
    etcd\_endpoints: {{ .ETCDEndpoints }}

$ kube-aws validate

> 正在验证 UserData...
错误:cloud-config 验证错误
UserDataWorker: line 4: warning: 未识别的键 "interrface"

要开始使用,请查看kube-aws 文档

未来工作

一如既往,kube-aws 的目标是实现生产就绪的部署。虽然我们目前已在 AWS 生产环境中使用 kube-aws,但该项目仍处于 1.0 版本之前,kube-aws 还有许多需要发展的领域。

容错:在 CoreOS,我们相信在 AWS 上运行 Kubernetes 是一个强大的平台,可实现容错和自愈部署。在接下来的几周里,kube-aws 将迎来新的挑战:在混沌猴的攻击下生存下来——包括控制平面!

零停机更新:采用正确的实例替换策略,可以在不停机且不相互依赖的情况下更新 CoreOS 节点和 Kubernetes 组件。

一个GitHub Issue 跟踪了这项工作。我们期待您通过提交 Issue 或直接贡献来参与该项目。

了解更多 Kubernetes 信息并参加社区活动,请访问 CoreOS Fest Berlin - 2016 年 5 月 9-10 日