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 master3.zhang.org
10.0.0.104 node1 node1.zhang.org
10.0.0.105 node2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/917515.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/917515.shtml
英文地址,请注明出处:http://en.pswp.cn/news/917515.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

建造者模式及优化

建造者模式是一种创建型设计模式,它将复杂对象的构建过程与表示分离,使得同样的构建过程可以创建不同的表示。核心思想是指挥者定流程,建造者填细节,通过多个步骤逐步构建对象,并允许灵活组合这些步骤以生成不同配置的…

【09】C++实战篇——C++ 生成静态库.lib 及 C++调用lib,及实际项目中的使用技巧

文章目录1 C 静态库.lib 生成1.1 静态库lib的生成方法和使用方法1.2 创建静态库项目1.3 编写.h 和 .cpp文件1.4 设置 及 生成 DLL2 调用 C 静态库lib2.1 新建LIBtest及测试代码2.2 静态库配置 及代码调用测试3 实际项目中的使用技巧、及通用设置3.1 设置lib输出路径3.2 设置头文…

飞算JavaAI:从写不出代码到丝滑开发,飞算JavaAI把小白从编程深渊捞进了正轨---它都让我怀疑自己是不是多余的!

开篇介绍 对于很多初学者来说,编程是一项既有趣又充满挑战的任务。面对复杂的代码和繁琐的开发流程,常常会感到无从下手。不过,现在有了飞算JavaAI,这一切都将变得简单起来。 它有啥实用功能呢? 比如: …

关于tresos Studio(EB)的MCAL配置之GtmCfg

Generic Time Module通用时钟模块GeneralGtmCfg_DevErrorDetect开发者错误检测开关GtmCfg_DemErrorReporting诊断错误报告开关GtmCfg_VersionInfoApi获取版本信息的接口开关GtmCfg_ConfigSetClockManagementUnitGlobal_Clock_Control_Numerator全局时钟分频器的分子Global_Cloc…

深入探索Weaviate:构建高效AI应用的数据库解决方案

在当今数据驱动的世界中,高效地存储、检索和处理大规模数据成为了AI应用开发的关键挑战。Weaviate作为一个开源的向量搜索引擎,凭借其强大的功能和灵活的架构,正逐渐成为开发者构建智能AI应用的首选工具。本文将深入探讨Weaviate的核心概念、…

【开源】一款开源、跨平台的.NET WPF 通用权限开发框架 (ABP) ,功能全面、界面美观

文章目录一、开源地址二、框架介绍三、技术路线四、适用场景五、功能模块六、框架演示截图一、开源地址 Gihub地址: https://github.com/HenJigg/wpf-abp B站学习视频:https://www.bilibili.com/video/BV1nY411a7T8?spm_id_from333.788.player.switch&…

信创缓存中间件-TongRDS(Redis平替)安装

TongRDS 是由东方通开发的国产 分布式内存数据缓存中间件,功能类似于 Redis,但它是完全自主研发的国产产品,是国内信创的一大重要组件。它兼容 Redis 的接口,能做到应用代码无需改动即可替换使用。TongRDS是没有直接的下载地址的。…

Git链接备用手册

