James SunAWS解决方案架构师。James 拥有超过 15 年的信息技术行业从业经验。加入 AWS 前,他曾在 MapR、惠普、NetApp、雅虎和 EMC 等公司担任多个高级技术职位。他拥有斯坦福大学博士学位。
本文原发于亚马逊AWS官方博客。html
Rancher 是一个流行的开源企业级Kubernetes管理平台,许多组织使用它来管理混合部署的Kubernetes 集群。Rancher 支持 Amazon Elastic Container Service for Kubernetes (Amazon EKS) ,借助此功能,Rancher用户能够直接经过Rancher平台来对AWS EKS进行直接纳管。node
Amazon EKS 与 Rancher 结合后,使用方便,可兼具您在 Rancher 中养成的使用习惯与指望从 AWS 得到的功能、可靠性和性能。Amazon 的托管 Kubernetes 解决方案 EKS,可让您 在云中快速建立可扩展的 Kubernetes 实例,而Rancher拥有简洁易用的UI和针对Kubernetes的更多拓展功能,强强组合将带来企业Kubernetes使用的操做体验和性能的极大提高。nginx
不论你是EKS和Rancher的新手用户,仍是对EKS或Rancher都有所了解、着重关注如何使用开源软件管理EKS,本文都值得一读。git
本文将演示如何使用 Rancher 设置 EKS 集群,部署可公开访问的应用程序来测试集群,以及部署示例项目以使用其余开源软件(例如 Grafana 和 InfluxDB)来跟踪实时地理空间数据。github
前期准备docker
若您将跟随本文进行同步操做,前期您须要拥有:shell
知足上述先决条件后,咱们能够着手开始第一步:安装 Rancher。数据库
启动 Rancher Docker 容器json
在 VM 主机上,发出如下命令,以启动 Rancher 容器(Rancher 版本应等于或高于 2.0):后端
docker run -d --restart=unless-stopped --name rancher --hostname rancher -p 80:80 -p 443:443 rancher/rancher:latest
以上命令应建立一个 Rancher 容器版本 2.16 或更高版本
(https://hub.docker.com/r/ranc...。
如今将浏览器指向主机的公共 IP;您应该看到一个Rancher 欢迎页面。请注意,因为 https 采用自签名证书,您可能会收到 cert-authority-invalid 警告。此时请忽略该警告并继续。若是您想彻底消除此警告,能够在继续操做以前,按照下述连接说明得到一个有效证书:
https://aws.amazon.com/premiu...
在如下窗口中,键入主机的公共 IP,以便 EKS 能够通知 Rancher 安装进度:
建立 EKS 集群
您首先须要为您的账户建立密钥凭证。经过转到 IAM > 用户 >(您的用户名)> 安全凭证来执行此操做。
而后单击建立访问密钥;应出现一个像这样的弹出窗口:
记录访问密钥 ID 和秘密访问密钥;这些是您在 Rancher 中建立 EKS 集群时所须要的。
接下来,进入 Rancher 实例,单击添加集群按钮,而后选择 Amazon EKS 选项。如今给集群命名,例如“rancherEKSDemo”,而后输入您在上一步中记录的访问密钥 ID 和秘密访问密钥。
在“区域”下拉菜单中,只有两个区域可供选择:us-east-1 和 us-west-2。(注意,EKS 自己在全球许多地区均可用,请参阅此连接了解详细信息:https://aws.amazon.com/about-...)选择要部署 EKS 集群的区域,将全部项目设置为默认值,而后单击下一步:选择服务角色。Rancher 将验证您提交的密钥 ID 和密钥是否已得到受权。
在下一个屏幕上,检查 Rancher 生成的“标准”服务角色,而后单击下一步:选择 VPC 和子网。 系统将提示您为工做节点、VPC 和子网选择 IP。只需选择默认值,而后单击下一步:选择实例选项。出于演示目的,选择默认实例类型“m4.large”,并将最小和最大 ASG(自动缩放组)值保留为默认值。验证完成后,单击建立按钮。
建立 EKS 集群须要 10 到 15 分钟;在此期间,您将在控制台上看到集群状态为“预置”。
Rancher 使用 AWS 后端上的 Cloudformation 模板启动安装。您能够经过转到 Cloudformation 控制台来监控这些详细事件,以下面的屏幕截图所示:
您还能够访问 EKS 控制台,并验证是否正在建立集群,以下列屏幕截图所示:
集群完成预置后,您应看到 Rancher 控制台中的状态变为“活动”:
经过部署 nginx Pod 来测试您的 EKS 集群
如今,您能够在集群上部署 Pod/容器了。若要开始体验,请尝试部署 nginx pod。单击位于左上角的下拉菜单,而后选择“默认”项目。
接下来,您将看到工做负载屏幕,单击位于屏幕右上角的部署按钮:
如今给您的工做负载命名并指定“nginx”Docker 映像。单击添加端口,发布容器端口“80”并指定侦听端口“80”,而后指定一个第 4 层负载均衡器。这将容许您经过公共互联网访问您的 nginx 实例。
单击启动,等待工做负载和负载均衡器完成预置,方法是检查工做负载和负载均衡选项卡的状态,直至其显示“活动”。
负载均衡器完成预置后,工做负载下方将显示一个可单击的连接。请注意,AWS 将为此 EKS 集群建立 DNS 条目,可能须要几分钟才能完成发布。若是在单击连接后出现 404 错误,请再等几分钟以更新Elastic Load Balancer DNS 记录,而后重试。
单击连接“80/tcp”应转到默认的 nginx 页面:
扩展您的 nginx 部署
您能够很是轻松地扩展容器数量以适应工做负载高峰。只需在默认项目中选择工做负载,而后单击 +/- 标记,便可扩展和缩减部署以动态调整工做负载:
部署示例项目
下面,让咱们经过部署 Rancher 项目来实时跟踪纽约市Citi Bike 的乘客量,让这个演示更有趣。您将预置三个 Pod:
下一步是为项目建立 Kubernetes 命名空间。从位于左上角的下拉菜单中选择默认命名空间,而后单击命名空间。单击添加命名空间并键入“ns-citibike”,而后单击建立。
经过选择左上角的下拉菜单返回集群控制台,屏幕截图以下。而后选择启动 kubectl。
在 shell 窗口中,键入“kubectl get nodes -o wide”以查看工做节点状态;它们应所有“准备就绪”。
如今发出如下命令来启动项目:
curl 'https://raw.githubusercontent.com/aws-samples/managing-eks-clusters-with-rancher/master/run' | bash
随意下载脚本以查看所涉及的步骤。我已在脚本中添加了注释供您查看。
等待几分钟,让脚本完成执行。
在默认项目中,您应该看到已预置了三个 Pod。再等待几分钟,以便更新负载均衡器的 DNS 记录,而后再单击 80/tcp 转到 Grafana:
在 Grafana 登陆页面上,输入“admin”做为用户名并输入“admin”做为密码,而后登陆。
如今,您能够配置控制面板以显示数据。
配置数据源
选择左窗格中的齿轮图标,单击数据源, 而后单击 + 添加位于窗口右侧的数据源:
填写数据源的名称(例如 citibike),选择 InfluxDB 做为类型,填写“coordinates”做为数据库名称:
而后,在 URL 字段中,找到 InfluxDB pod 的私有 IP 地址,并填写 http://<ip of influxdb pod>:8086。
您能够经过转到 Rancher 中的默认命名空间页面找到Influxdb 的私有 IP 地址,而后单击 deploy-Influxdb pod:
单击保存并测试以添加数据源。
导入控制面板模板
下载此控制面板模板并将其保存到桌面:
https://raw.githubusercontent...
在 Grafana 中,单击左窗格中的 + ,而后选择导入。 单击位于窗口右侧的上传 json 文件,而后选择刚下载到桌面的模板:
如今,您能够开始跟踪整个纽约市每一个 Citi Bike 站点的实时状态。您能够选择自行车站点 ID 并查看其历史需求趋势,如折线图所示。您还能够指定一个时间窗口来跟踪某一站点的长期需求趋势。全部站点目前的自行车容量也显示在彩色编码的地图上;绿色表示有超过 30 辆自行车可用,而红色表示自行车数量不足:
城市规划者能够利用这些信息来增长/缩小自行车站点的容量,以便更好地服务哪些依靠自行车知足平常交通需求的纽约居民。
与 AWS EBS 集成以知足更大的存储容量需求
在启动上面的项目命令时,您同时还使用 EBS for InfluxDB和提取 Pod 中的 gp2 存储类型建立了两个持久卷(每一个 50 GB),由于容器的本地存储空间不足以容纳持续流入的数据。若要查看这些持久卷及其持久卷声明,请前往默认命名空间并选择顶部的卷选项卡。
如今,经过单击工做负载选项卡,查看提取 Pod,而后单击位于窗口最右侧的“deploy-citibike”容器的下拉菜单,并选择执行 Shell。
如今您处于容器的 shell 提示下。输入“mount / grep citibike”,您会看到一个卷设备 /dev/xvdxx 安装在带有 ext4 文件系统的 /citibike 上。
制做一个 “ls /citibike” – 您将看到全部原始 json 文件均存档在那里。
结 语
在这篇文章中,咱们演示了如何使用 Rancher 来建立和管理 EKS 集群,做为实操示例,咱们还成功部署了一个示例项目,使用流行的开源工具(容器化的 Grafana 和 InfluxDB),成功跟踪了纽约市 Citi Bike 的实时地理空间数据。
原文连接: https://aws.amazon.com/blogs/...