Amazon EKS Anywhere 介绍

近日,亚马逊云科技开源了 Amazon EKS Anywhere。这个项目为 Amazon EKS 提供了一种新的部署模式,可以在本地数据中心使用虚拟机轻松创建和管理 Kubernetes 集群,并利用 Amazon EKS Distro 的优势,为您的数据中心带来一致的 Kubernetes 运维管理体验。它可以对多个 Kubernetes 集群进行全生命周期管理,为用户灵活交付 Amazon EKS 容器服务。

Amazon EKS 能够帮助您自动化集群管理,缩减成本,免去使用多个开源或第三方工具来操作 Kubernetes 集群的繁杂工作。您还可以构建自己的管理工具来创建 Amazon EKS Distro 集群、配置操作环境和更新软件。

通过 Amazon EKS Anywhere,你还可以获得亚马逊云科技对集群配置、机器操作系统和第三方集成的默认优化值,这些优化让你专注于业务创新,而不是复杂的组件兼容性或企业内部和云环境之间的部署兼容性。此外,你可以利用 Amazon EKS 控制台来查看你所有通过 Amazon EKS Anywhere 部署的 Kubernetes 集群。

Amazon EKS Anywhere 目前只支持 VMware vSphere,未来将支持裸机部署。

KubeSphere 介绍

KubeSphere 是基于 Kubernetes 构建的容器平台,完全开源,并通过极简的界面交互提供多云与多集群管理、DevOps、可观测性、微服务治理、边缘计算、应用管理等功能,提供强大的网络与存储管理能力,能够帮助企业在公有云、虚拟化及物理机等异构基础设施上完成容器架构的快速构建、部署及运维,实现应用的持续交付与全生命周期管理。

KubeSphere 的联邦集群管理功能可以把多个异构基础设施 Kubernetes 与 Amazon EKS 以及产品家族统一纳管,用户在部署应用时,可以把应用的多个副本按照业务需求分布到多个不同的 Kubernetes 资源池里,并通过 KubeSphere 进行统一运维管理,从上层构建实现跨区、跨集群的高可用。

2021年 1 月,KubeSphere 正式入驻 亚马逊云科技 Quick Start,为全球用户部署云原生应用提供了一键部署 Amazon EKS 和 KubeSphere 的能力,通过 KubeSphere 丰富的应用管理功能,帮助用户加速云原生落地。

如果将 KubeSphere 和 Amazon EKS Anywhere 强强联合,会产生什么样的效果呢?本文就带领大家来上手实践一下。

本系列文章将会分成两篇进行介绍。本篇文章介绍 Amazon EKS Anywhere 以及如何安装 Amazon EKS Anywhere 和 KubeSphere;接下来有机会我们将会介绍如何使用 KubeSphere 统一纳管 Amazon EKS Anywhere 和 Amazon EKS。

创建 Amazon EKS Anywhere 集群

前提

运行 Amazon EKS Anywhere 需要满足:

  • 一个运行了 vCenter 的 vSphere 6.7+ 环境

  • 能够部署 8-10 个虚拟机

  • vSphere 环境有运行中的 DHCP 服务为创建的工作负载提供服务

  • 一个在 vSphere 环境中能够提供给集群使用的网络

  • 把 OVA 模板导入到 vSphere 并制作成模板

  • 具有 vCenter 管理员权限

  • 一台用于执行命令的管理服务器

管理服务器要求:

  • CPU 架构:amd64

  • CPU 4核

  • 内存 16G

  • 磁盘 100G

  • 操作系统 Mac OS (10.15) / Ubuntu (20.04.2 LTS)

  • 能够通过 https/443 访问 vCenter

  • 用户必须在 docker 用户组或是 root 用户,以确保有操作 docker 的权限

  • 有文件的写权限

  • 能够访问以下 URL:

  1. public.ecr.aws

  2. anywhere-assets.eks.amazonaws.com (下载二进制、配置清单和 OVA 模板)

  3. distro.eks.amazonaws.com (下载 Amazon EKS Distro)

  4. d2glxqk2uabbnd.cloudfront.net (作为 Amazon EKS Anywhere 和 Amazon EKS Distro ECR 的存储仓库)

  5. api.github.com (如果不启用 GitOps 则不需要)

