Kubernetes架构和部署

发布于:2025-08-02 ⋅ 阅读:(14) ⋅ 点赞:(0)

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) 架构相关知识,可总结核心要点

  1. 节点分类:K8s 集群分管理平面 Master 节点和 worker 节点 ,分工协作保障集群运行。
  2. Master 组件
    • api - server:作为集群入口,提供 RESTful API,实现各组件通信、资源操作及权限管控 。
    • scheduler:负责 Pod(容器组)调度,依据资源需求、节点状态等选合适节点部署 Pod 。
    • controller - manager:包含各类控制器,如 Deployment 控制器保障副本数,节点控制器管理节点状态,维持集群期望状态 。
    • etcd:分布式键值存储,存集群关键配置、状态等数据,是集群 “大脑记忆”,需高可用部署 。
  3. worker 节点组件
    • kubelet:运行在 worker 节点,管控容器生命周期,接收 api - server 指令,确保 Pod 内容器正常运行,还与容器运行时交互 。
    • 容器运行时:支持 docker、containerd、cri - o 等,负责容器创建、运行、销毁,是容器运行基础环境 。
    • kube - proxy:实现集群网络代理与负载均衡,处理 Service 网络流量转发,可通过模式(如 iptables、IPVS )配置,让 Pod 间、内外网访问 Service 更高效,“可选” 指部署等有灵活调整空间 。

一、附件(Add-ons)

二、网络(Networking)

K8s 集群网络分不同层次,保障容器、服务间通信,涵盖:

  1. 为集群提供额外功能,辅助集群管理、增强使用体验,包含:

  2. 网络附件:是实现容器网络互联互通的关键组件,有多种方案可选,适配不同网络需求,比如:
    • CNI:容器网络接口标准,定义容器网络配置规范,让不同网络插件能接入 K8s 。
    • flannel:简单易用的 Overlay 网络方案,为集群 Pod 分配子网,实现跨节点通信 。
    • calico:基于 BGP 等技术,支持大规模网络场景,提供丰富网络策略 如访问控制。
    • Cilium:借助 eBPF 技术,在网络性能、安全策略(如 L7 层策略)实现上更高效、灵活 。
  3. dns:为集群内服务、Pod 提供域名解析,让应用可通过域名(而非 IP )访问,简化服务发现,像 CoreDNS 是常用 K8s DNS 组件 。
  4. ingress:管理集群对外 HTTP/HTTPS 流量接入,通过规则配置(如路径、域名路由),将外部请求转发到内部服务,实现统一入口和流量调度 。
  5. dashboard:可视化 Web 界面,方便用户查看集群资源状态(如 Pod 、节点信息)、进行简单操作(如部署应用),辅助集群管理 。
  6. 节点网络:集群节点(物理 / 虚拟机)自身的网络,是容器网络、服务网络基础,负责节点间数据传输 。
  7. service 网络:为 Service 分配虚拟 IP ,实现服务暴露与负载均衡,有不同实现方式:
    • kube - proxy:K8s 原生组件,通过 iptables、IPVS 等模式,转发 Service 流量到后端 Pod 。
    • cilium:除网络附件功能外,也可参与 service 网络流量处理,结合 eBPF 优化转发 。
  8. 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核以上
操作系统: 最小化安装支持KubernetesLinux系统
唯一的主机名,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

网站公告

今日签到

点亮在社区的每一天
去签到