三板斧及其他:git init:初始化git仓库git add . :将所在文件夹中的所有文件加入到暂存区git commit -m 自定义记录信息 :将暂存区中的数据放到Git的仓库(本地)中,并进行记录(自定义&#xff0…

零信任网络概念及在网络安全中的应用

零信任网络概念及在网络安全中的应用 零信任网络(Zero Trust Network)是一种颠覆传统边界安全的架构理念,其核心是**“永不信任,始终验证”**(Never Trust, Always Verify)。它假设网络内外均存在威胁&…

GaussDB case when的用法

1 case函数的类型case具有两种格式&#xff0c;简单case函数和case搜索函数。这两种方式&#xff0c;大部分情况下可以实现相同的功能。1.1 简单case函数语法case column when <condition> then value when <condition> then value ...... else value end;示例case…

Git用法记录

代码中冲突标记的含义&#xff1a;<<<<<<< HEAD 标记当前分支&#xff08;或本地&#xff09;的旧代码作为分隔线 >>>>>>> [commit哈希] 标记从其他分支合并过来的新代码&#xff08;这里的 c472b4b... 是提交哈希&#xff09; 暂存…

解决Android Studio中创建的模拟器第二次无法启动的问题

Android Studio中创建的模拟器&#xff0c;首次启动时一切正常。但是关闭模拟器&#xff0c;下一次启动时一直显示&#xff1a;Connecting to the Emulator&#xff0c;无法启动。无法启动的原因通常是默认开启了模拟器的快速启动功能&#xff0c;首次启动时是“冷启动”&#…

Linux设备驱动架构相关文章

学习一个领域&#xff0c;最好是从多个角度去学习&#xff0c;总有一个角度适合你。学习Linux驱动&#xff0c;从架构的角度把握&#xff0c;比直接看代码更容易接受。以架构为主&#xff0c;结合细节学习&#xff0c;我称之为自上而下的学习方法&#xff0c;就一个字&#xff…

YOLOv13 汉化优化部署版本:超图增强自适应视觉感知的目标检测系统

目录 &#x1f4d6; 项目概述&#x1f680; YOLOv13 核心特性&#x1f4ca; 性能对比&#x1f5bc;️ 可视化效果&#x1f527; 项目优化改进⚙️ 快速部署指南▶️ 运行使用&#x1f4dd; 使用示例&#x1f527; 故障排除&#x1f31f; 项目特色&#x1f517; 相关链接&#…

uni-app webview的message监听不生效(uni.postmessage is not a function)

uni-app开发app web-view组件message事件不触发背景子页面是h5&#xff08;非uni-app版&#xff09;子页面是h5&#xff08;uni-app版&#xff09;背景 大致背景是 在uni-app开发的客户端app中使用web-view嵌入h5页面&#xff0c;在h5中通过postmessage API触发父组件web-view…

【异常案例分析】使用空指针调用函数(非虚函数)时,没有崩溃在函数调用处,而是崩在被调用函数内部

目录 1、问题说明 2、代码段地址与数据段地址 3、使用空指针调用BindWindow函数&#xff08;非虚函数&#xff09;&#xff0c;没有崩在BindWindow函数的调用处&#xff0c;而是崩在函数内部 3.1、虚函数调用的二次寻址 3.2、崩溃在被调用函数内部 4、总结 C软件异常排查…

锁定中科院1区TOP!融合LSTM与Attention做时间序列预测 !

Transformer虽火&#xff0c;但在数据少、要求稳的时序预测场景中&#xff0c;LSTM仍是首选。尤其加上注意力机制后&#xff0c;更是弥补了LSTM的短板&#xff0c;增强了性能&#xff0c;实现了更精确的预测。这种组合不仅应用场景广泛&#xff0c;工业界爱&#xff0c;学术界也…

在不可更改系统上构建数据响应机制的可选策略

在现代企业信息系统架构中&#xff0c;我们常常面临如下挑战&#xff1a;某个业务系统属于“不可变更系统”&#xff0c;我们既不能修改其业务逻辑&#xff0c;也不能对其核心代码做任何侵入式改动。但与此同时&#xff0c;我们又需要对该系统中的某些关键业务数据变更做出响应…

Docker 实战 -- cloudbeaver

文章目录前言文件目录docker-compose.yml网络连接前言 当你迷茫的时候&#xff0c;请点击 Docker 实战目录 快速查看前面的技术文章&#xff0c;相信你总能找到前行的方向 上一篇文章 Docker 实战 – Mysql 讲述了用 docker 搭建 mysql 数据库的过程, 连接数据库的工具很多, …

Rust × WebAssembly 项目脚手架详解

一、模板概览 模板生成方式核心用途典型角色wasm-pack-templatecargo generate …把 Rust 代码 打包成 npm 库「底层算法/组件」作者create-wasm-appnpm init wasm-app构建纯 JS/TS 项目&#xff0c;消费上面生成的 npm 包Web 前端/Node 服务rust-webpack-templatenpm init ru…