QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

使用 Rancher 管理 AWS EKS 集群

  • 2020-05-14
  • 本文字数:3905 字

    阅读完需:约 13 分钟

使用Rancher管理AWS EKS集群

Rancher 是一个流行的开源企业级 Kubernetes 管理平台,许多组织使用它来管理混合部署的 Kubernetes 集群。Rancher 支持 Amazon Elastic Container Service for Kubernetes (Amazon EKS) ,借助此功能,Rancher 用户可以直接通过 Rancher 平台来对 AWS EKS 进行直接纳管。


Amazon EKS 与 Rancher 结合后,使用方便,可兼具您在 Rancher 中养成的使用习惯与期望从 AWS 获得的功能、可靠性和性能。Amazon 的托管 Kubernetes 解决方案 EKS,可以让您 在云中快速创建可扩展的 Kubernetes 实例,而 Rancher 拥有简洁易用的 UI 和针对 Kubernetes 的更多拓展功能,强强组合将带来企业 Kubernetes 使用的操作体验和性能的极大提升。


不论你是 EKS 和 Rancher 的新手用户,还是对 EKS 或 Rancher 都有所了解、着重关注如何使用开源软件管理 EKS,本文都值得一读。


本文将演示如何使用 Rancher 设置 EKS 集群,部署可公开访问的应用程序来测试集群,以及部署示例项目以使用其他开源软件(例如 Grafana 和 InfluxDB)来跟踪实时地理空间数据。

前期准备

若您将跟随本文进行同步操作,前期您需要拥有:


  • 主机 VM、笔记本电脑或服务器,具有公共 Internet IP 地址,且未屏蔽端口 22、80 和 443。

  • Docker,已安装在主机 VM、笔记本电脑或服务器上。

  • 一个 AWS 账户,具有访问 Amazon EKS 的足够权限,可参阅此处的详细说明:


https://docs.aws.amazon.com/eks/latest/userguide/EKS_IAM_user_policies.html


满足上述先决条件后,我们可以着手开始第一步:安装 Rancher。

启动 Rancher Docker 容器

在 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/rancher/rancher)。


现在将浏览器指向主机的公共 IP;您应该看到一个 Rancher 欢迎页面。请注意,由于 https 采用自签名证书,您可能会收到 cert-authority-invalid 警告。此时请忽略该警告并继续。如果您想完全消除此警告,可以在继续操作之前,按照下述链接说明获得一个有效证书:


https://aws.amazon.com/premiumsupport/knowledge-center/acm-certificate-error-https/



在以下窗口中,键入主机的公共 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-aws/global-infrastructure/regional-product-services/)选择要部署 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:


  1. 数据提取 Pod:此 Pod 包含一个脚本,用于定期查询 Citi Bike 发布的 json 格式的实时数据,并通过 API 将其保存到 InfluxDB 数据库。

  2. 使用 InfluxDB 的时间序列数据库 Pod:此 Pod 已安装 InfluxDB,用于处理来自 Citi Bike 站点的实时数据。InfluxDB 是一个流行的开源数据库,针对查询和搜索时间序列进行了优化。此外,此 Pod 还具有一个本地安装点,其中 AWS EBS gp2 存储类用于提供存档历史数据所需的持久卷。

  3. Grafana pod:此 Pod 使用 Grafana 显示收集的数据。


下一步是为项目创建 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.com/aws-samples/managing-eks-clusters-with-rancher/master/CitiBike.json


在 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/opensource/managing-eks-clusters-rancher/?from=groupmessage&amp;isappinstalled=0


作者简介


James Sun


AWS 解决方案架构师。James 拥有超过 15 年的信息技术行业从业经验。加入 AWS 前,他曾在 MapR、惠普、NetApp、雅虎和 EMC 等公司担任多个高级技术职位。他拥有斯坦福大学博士学位。


本文原发于亚马逊 AWS 官方博客。


2020-05-14 22:27924

评论

发布
暂无评论
发现更多内容

芯片破壁者(二十五):从全球贸易网络看芯片博弈

脑极体

智慧警务,大数据分析决策平台建设方案

t13823115967

大数据

网卡分身技术,你 Get 了吗

Linux云计算网络

网络

2021 十大技术趋势扑面而来,你准备好了吗?

李忠良

区块链 人工智能 云计算 大数据 架构

Go的声明语法为什么是这样

Rayjun

Go 语言

面向对象设计总结

Iris

面向对象

MySQL慢查询(中):正确的处理姿势,你get到了吗?

架构精进之路

MySQL MySQL优化 MySQL架构 28天写作

架构师训练营 第十二周作业

文江

链上数据存储,区块链底层技术落地

t13823115967

区块链落地

多熟悉一门编程语言看法

superman

用 flomo 管理自己的奇思妙想瀑布流

Guanngxu

架构师训练营第十二周作业

丁乐洪

面向垂直领域的OpenIE图谱构建技术

DataFunTalk

OOP: DIP与LSP

Iris

面向对象 架构训练营

移动开发属于哪个领域!2021年Android春招面试经历,详细的Android学习指南

欢喜学安卓

android 程序员 面试 移动开发

案例研究之聊聊 QLExpress 源码 (一)

小诚信驿站

聊聊架构 规则引擎 28天写作 QLExpress源码 聊聊源码

「学习笔记」深入理解ThreadLocal

Java架构师迁哥

Activemq Jms 简单示例

Java 消息队列 JMS Activemq

Spring Cloud Gateway (七)处理流程解析

Java 网关 SpringGateway

面试大揭秘!从技术面被“虐”到征服CTO,全凭这份强到离谱的pdf

Java架构之路

Java 程序员 架构 面试 编程语言

精选算法面试-链表(判断环)

李孟聊AI

算法 链表 28天写作

学习安卓开发!View的这些基础知识你必须要知道,Android岗

欢喜学安卓

android 程序员 面试 移动开发

洞察

JiangX

创业 投资 认知 28天写作 洞察

架构师第 6 课作业及学习总结

小诗

「架构师训练营第 1 期」

消失的同事

石君

时代发展 28天写作

大作业 1

郎哲

推荐系统解构

DataFunTalk

大数据

追寻人生的意义

三只猫

28天写作

爱奇艺SOAR探索与实践

爱奇艺技术产品团队

安全

京东T7团队技术4面:线程池+索引+Spring +分布式锁+Mysql+项目等

Java架构之路

Java 程序员 架构 面试 编程语言

独角兽余额宝(Java现场面试48题):性能调优+索引+Mysql+缓存+HashMap+GC

Java架构之路

Java 程序员 架构 面试 编程语言

使用Rancher管理AWS EKS集群_文化 & 方法_Rancher_InfoQ精选文章