k8s相关技术栈
文章目录
- 一、k8s技术栈
- 核心组件
- 常见工具和服务
- 生态系统
- 二、k8s服务组件
- 控制平面组件
- 节点组件
- 附加组件和服务
- 三、k8s 常见资源
- 核心资源
- 扩展资源
- 四、系列文档
- 其他参考
一、k8s技术栈
Kubernetes(常被简称为 K8s,其中 “K” 代表 “Kubernetes” 的首字母,“8” 代表两者之间的八个字母,“s” 代表 “system” 或 “services”)是一个开源的容器编排平台,用于自动化应用部署、扩展和管理。Kubernetes 技术栈包括了以下几个主要组件和技术:
核心组件
- API Server - 提供了集群内部的 RESTful API 接口,是集群控制面的核心网络服务。
- Controller Manager - 负责运行控制器,这些控制器处理各种控制循环工作,例如复制控制器来保持期望状态。
- Scheduler - 负责监视新创建的未调度的 Pod,并选择一个节点来运行它们。
- etcd - 存储集群所有数据的键值存储系统。
- Kubelet - 在每个节点上运行的一个代理,负责使 Pod 和容器在其主机上运行。
- Kube-proxy - 维护节点上的网络规则,实现 Kubernetes 服务(Service)概念。
- Container Runtime Interface (CRI) - 允许 Kubernetes 与容器运行时交互(如 Docker, containerd, CRI-O 等)。
常见工具和服务
- Helm - 一个用于 Kubernetes 的包管理器,它帮助定义、安装和升级复杂的应用程序。
- kubectl - Kubernetes 命令行工具,用来运行命令与集群进行交互。
- Docker - 最常用的容器运行时之一,用于构建、打包和运行容器。
- Prometheus & Grafana - 用于监控和可视化 Kubernetes 集群性能的工具。
- Fluentd/Fluent Bit - 日志收集工具,通常用于 Kubernetes 日志聚合。
- Istio - 服务网格平台,提供了一种透明的方式来连接、保护、控制和观察服务。
- Kubernetes Dashboard - Kubernetes 的 Web UI,为集群提供了基本的管理和故障排除功能。
- Kubernetes Ingress Controller - 实现负载均衡,暴露服务到外部流量。
- Kubernetes Service Mesh - 如 Istio 或 Linkerd,用于管理服务间通信。
生态系统
Kubernetes 拥有一个庞大的生态系统,其中包括了大量的插件、附加组件和服务,用于支持不同的工作负载和需求,比如存储、网络、安全等。
了解 Kubernetes 的技术栈对于有效地部署和管理容器化应用程序至关重要。随着 Kubernetes 社区的不断增长和发展,新的工具和技术也在不断涌现,以增强其功能和易用性。
二、k8s服务组件
Kubernetes(K8s)服务组件可以分为两大类:控制平面组件和节点组件。控制平面组件负责管理整个集群的状态,而节点组件则负责管理节点上的容器。下面详细列出了这两类组件以及一些常见的附加组件和服务。
控制平面组件
-
API Server
- 提供了集群的主要网络入口点。
- 所有对象的存储状态都通过此服务器访问。
- 实现了 Kubernetes 的 REST API。
-
Controller Manager
- 包含一组控制循环,每个循环负责同步一个特定方面的集群状态。
- 控制器的例子包括副本控制器、部署控制器、命名空间控制器等。
-
Scheduler
- 观察所有未分配给节点的新创建的 Pod。
- 选择合适的节点来运行 Pod。
- 如果没有合适的节点,则不会调度 Pod。
-
etcd
- 分布式键值存储,用于存储所有集群数据。
-
Cloud Controller Manager
- 对于云托管的集群,它负责与云提供商的交互。
- 管理诸如节点实例、负载均衡器等资源。
节点组件
-
Kubelet
- 每个节点上的代理,负责执行 Pod 和容器。
- 与 API 服务器通信,获取分配给该节点的 Pod。
- 监控 Pod 的状态,并向 API 服务器报告。
-
Kube-proxy
- 维护节点的网络规则。
- 使得 Pod 可以在集群内部通信,并且可以通过外部 IP 地址和端口访问。
-
Container Runtime
- 负责拉取和运行容器。
- 常见的容器运行时有 Docker、containerd 和 CRI-O。
附加组件和服务
除了核心组件之外,还有许多附加组件和服务,它们不是 Kubernetes 的一部分,但通常与 Kubernetes 一起使用来增强其功能或简化某些操作。以下是一些常见的附加组件和服务:
-
Ingress Controllers
- 实现外部访问集群内服务的规则。
- 通常与负载均衡器和反向代理一起使用。
- 示例包括 Nginx Ingress Controller、Traefik 等。
-
Service Mesh
- 如 Istio、Linkerd 或 Consul Connect。
- 提供服务间通信的安全性和可观察性。
-
Monitoring and Logging
- 监控工具如 Prometheus 和 Grafana。
- 日志收集工具如 Fluentd 或 Fluent Bit。
-
CI/CD Tools
- 如 Jenkins、GitLab CI/CD、Spinnaker 等,用于持续集成和持续交付。
-
Package Management
- Helm 是 Kubernetes 上的应用程序包管理器。
-
Storage Orchestration
- 如 Rook,用于管理存储基础设施。
-
Network Policies and Security
- Calico、Antrea 等用于网络策略实施。
- 网络隔离和安全工具,如 kube-router。
这些组件共同构成了 Kubernetes 的强大生态系统,允许用户以更高效、安全的方式部署、管理和扩展应用程序。
三、k8s 常见资源
在 Kubernetes 中,资源(Resources)是指可以被创建、更新、删除或查询的对象。这些资源由 Kubernetes API 定义,并通过 kubectl
命令行工具或其他客户端库进行交互。以下是 Kubernetes 中一些最常见的资源类型及其用途:
核心资源
-
Pods
- 最小的可部署单元。
- 包含一个或多个容器,共享存储和网络资源。
- 通常由更高级别的抽象来管理,如 Deployment 或 StatefulSet。
-
Services
- 定义逻辑上的“服务”,可以将流量路由到一组 Pods。
- 提供服务发现机制和负载均衡功能。
- 可以定义不同类型的 Services,如 ClusterIP、NodePort、LoadBalancer 等。
-
ReplicaSets
- 确保任何时刻都有指定数量的 Pod 副本正在运行。
- 通常不直接使用,而是通过 Deployment 来间接管理。
-
Deployments
- 提供声明式的更新机制,用于创建和管理 ReplicaSets。
- 用于自动滚动更新和回滚应用程序。
-
StatefulSets
- 为有状态应用程序提供管理,确保每个 Pod 有一个持久的身份和持久存储。
- 支持有序部署和优雅地缩放。
-
DaemonSets
- 确保所有(或某些)节点上运行一个 Pod 的副本。
- 通常用于运行集群范围的服务,如日志聚合或监控代理。
-
Jobs
- 运行批处理任务,直到成功完成指定的工作量。
- 可以跟踪任务是否成功完成。
-
CronJobs
- 创建基于时间的任务,类似于 Unix cron。
- 用于定期执行 Jobs。
-
ConfigMaps
- 用于存储非机密的数据,如配置文件。
- 可以作为环境变量或挂载卷中的文件注入到 Pods 中。
-
Secrets
- 用于存储敏感信息,如密码、OAuth 令牌或 SSH 密钥。
- 可以以加密的形式存储,并且可以像 ConfigMaps 一样注入到 Pods 中。
-
PersistentVolumes (PV)
- 存储资源的声明,由管理员创建并分配给集群。
- 可以被 PersistentVolumeClaims (PVC) 使用。
-
PersistentVolumeClaims (PVC)
- 用户对存储资源的需求声明。
- 可以绑定到一个 PV,为应用提供持久化的存储。
-
Ingress
- 定义外部访问 Kubernetes 服务的规则,如 HTTP。
- 通常与 Ingress Controller 一起使用,以实现外部负载均衡。
-
Namespace
- 提供一种方法来划分集群资源。
- 有助于组织和限制资源使用。
扩展资源
除了上述核心资源外,还有一些扩展资源,通常是通过安装额外的控制器或 Operator 来添加的,例如:
-
NetworkPolicy
- 控制 Pod 间的网络访问。
- 用于实现细粒度的网络隔离。
-
HorizontalPodAutoscaler (HPA)
- 自动调整 Pod 的副本数,基于 CPU 使用率或其他自定义指标。
-
PriorityClass
- 为 Pod 分配优先级,影响调度决策。
-
PodDisruptionBudget (PDB)
- 控制因维护等原因导致的 Pod 下线的最大数量。
-
CertificateSigningRequest (CSR)
- 请求证书签名,用于启用 TLS 加密。
-
CustomResourceDefinitions (CRDs)
- 允许定义自定义资源类型,扩展 Kubernetes API。
-
CronJob
- 用于计划执行批处理任务。
这些资源共同构成了 Kubernetes 的基础架构,使得用户能够以声明式的方式管理复杂的分布式系统。通过组合这些资源,可以创建出满足各种业务需求的应用程序部署方案。
四、系列文档
// TODO 后续会有相关学习文档补充
其他参考
kubernetes官网地址
kubernetes文档地址
kubernetes中文社区
[kubernetes中文文档]((http://docs.kubernetes.org.cn/)
相关文章:
k8s相关技术栈
文章目录 一、k8s技术栈核心组件常见工具和服务生态系统 二、k8s服务组件控制平面组件节点组件附加组件和服务 三、k8s 常见资源核心资源扩展资源 四、系列文档其他参考 一、k8s技术栈 Kubernetes(常被简称为 K8s,其中 “K” 代表 “Kubernetes” 的首字…...
uniapp h5项目页面中使用了iframe导致浏览器返回按键无法使用, 返回不了上一页.
uniapp h5项目页面中使用了iframe导致浏览器返回按键无法使用, 返回不了上一页. 在 UniApp 中使用 iframe 加载外部页面时,可能会遇到返回键行为不符合预期的问题。这是因为 iframe 本身可以包含多个页面的历史记录,而默认情况下,浏览器的返…...

《2024网络安全十大创新方向》
网络安全是创新驱动型产业,技术创新可以有效应对新的网络安全挑战;或是通过技术创新降低人力成本投入,提升企业运营效率。为推动行业技术创新、产品创新与应用创新,数说安全发布《2024年中国网络安全十大创新方向》,涵…...

深入解析反射型 XSS 与存储型 XSS:原理、危害与防范
在网络安全领域,跨站脚本攻击(XSS)是一种常见的安全漏洞。XSS 攻击可以分为反射型 XSS 和存储型 XSS 两种类型。本文将详细介绍这两种类型的 XSS 攻击的原理、危害和防范措施。 一、反射型 XSS 1、原理 反射型 XSS 攻击也称为非持久性 XSS …...

【STM32+HAL库】---- 驱动MAX30102心率血氧传感器
硬件开发板:STM32F407VET6 软件平台:cubemaxkeilVScode1 MAX30102心率血氧传感器工作原理 MAX30102传感器是一种集成了红外光源、光电检测器和信号处理电路的高度集成传感器,主要用于心率和血氧饱和度的测量。以下是MAX30102传感器的主要特点…...

InstantX团队新作!基于端到端训练的风格转换模型CSGO
由InstantX团队、南京理工大学、北京航空航天大学以及北京大学联合提出了一种基于端到端训练的风格转换模型 CSGO,它采用独立的特征注入明确地解耦内容和风格特征。统一的 CSGO 实现了图像驱动的风格转换、文本驱动的风格化合成和文本编辑驱动的风格化合成。大量实验…...

Nginx安全性配置
文章目录 引言I Nginx简单的安全性配置禁止特定的HTTP方法限制URL长度禁止某些用户代理限制请求速率连接限制禁止访问某些文件类型II 常见的安全规则防御CC攻击User-Agent过滤GET-URL过滤GET-参数过滤POST过滤(sql注入、xss攻击 )引言 Nginx本身并不具备复杂的防火墙规则定制…...

k8s单master多node环境搭建-k8s版本低于1.24,容器运行时为docker
k8s 1.20.6单master多node环境搭建 1.环境规划2.初始化服务器1)配置主机名2)设置IP为静态IP3)关闭selinux4)配置主机hosts文件5)配置三台主机之间免密登录6)关闭交换分区swap,提升性能7…...

