在AWS云上进行生产等级K8S集群部署
这些AWS CloudFormation模板和脚本会在AWS私有VPC环境中自动根据您选择的配置设置一个灵活,安全,容错的Kubernetes集群。该项目的主要目的是:简单,轻松,无脚本,轻松地一步部署Kubernetes环境。
我们提供两个具有相同基础AWS VPC拓扑的部署版本:
- 全面:容错,生产级架构(多主站,多节点,NAT网关),
- 占用空间小:单个主机,单个NAT实例,单个节点部署(用于测试,演示,第一步)
Kubernetes Operations(“ kops”)项目和AWS CloudFormation(CFN)模板与引导脚本一起使用,有助于自动化整个过程。最终结果是具有100%Kops兼容性的100%Kubernetes集群,您可以从堡垒主机,通过OpenVPN或通过AWS ELB端点使用HTTPS API进行管理。
该项目将重点放在安全性,透明性和简单性上。本指南主要为计划在AWS上实现其Kubernetes工作负载的开发人员,IT架构师,管理员和DevOps专业人士创建。
完整规模架构
One-Click launch CloudFormation stack: Full scale
部署的资源
- 一个VPC:3个不同可用区中的3个私有子网和3个公共子网,通往S3和DynamoDB的网关类型私有链路路由(免费),
- 每个3个可用区中的每个公用子网中的三个NAT网关,
- 每个可用区的私有子网中AutoScaling组(单独的ASG)中的三个自我修复的Kubernetes Master实例,
- 一个AutoScaling组中的三个Node实例,遍及所有可用区,
- 1个可用区的公共子网中的一个自我修复堡垒主机,
- 四个弹性IP地址:3个用于NAT网关,1个用于堡垒主机,
- 一个内部(或公共:可选)ELB负载平衡器,用于通过HTTPS访问Kubernetes API,
- 堡垒主机和Kubernetes Docker Pod的两个CloudWatch Logs组(可选),
- 一个Lambda函数可通过AWS SSM正常拆除
- 两个安全组:1个用于堡垒主机,1个用于Kubernetes主机(主服务器和节点),
- 堡垒主机,K8s节点和主控主机的IAM角色,
- 一个用于Kops状态存储的S3存储桶,
- 一个用于VPC的Route53专用区域(可选)
小规模架构
One-Click launch CloudFormation stack: Small footprint
部署的资源
- 一个VPC:3个不同可用区中的3个私有子网和3个公共子网,通往S3和DynamoDB的网关类型私有链路路由(免费),
- 一个可用区的专用子网中的一个自我修复的Kubernetes Master实例,
- AutoScaling组中的一个Node实例,遍及所有可用区,
- 1个可用区的公共子网中的一个自我修复堡垒主机,
- 堡垒主机是专用子网的NAT实例路由器,
- 四个弹性IP地址:3个用于NAT网关,1个用于堡垒主机,
- 一个内部(或公共:可选)ELB负载平衡器,用于通过HTTPS访问Kubernetes API,
- 堡垒主机和Kubernetes Docker Pod的两个CloudWatch Logs组(可选),
- 一个Lambda函数可通过AWS SSM正常拆除
- 两个安全组:1个用于堡垒主机,1个用于Kubernetes主机(主服务器和节点)
- 堡垒主机,K8s节点和主控主机的IAM角色
- 一个用于Kops状态存储的S3存储桶,
- 一个用于VPC的Route53专用区域(可选)
如何建立集群?
在https://aws.amazon.com上注册一个AWS账户。
选择您喜欢的部署类型:
- Full scale deployment: Launch the AWS One-Click CloudFormation Stack: Full scale Template: View template
- Small fottprint deployment: Launch the AWS One-Click CloudFormation Stack: Small footprint Template: View template
创建群集(通过堡垒主机)持续约10-15分钟,请耐心等待。
- 遵循部署指南中的分步说明,连接到Kubernetes集群。
要自定义部署,您可以为Kubernetes集群和堡垒主机选择不同的实例类型,选择工作节点数,API端点类型,日志记录选项,OpenVPN安装,插件。
有关详细说明,请参阅部署指南。
创建群集(通过堡垒主机)持续约10分钟,请耐心等待。
创建clutser之后,只需通过SSH连接到堡垒主机,即可立即使用“ kops”,“ kubectl”和“ helm”命令,无需任何额外步骤!
日志
可选:如果您在模板选项中选择,则所有容器日志都将发送到AWS CloudWatch Logs。在这种情况下,本地“ kubectl”日志无法通过API调用在内部使用(例如kubectl logs ...命令:“守护程序的错误响应:已配置的日志记录驱动程序不支持读取”)请检查AWS CloudWatch / Logs / K8s *用于容器日志。
抽象论文
请查看此摘要文件,以了解此解决方案的高级细节。
参考资料
- Kubernetes Open-Source Documentation: https://kubernetes.io/docs/
- Calico Networking: http://docs.projectcalico.org/
- KOPS documentation: https://github.com/kubernetes/kops/blob/master/docs/aws.md ,https://github.com/kubernetes/kops/tree/master/docs
- Kubernetes Host OS versions: https://github.com/kubernetes/kops/blob/master/docs/images.md
- OpenVPN: https://github.com/tatobi/easy-openvpn
- Heptio Kubernetes Quick Start guide: https://aws.amazon.com/quickstart/architecture/heptio-kubernetes/
原文:https://tc2.hu/en/blog/production-grade-kubernetes-cluster-on-aws
本文:http://jiagoushi.pro/production-grade-kubernetes-cluster-aws
讨论:请加入知识星球或者微信圈子【首席架构师圈】
Tags
最新内容
- 17 hours ago
- 19 hours ago
- 20 hours ago
- 3 days 10 hours ago
- 3 days 18 hours ago
- 3 days 18 hours ago
- 3 days 19 hours ago
- 3 days 19 hours ago
- 1 week 1 day ago
- 1 week 1 day ago