跳至主要内容

[30] Summary

那些文件沒告訴你的 AWS EKS 系列文 到此告一個段落, 本系列文將於賽後同步刊登於筆者 部落格 。這系列文章大致上可以分為以下幾類:

  1. Authentication/Authorization
  2. Admission Controllers - validating/mutating webhook
  3. Work Nodes
  4. Components
  5. VPC CNI feature
  6. Logs / Monitor
  7. Provision tool
  8. Load Balancer

Authentication/Authorization

Admission Controllers - validating/mutating webhook

Work Nodes

Component

VPC CNI feature

Logs / Monitor

Provision tool

Load Balancer

雖然 EKS 為替使用者託管了 Control Plane 上的元件,從 2018 年 EKS 服務啟用後,愈來愈多的團隊採用雲端平台一鍵啟用 Kubernetes 來作為基礎建設,但是 AWS 環境中整合了諸多服務,如 EC2、EBS、VPC、ELB 及 Auto Scaling Group(ASG)等服務,AWS 服務則有各自的限制,倘若維運人員對於上游 Kubernetes 或是 AWS 服務不甚熟悉,那就會面臨到服務故障而不知道如何進行除錯。以下舉例:

  • EKS worker node 無法順利加入 cluster,而 EKS 上使用 EKS optimize AMI,則進行了一連串的 Kubernetes 驗證流程才得以使 Node 可以順利加入節點。
  • 整合 ELB 資源,而需了解 ELB 使用限制,如 NLB hairpinning 才能避免連線超時問題。

但也是 AWS 服務功能眾多,才得以在不同需求時可以有相對應的解決方案,如,針對 Storage 使用速度、分享方式等選擇對應 AWS Service,同時支援了數種 Container Storage Interface (CSI) driver 與 Kubernetes 整合, Amazon EBS CSI driver [1]、 Amazon EFS CSI driver [2] 及 Amazon FSx for Lustre CSI driver [3] 等。

官方文章有專門的文章 Best Practices Guide [4] 探討如何針對不同主題討論,接者如何透過 EKS 功能來實現需求及最佳化。

EKS 管理

EKS 本身是個採用原生 Kubernetes 管理平台整合至 AWS 環境,因此其系統架構的設計有非常多層級的概念:

  1. AWS 服務本身的功能。
  2. EKS 基於 AWS 服務使用的託管服務功能。
  3. EKS 基於原生 Kubernetes 實現功能。
  4. 原生 Kubernetes 功能。

有了 Kubernetes 基礎概念後去查看官方文件或是官方部落格就能較為理解 EKS 運作原理。不過 Kubernetes 版本推新不斷,因此 EKS 文件上難免會有更新較慢或是筆誤部分,這部分都非常歡迎直接到官方 Github 去回報問題,或是點選文件上 feedback 才更有機會將這些問題給修復。


心得

與先前查看鐵人賽一樣,並不預期說會寫一個心得來記錄當下,也可能會覺得為什麼會需要寫一個心得來佔用篇幅,但是仍無法相信已經完成 30 天的鐵人賽。記得剛開始鐵人賽時,眼尖的朋友發現我參加此次鐵人賽,看了幾篇文章就問了「你是不是選了一個相較偏門而非基礎入門教學文章」,大概是想起 jserv 大大於每學期初課堂介紹時會說的:

我不知道有多少人可以完成這門課,但在放棄之前我希望大家可以學到點什麼。

時常傳聞 EKS 使用上有些許難度,希望想讓大家從入門到放棄前有機會可以一探 EKS 工作原理而開始此次鐵人賽系列。從原生 Kubernetes 原理、AWS 服務限制,基於 Five whys [5] 的方法不斷地問自己是否真的有搞懂原理近一步繼續往下探索而產生花式為什麼作為主題。

然而原本預計每天一篇的紀錄可能會花 1~2 小時可以完稿,因此在參賽時基本上並沒有什麼存稿甚至沒有大綱或定義主題,最終導致中間有些主題可能都不太連貫。相信大家可以在每天的 log 上面查看到對應的 timestamp 可以查看到實際測試的時間 QQ

雖然多數 EKS 服務及整合 Kubernetes 部分都已經描述到了,但近期仍不斷推出新功能仍需要花時間持續研究學習,若未來有研究也將會持續更新至 部落格 上:

參考文件

  1. Amazon EBS CSI driver - https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html
  2. Amazon EFS CSI driver - https://docs.aws.amazon.com/eks/latest/userguide/efs-csi.html
  3. Amazon FSx for Lustre CSI driver - https://docs.aws.amazon.com/eks/latest/userguide/fsx-csi.html
  4. EKS Best Practices Guides - https://aws.github.io/aws-eks-best-practices/
  5. Five whys - https://en.wikipedia.org/wiki/Five_whys
  6. Tutorial: Assigning IPv6 addresses to pods and services - https://docs.aws.amazon.com/eks/latest/userguide/cni-ipv6.html
  7. Multiple network interfaces for pods - https://docs.aws.amazon.com/eks/latest/userguide/pod-multiple-network-interfaces.html