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

如何在 AWS 上部署安全、可审计和可复制的 Kubernetes 集群

在 CoreOS,我们致力于大规模地在生产环境中部署 Kubernetes。今天,我们很高兴分享一个工具,它可以轻松地在 Amazon Web Services (AWS) 上部署 Kubernetes。Kube-aws 是一款将可审计和可重复的 Kubernetes 集群部署到 AWS 的工具,CoreOS 目前使用它来快速启动生产集群。

今天,您可能正在以更手动的方式将 Kubernetes 组件拼凑在一起。借助这个有用的工具,Kubernetes 以简化的软件包形式提供,可节省时间,最大限度地减少相互依赖性,并快速创建生产就绪的部署。

利用一个简单的模板系统将集群配置生成为一组声明性配置模板,这些模板可以进行版本控制、审计和重新部署。由于全部配置均由 AWS CloudFormation 和 cloud-init 完成,因此您无需使用外部配置管理工具。开箱即用!

要跳过讨论直接进入项目,请查看 kube-aws 的最新版本,它支持 Kubernetes 1.2.x。要运行您的集群,请查看文档

为什么选择 kube-aws?安全性、可审计性和可重复性

Kube-aws 的设计考虑了三个核心目标。

安全:TLS 资产通过 AWS 密钥管理服务 (KMS) 加密,然后再嵌入到 CloudFormation JSON 中。通过独立管理 KMS 密钥的 IAM 策略,操作员可以将对 CloudFormation 堆栈的操作访问权限与对 TLS 机密的访问权限分离。

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

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

kube-aws 入门

在此基础上,kube-aws implemented features that make Kubernetes deployments on AWS easier to manage and more flexible. 这里有一些例子. 实现了一些功能,使 Kubernetes 在 AWS 上的部署更易于管理且更灵活。以下是一些示例。

Route53 集成:Kube-aws 可以在配置过程中管理您的集群 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:第 4 行:警告:无法识别的键“interrface”

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

未来的工作

与以往一样,kube-aws 的目标是进行生产就绪的部署。虽然我们今天在 AWS 的生产环境中使用 kube-aws,但该项目仍处于 1.0 之前的版本,kube-aws 需要在许多方面进行改进。

容错:在 CoreOS,我们认为 AWS 上的 Kubernetes 是一个强大的容错和自愈部署平台。在接下来的几周内,kube-aws 将面临新的挑战:在 混沌猴子 的攻击下生存下来——包括控制平面!

零停机更新:使用正确的实例替换策略,可以零停机地更新 CoreOS 节点和 Kubernetes 组件,并且组件之间没有相互依赖性。

一个 github 问题 跟踪了朝着这个目标所做的工作。我们期待看到您通过提交问题或直接贡献来参与到项目中。

了解更多关于 Kubernetes 的信息,并在 CoreOS Fest Berlin(2016 年 5 月 9 日至 10 日)与社区见面