近日,亚马逊云科技开源了 AmazonEKSAnywhere。这个我的项目为AmazonEKS提供了一种新的部署模式,能够在本地数据中心应用虚拟机轻松创立和治理Kubernetes集群,并利用AmazonEKSDistro的劣势,为您的数据中心带来统一的Kubernetes运维治理体验。它能够对多个Kubernetes集群进行全生命周期治理,为用户灵便交付
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:
- public.ecr.aws
- anywhere-assets.eks.amazonaws.com (下载二进制、配置清单和 OVA 模板)
- distro.eks.amazonaws.com (下载 Amazon EKS Distro)
- d2glxqk2uabbnd.cloudfront.net (作为 Amazon EKS Anywhere 和 Amazon EKS Distro ECR 的存储仓库)
- api.github.com (如果不启用 GitOps 则不须要)
一个 Amazon EKS Anywhere 集群须要创立6到10虚拟机,每个节点资源需要:
下载 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.pub
ssh-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=''
$ export Amazon EKSA_VSPHERE_PASSWORD=''
*左滑查看更多
最初创立集群。
$ 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 开源社区经理
扫描上方二维码即刻注册