一个 Amazon EKS Anywhere 集群需要创建6到10虚拟机,每个节点资源需求:

  • CPU 2核

  • 内存 8G

  • 磁盘 100G

下载 OVA 镜像

首先需要下载 OVA 镜像,根据不同的操作系统和不同的 Kubernetes 版本选择相应的 OVA 镜像:

  • Ubuntu with Kubernetes 1.21

  • Ubuntu with Kubernetes 1.20

导入模板

可使用 vCenter web 界面导入模板,此处咱不针对 vCenter 中导入模板进行详细描述,可参考文档 xxx。

模板添加完成后,需要创建名称为 “os:ubuntu” 的标记和名称为 “eksdRelease:kubernetes-1-20-eks-6” 的标记。

然后勾选创建的两个标记,点击分配即可。

设置管理服务器

管理服务器用来执行各种操作命令,需要先安装 docker 和 kubelet。

$ sudo apt update
$ sudo apt install -y docker.io
$ sudo usermod -a -G docker $USER
$ wget https://distro.eks.amazonaws.com/kubernetes-1-19/releases/4/artifacts/kubernetes/v1.19.8/bin/linux/amd64/kubectl
$ mkdir -p $HOME/bin
$ chmod +x kubectl
$ mv kubectl $HOME/bin/
$ echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc

*左滑查看更多

安装完成后,需要退出然后重新登录系统从而获取准确的用户组权限和 PATH 环境。

安装最新版本的 eksctl(Amazon EKS Anywhere 所需的 eksctl 最低版本为 0.66.0)。

$ curl "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" \--silent --location \| tar xz -C /tmp
$ sudo mv /tmp/eksctl /usr/local/bin/

*左滑查看更多

安装 eksctl-anywhere。

$ export Amazon EKSA_RELEASE="0.5.0" OS="$(uname -s | tr A-Z a-z)"
$ curl "https://anywhere-assets.eks.amazonaws.com/releases/eks-a/1/artifacts/eks-a/v${Amazon EKSA_RELEASE}/${OS}/eksctl-anywhere-v${Amazon EKSA_RELEASE}-${OS}-amd64.tar.gz" \--silent --location \| tar xz ./eksctl-anywhere
$ sudo mv ./eksctl-anywhere /usr/local/bin/

*左滑查看更多

创建集群使用的认证文件,用于 Amazon EKS Anywhere 集群节点 ssh 登陆认证。

$ ssh-keygen -f eks-a
$ cat eks-a.pubssh-rsa AAAAB3NzxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoE= root@localhost

*左滑查看更多

获取 vCenter 认证文件的 sha1 thumbprint。

# 安装 govc
$ wget -c https://github.com/vmware/govmomi/releases/download/v0.25.0/govc_Linux_x86_64.tar.gz -O - | tar -xz
$ chmod +x ./govc
$ mv ./govc /usr/local/bin
$ cd ..
$ rm -rf govc/
$ govc version -l
# 设置 vCenter 地址和管理员的用户密码
$ export GOVC_URL="xxx"
$ export VSPHERE_USERNAME=xxx
$ export VSPHERE_PASSWORD=xxx
# 获取 vCenter 认证文件 的 thumbprint
$ govc about.cert -k=true -thumbprint
$ xxx.xxx.xxx.xxx aa:bb:cc:xx:xx:xx:xx:cc:bb:aa

*左滑查看更多

创建集群配置文件

集群名称必须是小写字母,不要包含大写字母或特殊字符。

$ CLUSTER_NAME=prod
$ eksctl anywhere generate clusterconfig $CLUSTER_NAME \--provider vsphere > eksa-cluster.yaml

*左滑查看更多

以下是一个带注释的模板参考,使用时请删除中文注释。

创建 Amazon EKS Anywhere 集群

创建集群前,还需要设置 vSphere 的用户和密码。

