k8s組件
master節點:管理節點 管理平面組件
api server : api gateway
controller manager
scheduler
etcd 數據庫
worker節點:被管理節點,運行容器
kubelet:k8s agent
container runtime:docker,containerd,cri-o
kube-proxy:service 網絡
?????????? ?? ?????????
正式開始,前言總結
Kubernetes架構和部署
Kubernetes(K8s) 架構相關知識,可總結核心要點
- 節點分類:K8s 集群分管理平面 Master 節點和 worker 節點 ,分工協作保障集群運行。
- Master 組件
- api - server:作為集群入口,提供 RESTful API,實現各組件通信、資源操作及權限管控 。
- scheduler:負責 Pod(容器組)調度,依據資源需求、節點狀態等選合適節點部署 Pod 。
- controller - manager:包含各類控制器,如 Deployment 控制器保障副本數,節點控制器管理節點狀態,維持集群期望狀態 。
- etcd:分布式鍵值存儲,存集群關鍵配置、狀態等數據,是集群 “大腦記憶”,需高可用部署 。
- worker 節點組件
- kubelet:運行在 worker 節點,管控容器生命周期,接收 api - server 指令,確保 Pod 內容器正常運行,還與容器運行時交互 。
- 容器運行時:支持 docker、containerd、cri - o 等,負責容器創建、運行、銷毀,是容器運行基礎環境 。
- kube - proxy:實現集群網絡代理與負載均衡,處理 Service 網絡流量轉發,可通過模式(如 iptables、IPVS )配置,讓 Pod 間、內外網訪問 Service 更高效,“可選” 指部署等有靈活調整空間 。
一、附件(Add-ons)
二、網絡(Networking)
K8s 集群網絡分不同層次,保障容器、服務間通信,涵蓋:
-
為集群提供額外功能,輔助集群管理、增強使用體驗,包含:
- 網絡附件:是實現容器網絡互聯互通的關鍵組件,有多種方案可選,適配不同網絡需求,比如:
- CNI:容器網絡接口標準,定義容器網絡配置規范,讓不同網絡插件能接入 K8s 。
- flannel:簡單易用的 Overlay 網絡方案,為集群 Pod 分配子網,實現跨節點通信 。
- calico:基于 BGP 等技術,支持大規模網絡場景,提供豐富網絡策略 如訪問控制。
- Cilium:借助 eBPF 技術,在網絡性能、安全策略(如 L7 層策略)實現上更高效、靈活 。
- dns:為集群內服務、Pod 提供域名解析,讓應用可通過域名(而非 IP )訪問,簡化服務發現,像 CoreDNS 是常用 K8s DNS 組件 。
- ingress:管理集群對外 HTTP/HTTPS 流量接入,通過規則配置(如路徑、域名路由),將外部請求轉發到內部服務,實現統一入口和流量調度 。
- dashboard:可視化 Web 界面,方便用戶查看集群資源狀態(如 Pod 、節點信息)、進行簡單操作(如部署應用),輔助集群管理 。
- 節點網絡:集群節點(物理 / 虛擬機)自身的網絡,是容器網絡、服務網絡基礎,負責節點間數據傳輸 。
- service 網絡:為 Service 分配虛擬 IP ,實現服務暴露與負載均衡,有不同實現方式:
- kube - proxy:K8s 原生組件,通過 iptables、IPVS 等模式,轉發 Service 流量到后端 Pod 。
- cilium:除網絡附件功能外,也可參與 service 網絡流量處理,結合 eBPF 優化轉發 。
- Pod 網絡:Pod 間通信的網絡,依賴 CNI 插件實現,常用插件:
- flannel:為 Pod 構建 Overlay 網絡,簡化跨節點 Pod 通信 。
- Cilium:利用 eBPF 提升 Pod 網絡性能、擴展安全策略 。
- calico:支持大規模 Pod 網絡,提供精細網絡策略管控 。
注:cilium插件可以替換kube-proxy 比較強大
三、總結大圖
四、安裝k8s 基于kubeadm和docker
Kubernetes 是一個分布式系統 , 是由很多主機節點組成 , 且各個節點的分工不同
Master 節點 : 管理( 控制 ) 節點 , 相當于公司的管理層
Master 節點主要由 API Server 、Controller-Manager 和Scheduler 三個組件,以及一個用于存儲集群狀態的 Etcd 存儲服務組成。
Node 節點 : 也稱為工作worker 節點或者 Minion 節點 , 相當于公司具體完成工作的基層員工
Node 節點則主要包含 Kubelet 、Kube Proxy 及容器運行時( 當前docker 仍是最為常用的實現) 三個組件,它們承載運行各類應用容器。
Kubernetes 組件: https://kubernetes.io/zh/docs/concepts/overview/components/
kubernetes 組件分成三種
Control Plane Components 控制平臺組件
Node Components 節點組件
Addons 附件(插件)

