第一章 kubernetes 基礎
1.1、master 節點:整個集群的控制中樞
-
Kube-APIServer:集群的控制中樞,各個模塊之間信息交互都需要經過Kube-APIServer,同時它也是集群管理、資源配置、整個集群安全機制的入口。
-
Controller-Manager:集群的狀態管理器,保證Pod或其他資源達到期望值,也是需要和APIServer進行通信,在需要的時候創建、更新或刪除它所管理的資源。
-
Scheduler:集群的調度中心,它會根據指定的一系列條件,選擇一個或一批最佳的節點,然后部署我們的Pod。
-
Etcd:鍵值數據庫,報錯一些集群的信息,一般生產環境中建議部署三個以上節點(奇數個)。
1.2、node節點:工作節點
worker、node節點、minion節點
-
Kubelet:負責監聽節點上Pod的狀態,同時負責上報節點和節點上面Pod的狀態,負責與Master節點通信,並管理節點上面的Pod。
-
Kube-proxy:負責Pod之間的通信和負載均衡,將指定的流量分發到后端正確的機器上。
Ø 查看Kube-proxy工作模式:curl 127.0.0.1:10249/proxyMode
-
Ipvs:監聽Master節點增加和刪除service以及endpoint的消息,調用Netlink接口創建相應的IPVS規則。通過IPVS規則,將流量轉發至相應的Pod上。
-
Iptables:監聽Master節點增加和刪除service以及endpoint的消息,對於每一個Service,他都會場景一個iptables規則,將service的clusterIP代理到后端對應的Pod。
-
其他組件
- Calico:符合CNI標准的網絡插件,給每個Pod生成一個唯一的IP地址,並且把每個節點當做一個路由器。Cilium
-
CoreDNS:用於Kubernetes集群內部Service的解析,可以讓Pod把Service名稱解析成IP地址,然后通過Service的IP地址進行連接到對應的應用上。
-
Docker:容器引擎,負責對容器的管理。
1.3、Kubernetes工作原理圖總結:
一句話總結:
-
我們通過kubectl向k8s Master發出指令。kubernetes Master主要是提供API Server、Scheduler、Controller組件,接收kubectl的命令,
-
從Node節點獲取Node的資源信息,並發出調度任務。Node節點提供kubelet、kube-proxy,每個node節點都安裝docker,是實際的執行者。
-
kubernetes不負責網絡,所以一般是用Calico。etcd負責服務發現和node信息存儲。