iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 1
4

寫在前面的廢話

話說最近在學習 DevOps, 有機會接觸到 Kubernetes, 正好同事很熱衷於社群分享活動, 因此就藉著 iT 邦幫忙鐵人賽, 寫寫學習 Kubernetes 的筆記. 心想時間訂在 10/16 開始還很充裕, 沒想到日子一轉眼就到了, 好日子真的過完了. 只好撐著一把老骨頭, 一天一篇把筆記給寫完, 希望每天花 15 分鐘 第一次學 Kubernetes 就上手 系列, 30 天後別人問起 Kubernetes 是什麼時便可以拿來說說嘴~

筆者偏好一些實機上手的經驗分享, 因此這 30 天的筆記大部分會是以實作的筆記為主, 除了幾篇的廢話說明之外, 應該不會太多理論, 怕讀者看到睡著了.

淺談 Kubernetes 與架構

筆者已經是用微軟產品好幾年的老屁股, 碰到 Open Source 的東西, 已經不像學生時期那麼得心應手. 一切都要重頭學起.
好在現在有谷哥大神可以很快找到山一樣高的資料研讀. 但是沒有太多時間可以全部都讀完, 因此筆者建議初學一個新的東西先從以下的兩個地方開始.
1. 官方網站 (https://kubernetes.io )
2. 維基百科 (https://en.wikipedia.org/wiki/Kubernetes )

官方網站上的定義最簡單明瞭, 筆者也不用胡說八道

"Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications."

參考: https://kubernetes.io/
此外, 維基百科是最適合去翻找歷史來龍去脈的地方, 稍微整理一下重點:

  • Kubernetes 又稱為 k8s
  • 最初是 Google 在 2014 年所發表的, 前身是 Borg 系統, 2015 年七月釋出 v1.0 並交由 CNCF 開發維護
  • 目前穩定版本為 1.12 版 (2018/9/28釋出)
  • 開發語言是 GO, 目前是 Open Source 僅次於 Linux 第二活躍的專案
  • 看到這個 Logo, 就知道是 Kubernetes (舵上的七個柄可是跟當初命名專案命名有關呢)
    https://ithelp.ithome.com.tw/upload/images/20181016/20111871ducJ614OBE.jpg

大致上了解 Kubernetes 由來後, 為了後面的筆記在閱讀時有一定的概念, 以下開始淺談 Kubernetes 的架構.

以下是 Kubernetes 的架構圖, 主要組成元件與功能說明如下:
https://ithelp.ithome.com.tw/upload/images/20181016/20111871oBVDX38WoA.jpg
資料來源: https://mediusprodstatic.studios.ms/presentations/Ignite2018/BRK2236.pptx

  • 主節點 (Master node) - 為 Kubernetes 叢集的控制台, 負責叢集管理, 溝通, 排程與監控叢集事件與狀態. 主節點的元件包括:
    • API server - 為 Kubernetes 叢集的前端, 接受 REST 呼叫用以控制或配置叢集
    • etcd - 為高可用性的分散式資料儲存, 儲存 Kubernetes 的所有資料與配置資訊
    • Scheduler - 用以監控, 創建節點, 與節點內元件配置狀態
    • Controller manager - 主節點內的各個控制器(Controller) 為獨立的工作程序, 各自負責特定的工作, 控制器包括:
      • 節點控制器 (Node controller) - 負責通知與回應節點的狀態
      • 複寫控制器 (Replication controller) - 負責每個複寫系統內維持設定的 Pod 數量
      • 端點控制器 (End-Point controller) - 負責端點的服務發布
      • 服務帳戶與 Token 控制器 (Service Account & Token controller) - 負責創建服務帳戶與新生成的 Namespace 的 API 存取 Token
  • 工作節點 (Worker nodes) - 為 Kubernetes 的 runtime 執行環境, 工作節點的元件包括:
    • Kubelet - 是一個在節點中的 Agent, 接受 API server 的命令, 用以起始 Pods, 回報狀態給主節點, 並且可以對外公開端點 Port
    • Kube-proxy - 負責啟用 Kubernetes 服務的網路規則, 進行網路連線的轉發
    • Docker - 工作節點內負責容器化的執行平台
    • Pod - Kubernetes 中的基本單位, 可以包含容器群組或多個容器, 是應用程式的邏輯主機
    • Container - 應用程式執行時所需要的執行環境

以上是第一天的筆記, 有對 Kubernetes 的基本認識後, 後續看到一些名詞才不會霧煞煞.

明天開始我們就要實機上手學習 Kubernetes 囉.


參考資料


下一篇
Day 2 - Docker 與 Kubernetes 環境準備
系列文
15 分鐘學習系列 - 第一次學 Kubernetes 就上手30

尚未有邦友留言

立即登入留言