[ ithome 鐵人賽 ] Kubernetes 30天學習筆記
Branch: master
Clone or download
Latest commit 86cbd18 Sep 24, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Day01
Day02 upload Day02 README.md Dec 21, 2017
Day03
Day04 Update README.md Sep 24, 2018
Day05 typo Sep 24, 2018
Day06 Update README.md Dec 25, 2017
Day07
Day08 Update README.md Dec 26, 2017
Day09
Day10
Day11 update Day11 README.md Dec 30, 2017
Day12
Day13 Create README.md Sep 24, 2018
Day14 Create README.md Sep 24, 2018
Day15
Day16
Day17 Create README.md Sep 24, 2018
Day18
Day19
Day20 Create README.md Sep 24, 2018
Day21
Day22
Day23
Day24 Create README.md Sep 24, 2018
Day25 Create README.md Sep 24, 2018
Day26 Create README.md Sep 24, 2018
Day27
Day28 Create README.md Sep 24, 2018
Day29 Create README.md Sep 24, 2018
Day30
.gitignore
README.md Update README.md Sep 24, 2018

README.md

前言

第一次認識 Kubernetes(aka. k8s) ,約莫去年夏天時候的事。那時還在一家新創擔任後端工程師,在資源有限的情況下,每個人都須身兼多職,除了開會、討論產品、程式開發、有時還需拜訪客戶。而同時,系統維護以及產品更新也是我們一個需要顧及的課題,如何快速開發客戶的需求、如何確保系統的穩定、以及如何協助團隊之間合作更流暢等,可以說是忙得焦頭爛額。而 Kubernetes 給人最直接的感受是,相較於系統複雜的設定,只需要一名系統兼運維的工程師負責部署與維護、其他人就能更專注在開發上,即便像我們這樣『小』團隊、也是有能力面對複雜的系統設計,這並不是因為我們做了什麼,而是 Kubernetes 已經幫我們做了很多事情

未來 30 天的學習筆記

希望在未來 30 天裡,能每天不間斷的跟大家分享,不只帶大家認識 Kubernetes ,在最後幾天,也能使用 第三方套件Kops 帶著大家操作,在實際應用的環境中,架設 Kubernetes 與使用。這次的學習筆記可以分為以下幾個方向:

介紹與開發環境架設

Kubernetes基礎概念與實作

Kubernetes進階概念與實作

如何管理Kubernetes

所以,什麼是Kubernetes

Kubernetes
(圖片擷取自:kubernetes.io)

如果對於Docker, Container還不太熟悉的讀者,不妨先看過IThome的專欄 Container技術三部曲 ,也許會對什麼是container更加了解

Kubernetes 是一個協助我們自動化部署、擴張以及管理容器應用程式(containerized applications)的系統。相較於需要手動部署每個容器化應用程式(containers)到每台機器上,Kubernetes 可以幫我們做到以下幾件事情:

  • 同時部署多個 containers 到一台機器上,甚至多台機器。
  • 管理各個 container 的狀態。如果提供某個服務的 container 不小心 crash 了,Kubernetes 會偵測到並重啟這個 container,確保持續提供服務
  • 將一台機器上所有的 containers 轉移到另外一台機器上。
  • 提供機器高度擴張性。Kubernetes cluster 可以從一台機器,延展到多台機器共同運行。

為何使用Kubenetes

筆者過去曾參與過大型專案開發,上線產品、除錯、與測試功能都包在一起。每次發布新功能、修改代碼都非常膽戰心驚,哪怕是一個 bug 也會影響整個系統效能。而相較於這樣 單體架構(Monolithic Architecture) 的服務, 微服務(microservices)架構 大大減少程式複雜度,將每個服務依照各自業務需求獨立出來,以 Rest API 互相構通。而 microservices 概念的導入,改善了我們過去所面臨到的問題:

  • 將龐大的專案拆成幾個不同面向的小專案,當代碼夠小、容易理解、開發效率能被提高
  • 各個服務之間也可獨立部署,不因一個服務癱瘓而癱瘓整個系統
  • 各團隊可以依照自己的需求使用適合自己的語言、資料庫開發
  • 每個服務也可以依照自己的需求,選擇在不同機器上部署

然而,當系統中的微服務越來越多時,管理上也會面臨到很大的挑戰。Kubenetes 的出現讓我們管理這些微服務程式更加方便。

Kubernetes 的優點

  • 可以跑在任何地方 Can run anywhere
    Kubernetes 可以運行在任何地方:不論是私有雲、公有雲(像是 AWS, Google Cloud Platform )、或是混合雲。

  • 高度模組化 High modular
    每個服務都被切成一個 container ,不論是要做修改、擴張、甚至將服務遷移到另外一台機器,都可以快速被部署。

  • 活躍的社群 Open source & active community
    Kubernetes 是 開源的 ,受到社群的關注度也非常高。

  • Google的背書 Backed by Google
    最初版的 Kubernetes 是由 Google 內部 Borg team 的成員撰寫且現在仍在持續維護。Google 使用他們自身的系統 Borg 管理容器化應用長達十年多。Kubernetes 的目的即是將 Borg 最精華的部分取出來,使得開發者能夠更簡單、直接應用。

Q&A

筆者也還在學習Kubernetes中,如有對於文章有任何疑問或建議,也歡迎大家留言給我唷 : )

參考連結