Kubernetes!管理一切微服務的世界樹
Kubernetes!管理一切微服務的世界樹

Kubernetes!管理一切微服務的世界樹

Tags
Kubernetes
ithome 2020 ironman
Date
Sep 30, 2020
本文章同時發佈於:
文章為自己的經驗與夥伴整理的內容,設計沒有標準答案,如有可以改進的地方,請告訴我,我會盡我所能的修改,謝謝大家~

notion image
大家好,在前面 15 天講解完應用層相關的微服務後,現在終於要來介紹平台層
Kubernetes(K8s)即是這次主角,他到底跟 Docker 是什麼樣的關係?你的後端需要他嗎?
我會以一個工程師,從純Docker後端慢慢到發現需要K8s哪些好用的功能,來說明 K8s 解決的問題。

code 即是後端的架構

當後端容器越來越多,就會需要可以管理大量容器的方案
一開始使用 Docker 時,後端的容器不多,可以單純使用 docker-compose 即可解決多個容器互動的需求,但在容器越來越多時,會產生以下問題:
  • 容器的連接變得複雜
  • 容器的更新須寫腳本維護
  • 容器是否掛了難以監控
  • 容器如果流量需求增高,要自動增加容器來緩解流量
  • 容器降版/升版需要腳本來控制
關於這些問題,我曾經寫過腳本來維護,但當服務越來越大,腳本的需求就越來越多,需要非常多成本。而 K8s 提供了像以下config的 yaml 形式來控制以上問題,讓一切架構以config來設計並非自己造輪子寫腳本來維護
apiVersion: v1kind: Podmetadata: name: site labels: app: webspec: containers: - name: front-end image: nginx ports: - containerPort: 80

K8s 架構

notion image
K8s 會先啟動一個 Master node,底下會有許多的 Worker Node,而 Worker node 裡頭會有許多的容器,K8s 主要的目標就是管理這些容器。
K8s 主要就是把多台機器加以抽象,使他們就像一台大機器工你操作。
而 K8s 一開始的目標是管理容器,而不管理運行容器的 VM,不過後來有新增Cluster Autoscaler(CA)方案來管理 VM,但你使用的平台必須要有支援。

HPA、VPA、CA

K8s 有提供三種方法來管理容器對流量的需求
  • Horizontal Pod Autoscaler(HPA): 以增加容器的方式來提供流量需求
  • Vertical Pod Autoscaler(VPA): 以分配容器所需的 CPU/Memory 來提供流量需求
  • Cluster Autoscaler(CA): 已增加整個叢集來提供流量需求

參考