使用 Rancher 管理 AWS EKS 集羣

作者簡介James Sun AWS解決方案架構師。James 擁有超過 15 年的信息技術行業從業經驗。加入 AWS 前,他曾在 MapR、惠普、NetApp、雅虎和 EMC 等公司擔任多個高級技術職位。他擁有斯坦福大學博士學位。 本文原發於亞馬遜AWS官方博客。

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/

f804daa2436c486bac01789954d195f3


在以下窗口中,鍵入主機的公共 IP,以便 EKS 可以通知 Rancher 安裝進度:

6b9e0592e6ab4daea503c892d48e8100



創建 EKS 集羣


您首先需要爲您的帳戶創建密鑰憑證。通過轉到 IAM > 用戶 >(您的用戶名)> 安全憑證來執行此操作。

然後單擊創建訪問密鑰;應出現一個像這樣的彈出窗口:

0718da3207034b0392156d356a1102db


記錄訪問密鑰 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(自動縮放組)值保留爲默認值。驗證完成後,單擊創建按鈕。

0bef58493dd045e99c60d1a5d855c991


創建 EKS 集羣需要 10 到 15 分鐘;在此期間,您將在控制檯上看到集羣狀態爲“預置”。

Rancher 使用 AWS 後端上的 Cloudformation 模板啓動安裝。您可以通過轉到 Cloudformation 控制檯來監控這些詳細事件,如下面的屏幕截圖所示:

356cf7fd625d4dcba97b4bde28a11799


您還可以訪問 EKS 控制檯,並驗證是否正在創建集羣,如下列屏幕截圖所示:

a8651d8432cd4116a447014b1985e46e


集羣完成預置後,您應看到 Rancher 控制檯中的狀態變爲“活動”:

1a5173e3bcce47b38b6564fc830b56c5



通過部署 nginx Pod 來測試您的 EKS 集羣


現在,您可以在集羣上部署 Pod/容器了。若要開始體驗,請嘗試部署 nginx pod。單擊位於左上角的下拉菜單,然後選擇“默認”項目。

45a9a1568de445a39b5fd72115495d33


接下來,您將看到工作負載屏幕,單擊位於屏幕右上角的部署按鈕:

1827331970e04cd4b3a693b64671167c


現在給您的工作負載命名並指定“nginx”Docker 映像。單擊添加端口,發佈容器端口“80”並指定偵聽端口“80”,然後指定一個第 4 層負載均衡器。這將允許您通過公共互聯網訪問您的 nginx 實例。

da21a71a0f1f49389b6440e9755939b1


單擊啓動,等待工作負載和負載均衡器完成預置,方法是檢查工作負載和負載均衡選項卡的狀態,直至其顯示“活動”。

38e6939a8dd9462899a13d18362f67ef


02916e20952640398a2d64cc95a81d2e


負載均衡器完成預置後,工作負載下方將顯示一個可單擊的鏈接。請注意,AWS 將爲此 EKS 集羣創建 DNS 條目,可能需要幾分鐘才能完成發佈。如果在單擊鏈接後出現 404 錯誤,請再等幾分鐘以更新Elastic Load Balancer DNS 記錄,然後重試。

單擊鏈接“80/tcp”應轉到默認的 nginx 頁面:

0fe6816f425e4f51b335e4eaf47ca690


24e8ed5568a648e8a6d7778d4da0c155



擴展您的 nginx 部署


您可以非常輕鬆地擴展容器數量以適應工作負載高峯。只需在默認項目中選擇工作負載,然後單擊 +/- 標記,即可擴展和縮減部署以動態調整工作負載:

839d4ea34de648e9bcb2a09c03741921



部署示例項目


下面,讓我們通過部署 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”,然後單擊創建。

c01d91ddbe6140e1aa8e081265dfa219


通過選擇左上角的下拉菜單返回集羣控制檯,屏幕截圖如下。然後選擇啓動 kubectl。

b08c1be257e2495892eb53183dbb701a


在 shell 窗口中,鍵入“kubectl get nodes -o wide”以查看工作節點狀態;它們應全部“準備就緒”。

14628f041751478a84a1d3c945bc2207


現在發出以下命令來啓動項目:

curl 'https://raw.githubusercontent.com/aws-samples/managing-eks-clusters-with-rancher/master/run' | bash

隨意下載腳本以查看所涉及的步驟。我已在腳本中添加了註釋供您查看。

等待幾分鐘,讓腳本完成執行。

929c7d6f32db44db8f68db06629e1d23


在默認項目中,您應該看到已預置了三個 Pod。再等待幾分鐘,以便更新負載均衡器的 DNS 記錄,然後再單擊 80/tcp 轉到 Grafana:

53c6c49e2ea0453ea39972e5ee53a4c8


在 Grafana 登錄頁面上,輸入“admin”作爲用戶名並輸入“admin”作爲密碼,然後登錄。

現在,您可以配置控制面板以顯示數據。


配置數據源


選擇左窗格中的齒輪圖標,單擊數據源, 然後單擊 + 添加位於窗口右側的數據源:

748f446bcf1e4e92a932f2c27124c417


填寫數據源的名稱(例如 citibike),選擇 InfluxDB 作爲類型,填寫“coordinates”作爲數據庫名稱:

e017403a77294a87af594f1810ade4b2


然後,在 URL 字段中,找到 InfluxDB pod 的私有 IP 地址,並填寫 http://<ip of influxdb pod>:8086。

您可以通過轉到 Rancher 中的默認命名空間頁面找到Influxdb 的私有 IP 地址,然後單擊 deploy-Influxdb pod:

16a731c4150845d7a2b634a117a82c6a


6d53f4a86abc45fd8405add04185a299


單擊保存並測試以添加數據源。


導入控制面板模板


下載此控制面板模板並將其保存到桌面:

https://raw.githubusercontent.com/aws-samples/managing-eks-clusters-with-rancher/master/CitiBike.json

在 Grafana 中,單擊左窗格中的 + ,然後選擇導入。 單擊位於窗口右側的上傳 json 文件,然後選擇剛下載到桌面的模板:

8154ee6f32a44c1289f57ef5f7b1bf1e


現在,您可以開始跟蹤整個紐約市每個 Citi Bike 站點的實時狀態。您可以選擇自行車站點 ID 並查看其歷史需求趨勢,如折線圖所示。您還可以指定一個時間窗口來跟蹤某一站點的長期需求趨勢。所有站點目前的自行車容量也顯示在彩色編碼的地圖上;綠色表示有超過 30 輛自行車可用,而紅色表示自行車數量不足:

85138a1e129740018d6c9501c6271e75


城市規劃者可以利用這些信息來增加/縮小自行車站點的容量,以便更好地服務哪些依靠自行車滿足日常交通需求的紐約居民。


與 AWS EBS 集成以滿足更大的存儲容量需求


在啓動上面的項目命令時,您同時還使用 EBS for InfluxDB和提取 Pod 中的 gp2 存儲類型創建了兩個持久卷(每個 50 GB),因爲容器的本地存儲空間不足以容納持續流入的數據。若要查看這些持久卷及其持久卷聲明,請前往默認命名空間並選擇頂部的卷選項卡。

16a731c4150845d7a2b634a117a82c6a


現在,通過單擊工作負載選項卡,查看提取 Pod,然後單擊位於窗口最右側的“deploy-citibike”容器的下拉菜單,並選擇執行 Shell。

6d53f4a86abc45fd8405add04185a299


現在您處於容器的 shell 提示下。輸入“mount / grep citibike”,您會看到一個卷設備 /dev/xvdxx 安裝在帶有 ext4 文件系統的 /citibike 上。

製作一個 “ls /citibike” – 您將看到所有原始 json 文件均存檔在那裏。

b5da316e43644d12a5f7ed02fc0f1cd4



結 語


在這篇文章中,我們演示瞭如何使用 Rancher 來創建和管理 EKS 集羣,作爲實操示例,我們還成功部署了一個示例項目,使用流行的開源工具(容器化的 Grafana 和 InfluxDB),成功跟蹤了紐約市 Citi Bike 的實時地理空間數據。


原文鏈接:https://aws.amazon.com/blogs/opensource/managing-eks-clusters-rancher/?from=groupmessage&isappinstalled=0


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章