# 设置你的 vCenter 管理员用户密码
$ export Amazon EKSA_VSPHERE_USERNAME='<Username>'
$ export Amazon EKSA_VSPHERE_PASSWORD='<Passwd>'

*左滑查看更多

最后创建集群。

$ eks-a create cluster -f ${CLUSTER_NAME}.yaml

*左滑查看更多

安装过程中你将看到如下输出。

在创建过程中,Amazon EKS Anywhere 将在集群名称目录(例如 $PWD/$CLUSTER_NAME/)创建 .kubeconfig 文件,你可以使用该文件通过 kubectl 查看集群状态和部署工作负载。

p$ export KUBECONFIG=${PWD}/${CLUSTER_NAME}/${CLUSTER_NAME}-eks-a-cluster.kubeconfig
$ kubectl get ns

*左滑查看更多

如果你的集群是通过本地电脑创建的,你可以把 KUBECONFIG 文件保存到集群管理服务器上,同样你也可以把管理服务器上的 KUBECONFIG 文件保存到本地用于管理集群。

部署 KubeSphere v3.2.0

准备持久化存储

Amazon EKS Anywhere 集群默认使用 亚马逊云科技 CSI 作为默认存储,这里将其替换为 OpenEBS 作为默认存储。

$ kubectl apply -f https://openebs.github.io/charts/openebs-operator.yaml

*左滑查看更多

查看 OpenEBS 命名空间下的 Pod,等待所有 Pod 启动完成。

$ kubectl get pods -n openebs

*左滑查看更多

待 OpenEBS 命名空间下的 Pod 都启动完成后,将 OpenEBS 设置为默认存储。

$ kubectl patch storageclass openebs-hostpath -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class": "true"}}}'

*左滑查看更多

在 Amazon EKS Anywhere 集群上部署 KubeSphere v3.2.0

(1) 在 eks-a 管理节点/管理服务器上执行以下命令部署 KubeSphere v3.2.0

kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.2.0/kubesphere-installer.yaml
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.2.0/cluster-configuration.yaml

*左滑查看更多

(2)查看 KubeSphere 安装日志

$ kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f

*左滑查看更多

(3)当看到”Welcome to KubeSphere!”,说明安装完成。

#####################################################
###              Welcome to KubeSphere!           ###
#####################################################

*左滑查看更多

本篇作者

张元涛

亚马逊云科技高级架构师

负责亚马逊云科技合作伙伴相关解决方案的建设以及合作伙伴生态合作。与合作伙伴一起,根据客户需求,分析其在技术架构层面所遇到的挑战和未来的方向,设计和落地基于亚马逊云科技平台和合作伙伴产品的架构方案。曾在知名外企以及国内领导企业任解决方案架构师。在云以及网络等领域有丰富的经验,对于公有云服务以及架构有深入的理解。

姚锐

KubeSphere 高级软件工程师

负责提供解决方案,开源项目 KubeEye 核心成员。

杨传胜

KubeSphere 布道师

KubeSphere 开源社区经理

扫描上方二维码即刻注册

