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 |