認識Kubernetes (學習隨筆)


參考來源

Kubernetes 30天學習筆記
Kubernetes Terminology

Kubernetes是什麼?

Kubernetes(又稱作K8S)是一個協助我們自動化部署、擴張以及管理容器應用程式(containerized applications)的開源服務。

kubernetes能做什麼?

它能協助開發者

  • 同時部署多個容器到一台機器或多台機器上
  • 方便調動資源,例如將一台機器上所有的服務轉移到另外一台機器上
  • 提供高度擴張性,Kubernete可以從一台機器,延展到多台機器共同運行
  • 管理各個容器的狀態,假設某個提供服務的容器crash,Kubernetes 會偵測到並重啟這個容器以確保服務穩定

從一張圖理解:Kubernetes的重要

單體應用 => 微服務 => 容器化技術 => 管理更多容器(彈性/擴張)

Kubernetes 的內部運作

  • iptables
    • Linux 上的防火牆(firewall)
    • 限制哪些連線可以連進來
    • 也會管理網路連線,決定收到的 request 交給哪個 Pod
  • Kubelet
    • 相當於 node agent
    • 管理該 Node 上的所有 pods 及與 master node 即時溝通
  • kube-proxy
    • 將目前該 Node 上所有 Pods 的資訊傳給 iptables
    • 讓 iptables 即時獲得在該 Node 上所有 Pod 的最新狀態
    • 當一個 Pod物件 被建立時,kube-proxy 會通知 iptables,確保該 Pod 可以被 Kubernetes Cluster 中的其他物件存取
  • Load balancing
    • 由 Load balancer 決定要將 request 給哪個 Node
    • load balancer由 Node 供應商提供
    • 或自己架設Nginx、HAProxy

當創建一個新的 Pod 後,收到使用者發送的 request 時,ks8 內部會發生什麼事呢?

  • 事前準備
    Master Node 要 kubelet 起一個 Pod,起好後,kube-proxy 會去 iptables 留下紙條說有這個 Pod 可以用
  • 有一個新的request
    request 先送到 load balancer,load balancer決定這個 request 要交給哪一個 Node;這時收到 request 的 Node 會經由 iptables 來決定要給哪一個 pod
  • 如果這個Node沒有對應可處裡request的Pod
    原本收到的Node會透過iptables把她轉給其他可以處裡的Node

內部的詳細運作

#Kubernetes Basic
這個系列想介紹一些容器化概念,透過實作與研究容器化的實際運用(CI/CD),日後自己能把這個技術發揮在適合的地方。






Related Posts

day_02: 我不會寫函式

day_02: 我不會寫函式

Day05 間接層 (indirection)

Day05 間接層 (indirection)

Hacktoberfest:一起踏入 open source 的世界吧!

Hacktoberfest:一起踏入 open source 的世界吧!



Comments