taro ui 小程序at-calendar日历组件自定义样式+选择范围日历崩溃处理
taro ui 日历文档 目录 单选标记时间: 效果: template: data: methods: 日历--范围选择: 效果: template: data: methods: 日历--间隔多选:利用标…...

ARM发布新一代高性能处理器N3
简介 就在2月21日,ARM发布了新一代面向服务器的高性能处理器N3和V3,N系列平衡性能和功耗,而V系列则注重更高的性能。此次发布的N3,单个die最高32核(并加入到CCS,Compute Subsystems,包含Core&a…...

基于Pytorch框架的深度学习U2Net网络天空语义精细分割系统源码
第一步:准备数据 头发分割数据,总共有10276张图片,里面的像素值为0和1,所以看起来全部是黑的,不影响使用 第二步:搭建模型 级联模式 通常多个类似U-Net按顺序堆叠,以建立级联模型,…...

50ETF期权和股指期权有什么区别?ETF期权应该怎么做?
今天期权懂带你了解50ETF期权和股指期权有什么区别?ETF期权应该怎么做?ETF是对个股期权,股指期权是对应该股指期货的,那么股指期权和etf期权有什么区别? 股指期权怎么交易 股指期权交易要开通股指期货账户࿰…...

JS设计模式之“神奇的魔术师” - 简单工厂模式
引言 在JavaScript开发中,我们经常需要创建和管理各种对象,而简单工厂模式就是一种最简单的用来创建对象的设计模式。 简单工厂模式通过一个工厂类来创建相似的对象,而无需直接使用具体类来实例化对象。这样可以将对象的创建过程与使用过程…...

【河北航空-注册安全分析报告-无验证方式导致安全隐患】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…...
亚信安慧AntDB-T数据库内核之MVCC机制
本文主要介绍AntDB数据库内核中的一个很重要的机制——MVCC机制。 MVCC简介 MVCC(多版本并发控制)是AntDB数据库中实现事务隔离级别的一种机制。它允许多个事务同时对数据进行读写和修改操作,而不会相互干扰。在MVCC中,每个数据…...

【python】socket 入门以及多线程tcp链接
Socket 入门 及 多线程tcp链接 网络基础知识三要素 Socket是套接字的意思,是网络编程的核心对象,通信两端都独有自己的Socket对象, 数据在两个Socket之间通过 字节流(TCP协议) 或者 数据报包(UDP协议)的形式进行传输. 本文主要针对tcp流程进行讲解 socket-tcp流程图 1.创建服…...
【ZYNQ MPSoC开发】lwIP TCP发送用于数据缓存的软件FIFO设计
设计背景 任务是在ZYNQ的PS上使用裸机运行lwIP协议栈使用TCP把PL端通过AXI DMA传来的将近100K采样率的ADC数据发送出去,但由于数据带宽很大,有853.3mbps,所以在每一次AXI DMA简单传输结束后,lwIP未必有足够的发送buffer立即把数据…...
【TVM 教程】在 Relay 中使用外部库
Apache TVM 是一个端到端的深度学习编译框架,适用于 CPU、GPU 和各种机器学习加速芯片。更多 TVM 中文文档可访问 → https://tvm.hyper.ai/ 作者:Masahiro Masuda,Truman Tian 本文介绍如何将 cuDNN 或 cuBLAS 等外部库与 Relay 一起使用。…...
2024最新大厂面试:汇川嵌入式面试题及参考答案
目录 结合汇川业务,谈谈你对嵌入式开发的理解。 你使用过哪些芯片?请介绍它们的架构,例如 CORTEX-M3。 请描述项目的软件架构及其难点。 请介绍 SPI 的驱动和时序,包括 CS 拉低后到 CLK 第一个跳变沿的时间。同时,也请简要介绍数据链路层的相关知识。 栈溢出的原理是…...
tcp 流量控制
TCP流量控制是TCP/IP协议中用于控制发送方和接收方之间数据传输速率的一种机制,以防止网络拥塞和确保网络资源的有效利用。流量控制主要通过调整TCP窗口大小来实现,确保发送方不会发送超出接收方处理能力的数据量。以下是TCP流量控制的关键概念和工作原理…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...

前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...