James SunAWS解決方案架構師。James 擁有超過 15 年的信息技術行業從業經驗。加入 AWS 前,他曾在 MapR、惠普、NetApp、雅虎和 EMC 等公司擔任多個高級技術職位。他擁有斯坦福大學博士學位。
本文原發於亞馬遜AWS官方博客。html
Rancher 是一個流行的開源企業級Kubernetes管理平臺,許多組織使用它來管理混合部署的Kubernetes 集羣。Rancher 支持 Amazon Elastic Container Service for Kubernetes (Amazon EKS) ,藉助此功能,Rancher用戶能夠直接經過Rancher平臺來對AWS EKS進行直接納管。node
Amazon EKS 與 Rancher 結合後,使用方便,可兼具您在 Rancher 中養成的使用習慣與指望從 AWS 得到的功能、可靠性和性能。Amazon 的託管 Kubernetes 解決方案 EKS,可讓您 在雲中快速建立可擴展的 Kubernetes 實例,而Rancher擁有簡潔易用的UI和針對Kubernetes的更多拓展功能,強強組合將帶來企業Kubernetes使用的操做體驗和性能的極大提高。nginx
不論你是EKS和Rancher的新手用戶,仍是對EKS或Rancher都有所瞭解、着重關注如何使用開源軟件管理EKS,本文都值得一讀。git
本文將演示如何使用 Rancher 設置 EKS 集羣,部署可公開訪問的應用程序來測試集羣,以及部署示例項目以使用其餘開源軟件(例如 Grafana 和 InfluxDB)來跟蹤實時地理空間數據。github
前期準備docker
若您將跟隨本文進行同步操做,前期您須要擁有:shell
知足上述先決條件後,咱們能夠着手開始第一步:安裝 Rancher。數據庫
啓動 Rancher Docker 容器json
在 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/ranc...。
如今將瀏覽器指向主機的公共 IP;您應該看到一個Rancher 歡迎頁面。請注意,因爲 https 採用自簽名證書,您可能會收到 cert-authority-invalid 警告。此時請忽略該警告並繼續。若是您想徹底消除此警告,能夠在繼續操做以前,按照下述連接說明得到一個有效證書:
https://aws.amazon.com/premiu...
在如下窗口中,鍵入主機的公共 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-...)選擇要部署 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:
下一步是爲項目建立 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...
在 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/...