k8s在1.24版本之后,不在默認支持docker
部署環境主機情況,注意: Master節點內存至少2G以上,否則在初始化時會出錯
流程說明
每個節點主機的初始環境準備
準備代理服務 , 以便訪問 k8s.gcr.io ,或根據部署過程提示的方法獲取相應的 I 國內鏡像的 image (可
選)
Kubernetes 集群 API 訪問入口的高可用和 harbor (可選)
在所有 Master 和 Node 節點都安裝容器運行時 Docker
在所有節點安裝和配置 cri-dockerd(kubernetes-v1.24 版本以后需要 )
在所有 Master 和 Node 節點都安裝 kubeadm 、 kubelet 、 kubectl( 集群管理工具 , 在 node 節點可
不安裝 )
在第一個 master 節點運行 kubeadm init 初始化命令 , 并驗證 master 節點狀態
在第一個 master 節點安裝配置 CNI 規范的網絡插件 flannel,calico 等
在其它 master 節點運行 kubeadm join 命令加入到控制平面集群中實現高可用 ( 測試環境可選 )
在所有 node 節點使用 kubeadm join 命令加入集群 , 并驗證 node 節點狀態
創建 pod 并啟動容器測試訪問 ,并測試網絡通信
初始環境準備
硬件準備環境: 每個主機至少2G以上內存,CPU2核以上
操作系統: 最小化安裝支持Kubernetes的Linux系統
唯一的主機名,MAC地址以及product_uuid和主機名解析
保證各個節點網絡配置正確,并且保證通信正常
禁用 swap
禁用 SELinux
放行Kubernetes使用到的相關端口或禁用firewalld/iptables
配置正確的時區和時間同步
內核參數優化
所有節點實現基于 ssh key 驗證(可選)
#DMI ( Desktop Management Interface )是一種由 Intel 制定的系統管理的硬件標準 , 定義了一組在
計算機系統中獲取有關硬件和系統配置的方法
# 查看 product_uuid
[root@ubuntu2204 ~] #cat /sys/class/dmi/id/product_uuid
# 按照前面規劃配置唯一的主機名(可選)
[root@ubuntu2204 ~] #hostnamectl set-hostname master1.zhang.org
# 注意 ; 網卡配置中不要加 search 指令
[root@ubuntu2204 ~] #cat /etc/netplan/01-netcfg.yaml
實現基于 ssh key 驗證 ( 可選 )
在10.0.0.101上實現到10.0.0.102--10.0.0.109 所有主機的 ssh key 驗證,方便后續管理
主機名并實現主機名解析(略)linux里面在/etc/hosts 里面進行修改
在 VMware 的宿主機Windows 上添加 hosts 解析(略)
IP 地址 | 標識名稱 | 主機名 |
---|---|---|
10.0.0.100 | kubeapi | kubeapi.zhang.org |
10.0.0.101 | master1 | master1.zhang.org |
10.0.0.102 | master2 | master2.zhang.org |
10.0.0.103 | master3 | master3.zhang.org |
10.0.0.104 | node1 | node1.zhang.org |
10.0.0.105 | node2 |