使用 KubeSphere 管理 Amazon EKS Anywhere 集羣

語言: CN / TW / HK

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.pub
  ssh-rsa AAAAB3NzxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoE= [email protected]

* 滑查看更

獲取 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

KubeSphere (https://kubesphere.io)是在 Kubernetes 之上構建的 開源容器混合雲 ,提供全棧的 IT 自動化運維的能力,簡化企業的 DevOps 工作流。

KubeSphere 已被  Aqara 智能家居、愛立信、本來生活、東軟、華雲、新浪、三一重工、華夏銀行、四川航空、國藥集團、微眾銀行、杭州數跑科技、紫金保險、去哪兒網、中通、中國人民銀行、中國銀行、中國人保壽險、中國太平保險、中國移動、中國電信、天翼雲、中移金科、Radore、ZaloPay  等海內外數千家企業採用。KubeSphere 提供了開發者友好的嚮導式操作界面和豐富的企業級功能,包括  Kubernetes   多雲與多集羣管理、DevOps (CI/CD)、應用生命週期管理、邊緣計算、微服務治理 (Service Mesh)、多租户管理、可觀測性、存儲與網絡管理、GPU support  等功能,幫助企業快速構建一個強大和功能豐富的容器雲平台。

 :sparkles: GitHub :https://github.com/kubesphere

 :computer: 官網(中國站) :https://kubesphere.com.cn

:man:‍:computer:‍  微信羣: 請搜索添加羣助手微信號  kubesphere