使用 KubeSphere 管理 Amazon EKS Anywhere 集群相关推荐

  1. 使用kubeSphere管理你的k8s集群

    商业转载请联系作者获得授权,非商业转载请注明出处. For commercial use, please contact the author for authorization. For non-c ...

  2. 京东如何基于Vitess管理大型MySQL实例集群

    本文根据dbaplus社群第203期线上分享整理而成 讲师介绍 王云博 京东数据库高级研发工程师 2014年加入京东,一直致力于数据库运维自动化的发展: 2018年专注于京东弹性数据库研发.运维工作. ...

  3. 管理和维护RHCS集群

    导读 管理和维护RHCS集群是一个非常复杂和繁琐的工作,要维护好一个RHCS集群,必须熟悉RHCS的基本运行原理,在集群管理方面,RHCS提供了两种方式:即Luci图形界面方式和命令行方式,这儿重点讲 ...

  4. Rainbond 5.0正式发布, 支持对接管理已有Kubernetes集群...

    Rainbond 5.0正式发布, 支持对接管理已有Kubernetes集群 ​ 今天非常高兴向大家宣布Rainbond v5.0正式发布,Rainbond是开源的企业应用云操作系统,支撑企业应用开发 ...

  5. 五、RabbitMQ管理与高可用集群

    RabbitMQ管理与高可用集群 管理虚拟主机 添加 rabbitmqctl add_vhost king 查看 rabbitmqctl list_vhosts 删除 rabbitmqctl dele ...

  6. 生产环境安装、配置、管理PostgreSQL14.5数据库集群。pgpool 4.3.3参数中文说明

    1 生产环境安装.配置.管理PostgreSQL14.5 欢迎观看我发布的视频 "生产环境安装.配置.管理PostgreSQL14.5数据库集群" 数据库软件不是简单的安装上就好, ...

  7. docker集群_使用Docker,Chef和Amazon OpsWorks进行集群范围的Java / Scala应用程序部署...

    docker集群 Docker非常适合在单个节点上运行隔离的容器. 但是,大多数软件系统都在多个节点上运行,因此,除了Docker之外,我们还需要某种方法来指定哪些容器应在哪些节点上运行. 我要解决的 ...

  8. 使用Docker,Chef和Amazon OpsWorks进行集群范围的Java / Scala应用程序部署

    Docker非常适合在单个节点上运行隔离的容器. 但是,大多数软件系统都在多个节点上运行,因此,除了Docker之外,我们还需要某种方法来指定哪些容器应在哪些节点上运行. 我要解决的特定问题如下:我有 ...

  9. kubesphere v3.1.0 离线集群部署

    目录 一.简介 二.部署环境 2.1.系统要求 2.2.镜像仓库 三.安装部署 3.1.安装包下载: 3.2.安装步骤: 3.2.1.上传解压: 3.2.3.初始化环境: 3.2.4.导入镜像: 3. ...

最新文章

  1. cf 414B Mashmokh and ACM 动态规划
  2. 应用交换技术的负载均衡算法
  3. Bitbucket Pipes发布,带来30+自动化CI/CD管道的方法
  4. Endian Bitfiled
  5. Java内部类简介.
  6. 黑盒之嵌入式操作系统鲁棒性研究
  7. 【渝粤题库】广东开放大学 面向对象方法精粹 形成性考核
  8. python print 输出到txt_(Python基础教程之七)Python字符串操作
  9. ios 内存管理的理解(二)ARC概念及原理
  10. 寻宝机器人电路板焊接_专业维修宿迁市史陶比尔STAUBLI机器人维修{苏州罗韦维修}...
  11. 【java学习之路】(java SE篇)009.IO
  12. Python写数据结构:单向循环链表
  13. 泰凌微TLSR8258烧录
  14. 深度学习论文阅读目标检测篇(四)中英文对照版:YOLOv1《 You Only Look Once: Unified, Real-Time Object Detection》
  15. 迪文T5-T5L使用测试笔记1
  16. SAP上线时未清采购订单处理
  17. 微信公众号开发:如何获取openId(最简单的方式)
  18. 互联网公司的技术博客汇总-BAT等
  19. 关于hit软件构造lab2实验后回顾
  20. PanDownload-百度网盘高速下载神级利器

热门文章

  1. javascript URIError: malformed URI sequence 谈谈url编码 encodeURI encodeURIComponent和escape
  2. 搅局者周鸿祎圆梦:忆往昔凶猛斗狠轮战群雄
  3. 第二季4:初始化MPP系统(step12)
  4. 机器学习--主成分分析PCA算法:为什么去均值以后的高维矩阵乘以其协方差矩阵的特征向量矩阵就是“投影”?
  5. 精准营销!用机器学习完成客户分群!
  6. ssh mysql视屏_ssh+MySQL开发VOD视频点播系统
  7. AI入门: 关于人工智能的深度思考
  8. 增长量计算n+1原则_2017国家公务员考试:简单易得分的增长量计算
  9. android自动关机代码
  10. 服务器自动关闭远程打印服务,服务器远程打印机设置