前言
隨著公司的逐漸發展,開拓了更加多的子項目與小程序,這些都需要進行宣傳,但是管理以及部署新的應用是一個繁瑣的工程,部署麻煩而且更新業務的時候非常不方面。尤其面向用戶的時候,體驗感很差。于是想要使用docker鏡像進行部署,再通過k8s對docker鏡像進行管理。借用docker和k8s官方給出的鏡像,搭建一臺master和一臺node,能夠成功搭建起kubernetes結構,并且可以成功的訪問連接在master節點上的node節點,并拉取到docker容器中的Nginx鏡像。
但是考慮到普通k8s的模塊維護比較繁瑣,維護成本較高,尤其是對于小公司。甚至出現問題我們需要解決底層問題。
EKS——最佳選擇
在這種情況下,選擇使用開源社區提供的發行版和各種管理工具,就成為一個并不經濟的選項。對于企業來說,找到一個可以以最低心智負擔接入的 Kubernetes 服務,才是最佳選擇。相比于社區的眾多發行版,Amazon EKS 屏蔽了 Kubernetes 底層的基礎設施的部分,將 Worker 層面的工作保留給用戶,既可以給予用戶一定的自由,同時又可以讓用戶可以無痛的從傳統架構切換至云原生架構上。
對于企業而言,Amazon 的 EKS 服務,無疑是一個最佳的選擇。
亞馬遜云科技提供了100余種產品免費套餐。其中,計算資源Amazon EC2首年12個月免費,750小時/月;存儲資源 Amazon S3 首年12個月免費,5GB標準存儲容量。
https://aws.amazon.com/cn/free/?nc2=h_ql_pr_ft&all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc&awsf.Free%20Tier%20Types=*all&awsf.Free%20Tier%20Categories=*all&trk=e0213267-9c8c-4534-bf9b-ecb1c06e4ac6&sc_channel=el
Amazon EKS 通過托管控制平面節點,盡可能的降低用戶在維護整個集群的成本。在使用 Amazon EKS 后,企業只需要維護執行業務所需的 Worker 節點,就可以搞定整個集群的運轉。剩下的工作,就交給 AWS 來完成。AWS 為用戶提供了一個可以跨多個 AWS 可用區,可擴展且高度可用的控制平面,從而確保無論在什么情況下 Kubernetes API 和 etcd 服務都可以正常運轉。從而確保業務的可用性。
不僅如此,Amazon EKS 還通過整合 AWS 的其他業務,諸如 Elastic Load Balancing、Amazon CloudWatch 等服務,讓整個 Kubernetes 集群可以更加動態的完成業務的請求而不會崩潰。
和一般的 Kuberntes 服務相比, Amazon EKS 提供了和上游 Kubernetes 一致的 API,這意味著如果企業希望使用 Kubernetes 生態中的插件或工具,都可以直接無痛接入,從而享受到來自 Kubernetes 社區的賦能。
同時,Amazon EKS 和上游保持一致也使得 Amazon EKS 可以十分輕松的完成 Kubernetes 集群的升級。Amazon EKS 會自動將正在運行的集群更新到最新的 Kubernetes 版本,對于企業來說,無需任何關注,集群就已經完成了整體的升級,讓企業的集群可以享受到 Kubernetes 的最新特性。
下面讓我們開啟EKS之旅吧!
https://aws.amazon.com/cn/eks/?nc2=h_ql_prod_ct_eks&trk=c9e61d5e-4432-4aa4-9c86-e210c20e7415&sc_channel=el
EKS常規操作
一、創建基礎環境網絡
方案一
本方案參考文檔 https://baijiahao.baidu.com/s?id=1726091106781949858&wfr=spider&for=pc
創建VPC
創建InternetGateway 并關聯至VPC
創建Public Subnet 的路由表
編輯路由規則,添加圖中所示路由規則
創建Pubilc Subnet,兩個, 選擇不同的 Availability Zone,并將路由表關聯為 Pubilc Route
創建NAT Gateway,選擇NAT Gateway所在子網為Pubilc Subnet
創建Private Subnet 路由表,并編輯路由規則
創建Private Subnet選擇不同的可用區,并關聯至Private Route
至此網絡環境搭建完畢,可在Pubilc subnet 和 Private Subnet 啟動EC2進行測試
方案二
本方案流程參照文檔https://blog.csdn.net/zhuyunier/article/details/86538525
1、登錄AWS,點擊服務中的VPC,打開 Amazon VPC 控制臺;
2、在導航窗格中,選擇 VPC 控制面板。在控制面板中,選擇 Launch VPC Wizard (啟動 VPC 向導);
3、選擇帶單個公有子網的VPC,點擊選擇;
4、在配置頁面上的 VPC 名稱字段中輸入您的 VPC 的名稱,并在子網名稱字段中輸入您的子網的名稱,確認信息無誤后點擊創建;
5、創建成功后在VPC的列表便能看到新創建的VPC;
6、通過向導創建后的VPC,會自動創建Internet網關,并附加到創建的VPC上;同時也會自動創建路由表,將創建子網關聯到路由表中,并添加一條訪問外網的路由;
7、向 VPC 關聯 IPv6 CIDR 塊。選擇您的 VPC,然后選擇操作和 編輯CIDRs。選擇添加 IPv6 CIDR 塊后,選擇關閉。
8、在導航窗格中,選擇 Internet 網關。您可以通過查看 VPC 列找到與您的 VPC 連接的 Internet 網關,該列顯示了 VPC 的 ID 和名稱 。
9、在導航窗格中,選擇 路由表。有兩個路由表與 VPC 關聯。選擇自定義路由表 (Main 列顯示 No),然后選擇 Routes 選項卡以便在詳細信息窗格中顯示路由信息:
該表格中的第一行是本地路由,可允許 VPC 內的實例進行通信。此路由默認情況下存在于每個路由表中,您不能刪除它。
第二行顯示了 Amazon VPC 向導添加的路由,它允許目標為 VPC (0.0.0.0/0) 外部的 IPv4 地址的流量從子網流向 Internet 網關。
9、選擇主路由表。主路由表擁有一個本地路由,但沒有其他路由。
10、打開 Amazon VPC 控制臺,在導航窗格中,選擇子網、點擊創建子網;
11、根據需要指定子網詳細信息,然后選擇創建;
12、選擇創建好的子網,點擊操作,設置修改自動分配IP設置;
13、勾選啟用自動分配共有IPv4地址,點擊保存;
14、打開 Amazon VPC 控制臺 https://console.aws.amazon.com/vpc/。
15、在導航窗格中,選擇安全組,點擊Create Security Group。
16、在 Group name 字段中,輸入 WebServerSG 作為安全組的名稱,并提供說明。從 VPC 菜單中選擇您 VPC 的 ID,確認信息無誤后點擊Create。
17、選擇您剛剛創建的 WebServerSG 安全組 (可在 Group Name 列中查看其名稱)。
18、在 Inbound Rules 選項卡上,選擇 Edit,然后添加入站流量規則,以下為RDS數據庫規則:
方案三
1、打開控制臺點擊服務,搜索 cloudformation,點擊進入
2、點擊創建堆棧
3、點擊 Amazon S3 URL,輸入 https://cf-templates-2ok3jb255bix-cn-north-1.s3.cnnorth-1.amazonaws.com.cn/amazon-eks-vpc-private-subnets-bj.yaml
4、在堆棧名稱中輸入 L2C-EKS,并點擊下一步
5、頁面拉至最下方,出現下圖內容,點擊下一步
6、頁面拉至最下方,勾選我確認,并創建堆棧。
7、等待資源由 CREATE_IN_PROGRESS 狀態變為 CREATE_COMPLETE 的狀態
8、相關資源,點擊服務,搜索 VPC,點擊進入。會發現一個名稱為 L2C-eks-VPC 的 VPC
9、點擊子網,可以看到已經創建完成 2 個公有子網與 2 個私有子網
10、點擊路由表,可以看到已經創建完成的一個公有路由表與 2 個私有路由表
11、點擊公有路由表,可以看到已經配置好的路由規則
12、點擊私有路由表,可以看到已經配置好的路由規則
13、點擊安全組,可以看到已經創建好的安全組,并查看相關的入站規則,如否為如下圖所
示。
14、點擊服務,輸入 IAM 點擊進入
15、點擊角色,在搜索框里輸入 eks,可以看到 L2C-EKS 和 L2C-EKS-node 兩個角色
二、創建 EKS 集群
1、點擊服務,在搜索框中搜索 EKS,點擊進入 EKS 的控制臺
2、點擊集群,選擇創建集群
3、輸入名稱為 L2C-EKS,選擇版本為 1.19,并選擇角色為 L2C-EKS 點擊下一步
4、選擇剛剛創建的 L2C-eks-VPC
5、選擇安全組為創建的 L2C-EKS,點擊下一步
6、下滑頁面在集群終端節點訪問中選擇私有
7、保持默認,點擊下一步
8、點擊創建集群,等待集群創建完畢。
9、選擇選擇已經創建好的集群點擊配置,選擇計算,點擊添加節點組
10、添加名稱,選擇 L2C-EKS-node 點擊下一步,并選擇 IAM 角色
10、選擇 AMI 類型為 Amzon Linux2 的鏡像,實例類型選擇 t3.medium,其余保持默認,點
擊下一步
11、指定子網,選擇創建的 4 個子網點擊下一步
12、點擊創建等待計算節點創建成功
三、創建堡壘機
1、點擊做上角的服務按鈕,選擇 ec2,進入 ec2 控制臺
2、在左側菜單欄里面選擇實列
3、點擊右上角啟動實力
4、在快速啟動中,選中 Amazon Linux 2,點擊選擇鏡像
5、選擇 t2.mirco 的實例,點擊下一步
6、在實例配置中選擇已經創建好的 L2C-eks-VPC
7、選擇一個公有子網
8、開啟自動分配公有 ip,配置完成后點擊下一步
9、選擇默認存儲設置,點擊下一步
10、添加如下標簽點擊下一步
11、選擇已經創建好的 L2C-EKS 安全組
12、點擊審核與啟動,在確認與上述操作無誤后點擊啟動
13、選擇創建一個新的密鑰對
14、輸入 L2C,并點擊下載密鑰對,保存好密鑰對之后,點擊啟動實例
15、稍等一會之后我們可以看到已經創建好的實例,選中我們可以看到實例的詳細信息,并復制公有 ip 地址
16、開起一個終端窗口,鏈接到剛才的跳板機
17、登錄實例成功
18、在 aws 控制臺打開 IAM 的控制臺,在左側菜單欄選擇用戶,點你你自己的用戶
19、選擇安全證書,點擊創建密鑰,保存相關文件
20、在已經連接好的 ec2 實例中輸入 sudo -I 進入 root 權限
21、在已經連接好的 ec2 實例中輸入 aws configure 命令,輸入剛才已經保存的 AKSK 文件,region 填寫為 cn-north-1,default output format 填寫為 json
22、接著運行以下命令
curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.19.6/2021-01-
05/bin/linux/amd64/kubectl
chmod +x ./kubectl
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export
PATH=$PATH:$HOME/bin
kubectl version --short –client
并看到如下圖所示的輸出
23、接著輸入 aws eks --region cn-north-1 update-kubeconfig --name L2C-EKS
命令,連接到 eks,
24、并運行 kubectl get node 可以看到已經啟動的計算節點
25、我們將我們的nginx應用部署到上面, 采用yaml的文件形式,將進行一個Namespace(命名空間)、Deployment、Service的創建
通過Nodeport的形式映射nginx服務
26、我們應用這個文件,我們可以看到這些文件被創建成功
27、我們查看剛才創建再yulong的命名空間下的 pod和service,從中我們可以看到映射關系為service的8888端口映射到了宿主機的30934
28、我們查看pod運行在哪個節點上,并對30934端口進行訪問、
至此我們就完成了nginx的發布
29、為了更好的展示EKS的deployment部署模式,我們將pod調成兩個
我們再次應用這個文件,看到他已經更新
接著我們查看pod的數量
我們可以設定一個期望值,希望有多少至少可用的pod運行在我們的EKS上
30、現在我們手動殺掉其中一個
然后我們再次查看發現又有一個新的pod加入到了里面
這是因為我們的期望值是兩個,所以他會自動為我們自動保持兩個nginx,即使把他們全部干掉也會自動生成
EKS——YYDS
創建EKS集群后,EKS會自動創建k8s的master節點,我們只需要添加 worker節點即可,就可以進行連接部署應用了。
Amazon EKS消除了這種復雜性,并交付了可供生產環境使用的架構,該架構可跨多個可用區自動運行Kubernetes管理基礎架構,消除單點故障。Amazon EKS自動檢測并替換不正常的節點,為管理基礎架構打補丁,并且按需執行版本升級。這使得由Amazon EKS管理的Kubernetes基礎架構具有彈性,即使丟失整個可用區也能正常運行。
雖然我們上面的部署流程中不足以看出EKS的獨特優勢,但是我們的EKS完美的讓k8s運行在aws上。無需我們過多的去維護底層,只要將我們應用部署上即可,EKS的強勢之處還在于:
-
高可用和自動處理可用區規劃問題
EKS可跨多個可用區自動運行Kubernetes管理基礎架構,消除單點故障。Amazon EKS自動檢測并替換不正常的節點,為管理基礎架構打補丁,并且按需執行版本升級。這使得由Amazon EKS管理的Kubernetes基礎架構具有彈性,即使丟失整個可用區也能正常運行。
Amazon EKS的服務幫助你能夠更好的運行托管的Kubernetes的平臺。Amazon EKS上,用戶可以建立一個橫跨三個AZ可用區的kubernetes集群,運行你的master nodes(控制平面),提供高可用的API服務。
三個master nodes上又有不同的etcd 能夠做同步,也提供了API的功能,Scheduler的功能,controller的功能,讓你橫跨三個AZ,穩定的運行。
利用EKS全授管的特性,你只需要自己去搭建你所需要的worker nodes工作群組即可。你不需要自建master nodes,也不再去需要關心master nodes如何解決高可用的問題。 -
企業級工作負載
EKS是為了更好的運行企業級工作負載而設計的。你可以把最核心的業務運行在AWS上,而不需要關心每日備份、管理等復雜的工作。 -
與AWS服務無縫集成
EKS 與諸如 Amazon CloudWatch、Auto Scaling 組、AWS Identity and Access Management (IAM) 和 Amazon Virtual Private Cloud (VPC) 之類的服務深度集成,為您帶來監控、擴展和負載平衡應用程序的無縫體驗。 -
原聲Kubernetes
EKS跟上游kubernetes社區保持同步,上游kubernetes的功能完整的繼承在Amazon EKS里面,為您提供kubernetes原生體驗。所有在EKS里做出的功能和優化,AWS團隊都會將這些內容完整的貢獻到上游kubernetes社區,成為開源項目的一部分,讓所有社區成員都能共享這一功能。 -
易遷移
所有標準 Kubernetes 環境上運行的應用程序均完全兼容,并可輕松遷移到 Amazon EKS。
寫在最后
亞馬遜云科技專為開發者們打造了多種學習平臺:
- 入門資源中心:從0到1 輕松上手云服務,內容涵蓋:成本管理,上手訓練,開發資源。https://aws.amazon.com/cn/getting-started/?nc1=h_ls&trk=32540c74-46f0-46dc-940d-621a1efeedd0&sc_channel=el
- 架構中心:亞馬遜云科技架構中心提供了云平臺參考架構圖表、經過審查的架構解決方案、Well-Architected 最佳實踐、模式、圖標等。https://aws.amazon.com/cn/architecture/?intClick=dev-center-2021_main&trk=3fa608de-d954-4355-a20a-324daa58bbeb&sc_channel=el
- 構建者庫:了解亞馬遜云科技如何構建和運營軟件。https://aws.amazon.com/cn/builders-library/?cards-body.sort-by=item.additionalFields.sortDate&cards-body.sort-order=desc&awsf.filter-content-category=*all&awsf.filter-content-type=*all&awsf.filter-content-level=*all&trk=835e6894-d909-4691-aee1-3831428c04bd&sc_channel=el
- 用于在亞馬遜云科技平臺上開發和管理應用程序的工具包:https://aws.amazon.com/cn/tools/?intClick=dev-center-2021_main&trk=972c69e1-55ec-43af-a503-d458708bb645&sc_channel=el
【專屬福利】
福利一:100余種產品免費套餐。其中,計算資源Amazon EC2首年12個月免費,750小時/月;存儲資源 Amazon S3 首年12個月免費,5GB標準存儲容量。
https://aws.amazon.com/cn/free/?nc2=h_ql_pr_ft&all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc&awsf.Free%20Tier%20Types=*all&awsf.Free%20Tier%20Categories=*all&trk=e0213267-9c8c-4534-bf9b-ecb1c06e4ac6&sc_channel=el
福利二:最新優惠大禮包,200數據與分析抵扣券,200數據與分析抵扣券,200數據與分析抵扣券,200機器學習抵扣券,200$微服務與應用開發抵扣券。
https://www.amazonaws.cn/campaign/?sc_channel=el&sc_campaign=credit-acts-ldr&sc_country=cn&sc_geo=chna&sc_category=mult&sc_outcome=field&trkCampaign=request-credit-glb-ldr&trk=f45email&trk=02faebcb-3f61-4bcb-b68e-c63f3ae33c99&sc_channel=el
福利三:解決方案CloudFormation一鍵部署模版庫
https://aws.amazon.com/cn/quickstart/?solutions-all.sort-by=item.additionalFields.sortDate&solutions-all.sort-order=desc&awsf.filter-tech-category=*all&awsf.filter-industry=*all&awsf.filter-content-type=*all&trk=afdbbdf0-610b-4421-ac0c-a6b31f902e4b&sc_channel=el