在一個 kubernetes 群集中,包含兩類節點:master 節點及 worker 節點。
master 節點 的作用為控制整個 kubernetes 群集,對於工作負載 (workload) 的需求進行容器調度。
worker 節點 則作為工作負載的執行環境,實際運行工作負載中的 pod 單元。
關於 kubernetes 的基本慨念先簡單帶到這邊。於本地部署時,需知道要部署是何種節點。更詳細的 kubernetes 說明,請參考 https://kubernetes.io/docs/home/。
部署 kubernetes 群集使用 kubeadm。
以 traefik 作為 Ingress Controller,以實現負載平衡及服務感知,並透過 DaemonSet 對外暴露服務 (node IP + host Port)。
此時雖然每個 DaemonSet 的節點 ip,均可作為對外服務的 ip,但每個 ip 均會有單點失敗問題,該節點若失效,則該 ip 會變為不可用。
透過 keepalived 提供 vip 作為對外服務的 ip,即可解決此問題。
之後將實際進行部署操作,於 kubernetes 群集及 worker 節點上進行 traefik 及 keepalived 的設定及部署。
參考 https://kubernetes.io/docs/concepts/storage/volumes/#types-of-volumes。
若是想進行多節點的本地部署,就不能使用 hostPath 及雲端平台所提供的服務。
若是考量高可用,需排除單點失敗,就需選擇分散式儲存系統,比如 glusterfs 及 ceph。
之後將實際進行部署操作,部署 ceph 群集作為 kubernetes 群集的持久化儲存機制。
使用 kubeadm 部署 kubernetes 節點並不算困難;只要不考慮 master 節點是單節點問題的話。
預設的 kubeadm 只能部署單一 master 節點。若需要保持 kubernetes 的高可用性,將會需要對 master 節點的實際組成元件有更完整的認識,以部署高可用 master 節點。
這部分將參考 Creating Highly Available clusters with kubeadm,實際進行部署操作,以實現 kubernetes master 節點的高可用性。