K8s:概念、特点、核心组件与简单应用

news2025/5/12 18:52:52

一、引言

在当今云计算和容器技术蓬勃发展的时代,Kubernetes(简称 K8s)已成为容器编排领域的事实标准。它为管理容器化应用提供了高效、可靠的解决方案,极大地简化了应用的部署、扩展和运维过程。无论是小型初创公司还是大型企业,都在积极采用 K8s 来提升自身的技术竞争力。本文将深入探讨 K8s 的相关概念、特点、核心组件,并通过简单的应用示例展示其强大功能。

二、K8s 概念

K8s 是一个开源的容器编排引擎,用于自动化部署、扩展和管理容器化应用程序。它旨在让部署容器化应用变得简单且高效,为应用的全生命周期提供了一套完整的管理机制。传统的应用部署方式,无论是通过插件还是脚本安装,应用的运行、配置、管理等所有生命周期环节都与当前操作系统紧密绑定,这给应用的升级、更新和回滚等操作带来了极大不便。即便使用虚拟机方式,其资源开销大、可移植性差的缺点也十分明显。而容器技术的出现改变了这一局面,每个容器相互隔离,拥有独立的文件系统,进程间互不影响且能清晰区分计算资源。容器部署速度快,与底层设施和文件系统解耦,可轻松在不同云环境和操作系统版本间迁移。K8s 正是基于容器技术,进一步实现了对容器化应用的集中化、智能化管理。

三、K8s 特点

  1. 可移植性:K8s 支持公有云、私有云、混合云以及多重云环境,企业可以根据自身需求灵活选择部署方式,不受特定云平台的限制,轻松实现跨云架构,大大提升了应用的可移植性和灵活性。
  1. 可扩展性:具备模块化、插件化、可挂载和可组合的特性。用户可以根据实际业务需求,方便地添加或修改功能模块,灵活扩展集群的功能和规模,以适应不断变化的业务场景。
  1. 自动化:能够实现自动部署、自动重启、自动复制和自动伸缩 / 扩展。例如,当应用负载增加时,K8s 可以自动增加容器实例数量来应对流量高峰;当某个容器出现故障时,能自动重启该容器,确保应用的持续可用性,极大地减轻了运维人员的工作负担。

四、K8s 核心组件

4.1 Master 组件

Master 组件构成了集群的管理控制中心,通常在一台虚拟机或物理机上启动所有 Master 组件,且不在此机器上运行用户容器。

  1. kube - apiserver:用于暴露 Kubernetes API,所有对资源的请求和调用操作都通过它提供的接口进行,是集群内外交互的关键入口。
  1. ETCD:作为 Kubernetes 默认的存储系统,保存着所有集群数据。使用时需要为其制定数据备份计划,以保障数据的安全性和完整性。
  1. kube - controller - manager:运行管理控制器,这些控制器是处理集群常规任务的后台线程。逻辑上每个控制器是独立进程,但为降低复杂性,被编译成单个二进制文件在同一进程中运行。其包含的控制器有节点控制器、副本控制器(负责维护系统中每个副本的 pod)、端点控制器(连接 Services 和 Pods)、ServiceAccount 和 Token 控制器(为新的 Namespace 创建默认帐户访问 API Token)等。
  1. cloud - controller - manager:负责与底层云提供商的平台交互,在 Kubernetes 1.6 版本中引入,目前部分功能处于 Alpha 阶段。它仅运行云提供商特定的控制器循环,通过设置 --cloud - provider flag 为 external 启动 kube - controller - manager 可禁用相关控制器循环,具体功能包括节点控制器、路由控制器、Service 控制器和卷控制器。
  1. kube - scheduler:负责监视新创建且未分配到 Node 的 Pod,依据一定的调度算法为 Pod 选择合适的 Node 节点,确保资源的合理分配和高效利用。
  1. 插件 addons:用于实现集群 pod 和 Services 的特定功能,相关插件对象在 kube - system Namespace 中创建。例如,DNS 插件为 Kubernetes services 提供 DNS 记录,由 Kubernetes 启动的容器会自动将其包含在 DNS searches 中;kube - ui 提供集群状态基础信息查看;容器资源监测提供 UI 用于浏览监控数据;Cluster - level Logging 负责保存容器日志以及支持搜索和查看日志。

4.2 节点(Node)组件

节点组件运行在每个 Node 节点上,为 Kubernetes 提供运行时环境并维护 Pod。

  1. kubelet:作为主要的节点代理,监视分配给节点的 pod。具体功能包括安装 Pod 所需的 volume、下载 Pod 的 Secrets、运行 Pod 中的 docker(或 rkt)容器、定期执行容器健康检查、将 Pod 状态反馈给系统(必要时创建镜像 Pod)以及将节点状态反馈给系统。
  1. kube - proxy:通过在主机上维护网络规则并执行连接转发,实现 Kubernetes 服务抽象,保障服务的网络可达性和负载均衡。
  1. docker:用于运行容器,是常见的容器运行时工具,在 K8s 环境中广泛应用。
  1. RKT:作为 docker 工具的替代方案,也可用于运行容器,为用户提供了更多选择。
  1. supervisord:一个轻量级的监控系统,用于保障 kubelet 和 docker 的稳定运行,确保节点组件的正常工作状态。
  1. fluentd:是一个守护进程,提供 cluster - level logging 功能,负责收集和管理容器日志,方便进行日志分析和故障排查。

五、K8s 简单应用

5.1 应用场景

以一个简单的 Web 应用为例,假设我们开发了一个基于 Python Flask 框架的 Web 应用,希望将其部署到 K8s 集群中。通过 K8s,我们可以轻松实现应用的多实例部署,以应对不同的访问流量。同时,利用 K8s 的负载均衡功能,将用户请求均匀分配到各个实例上,保证应用的高可用性和性能。此外,在应用需要升级或修改配置时,K8s 能够实现自动化的发布和回滚操作,降低运维风险。

5.2 部署流程

  1. 创建 Docker 镜像:首先编写应用的 Dockerfile,以 Python Flask 应用为例,内容可能如下:
FROM python:3.9 - slim

WORKDIR /app

COPY requirements.txt.
RUN pip install -r requirements.txt

COPY..

EXPOSE 5000

CMD ["python", "app.py"]

然后使用docker build命令构建 Docker 镜像,并可以选择将其推送到公共或私有镜像仓库。

2. 编写 K8s 部署文件(Deployment):创建一个 YAML 文件,例如app - deployment.yaml,内容如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app - deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my - app
  template:
    metadata:
      labels:
        app: my - app
    spec:
      containers:
      - name: my - app
        image: your - image - repository/your - image - name:latest
        ports:
        - containerPort: 5000

这个部署文件定义了要创建 3 个副本的 Pod,每个 Pod 运行指定的 Docker 镜像,并暴露 5000 端口。

3. 编写 K8s 服务文件(Service):再创建一个app - service.yaml文件,用于定义服务:

apiVersion: v1
kind: Service
metadata:
  name: app - service
spec:
  selector:
    app: my - app
  ports:
  - protocol: TCP
    port: 80
    targetPort: 5000
  type: LoadBalancer

该服务文件将集群外部的 80 端口映射到 Pod 的 5000 端口,并使用 LoadBalancer 类型,以便外部能够访问应用。

4. 部署到 K8s 集群:使用kubectl命令行工具,依次执行以下命令:

kubectl apply -f app - deployment.yaml
kubectl apply -f app - service.yaml

通过这些命令,K8s 会根据我们定义的部署和服务文件,自动创建相应的 Pod 和服务,完成应用的部署。

六、总结

Kubernetes 凭借其强大的功能和丰富的特性,在容器编排领域占据了重要地位。通过本文对 K8s 概念、特点、核心组件的介绍,以及简单应用示例的展示,相信读者对 K8s 有了更深入的理解。无论是在提升应用的部署效率、保障应用的高可用性,还是在适应复杂多变的业务场景方面,K8s 都展现出了巨大的优势。在实际应用中,开发者和运维人员可以根据具体需求,灵活运用 K8s 的各项功能,构建高效、可靠的应用系统。随着技术的不断发展,K8s 的生态系统也在持续完善,未来必将为更多企业和开发者带来更大的价值。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32的定时器输出PWM时,死区时间(DTR)如何计算

在 STM32F429(以及所有 STM32F4 “高级定时器”)中,死区时间由 TIMx_BDTR 寄存器的 8 位 “Dead‑Time Generator” 字段 DTG[7:0] 来配置。其计算分三步: 计算死区时钟周期 tDTS TIM1 时钟源为 APB2 定时器时钟(PCL…

STC32G12K128单片机GPIO模式SPI操作NorFlash并实现FatFS文件系统

STC32G12K128单片机GPIO模式SPI操作NorFlash并实现FatFS文件系统 NorFlash简介NorFlash操作驱动代码文件系统测试代码 NorFlash简介 NOR Flash是一种类型的非易失性存储器,它允许在不移除电源的情况下保留数据。NOR Flash的名字来源于其内部结构中使用的NOR逻辑门。…

ClickHouse 设计与细节

1. 引言 ClickHouse 是一款备受欢迎的开源列式在线分析处理 (OLAP) 数据库管理系统,专为在海量数据集上实现高性能实时分析而设计,并具备极高的数据摄取速率 1。其在各种行业中得到了广泛应用,包括众多知名企业,例如超过半数的财…

智能体MCP 实现数据可视化分析

参考: 在线体验 https://www.doubao.com/chat/ 下载安装离线体验 WPS软件上的表格分析 云上创建 阿里mcp:https://developer.aliyun.com/article/1661198 (搜索加可视化) 案例 用cline 或者cherry studio实现 mcp server:excel-mcp-server、quickchart-mcp-server

再看开源多模态RAG的视觉文档(OCR-Free)检索增强生成方案-VDocRAG

前期几个工作提到,基于OCR的文档解析RAG的方式进行知识库问答,受限文档结构复杂多样,各个环节的解析泛化能力较差,无法完美的对文档进行解析。因此出现了一些基于多模态大模型的RAG方案。如下: 【RAG&多模态】多模…

深入浅出 NVIDIA CUDA 架构与并行计算技术

🐇明明跟你说过:个人主页 🏅个人专栏:《深度探秘:AI界的007》 🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、CUDA为何重要:并行计算的时代 2、NVIDIA在…

FPGA系列之DDS信号发生器设计(DE2-115开发板)

一、IP核 IP(Intellectual Property)原指知识产权、著作权等,在IC设计领域通常被理解为实现某种功能的设计。IP模块则是完成某种比较复杂算法或功能(如FIR滤波器、FFT、SDRAM控制器、PCIe接口、CPU核等)并且参数可修改的电路模块&#xff0c…

【Dv3Admin】从零搭建Git项目安装·配置·初始化

项目采用 Django 与 Vue3 技术栈构建,具备强大的后端扩展能力与现代前端交互体验。完整实现了权限管理、任务队列、WebSocket 通信、系统配置等功能,适用于构建中后台管理系统与多租户平台。 本文章内容涵盖环境搭建、虚拟环境配置、前后端部署、项目结…

P3416-图论-法1.BFS / 法2.Floyd

这道题虽然标签有floyd但是直接bfs也能过 其实事实证明还是bfs快,因为bfs只需要遍历特定的点,但是floyd需要考虑遍历所有可能的中介点 法1.BFS 用字典存储每个点所能普及的范围,然后用对每个点bfs进行拓展 nint(input())temp[]#xmax0;yma…

极狐GitLab 议题和史诗创建的速率限制如何设置?

极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 议题和史诗创建的速率限制 (BASIC SELF) 速率限制是为了控制新史诗和议题的创建速度。例如,如果您将限制设置为 …

提交到Gitee仓库

文章目录 注册配置公钥创建空白的码云仓库把本地项目上传到码云对应的空白仓库中 注册 注册并激活码云账号( 注册页面地址:https://gitee.com/signup ) 可以在自己C盘/用户/用户名/.ssh 可以看到 有id_rsa.pub 以前在GitHub注册时搞过&…

oracle中错误总结

oracle中给表起别名不能用as,用as报错 在 Oracle 数据库中,​​WITH 子句(即 CTE,公共表表达式)允许后续定义的子查询引用前面已经定义的 CTE​​,但 ​​前面的 CTE 无法引用后面的 CTE​​。这种设计类似…

纽约大学具身智能体在城市空间中的视觉导航之旅!CityWalker:从海量网络视频中学习城市导航

作者:Xinhao Liu, Jintong Li, Yicheng Jiang, Niranjan Sujay, Zhicheng Yang, Juexiao Zhang, John Abanes, Jing Zhang, Chen Feng单位:纽约大学论文标题:CityWalker: Learning Embodied Urban Navigation from Web-Scale Videos论文链接&…

OpenCV颜色变换cvtColor

OpenCV计算机视觉开发实践:基于Qt C - 商品搜索 - 京东 颜色变换是imgproc模块中一个常用的功能。我们生活中看到的大多数彩色图片都是RGB类型的,但是在进行图像处理时需要用到灰度图、二值图、HSV(六角锥体模型,这个模型中颜色的…

Manus技术架构、实现内幕及分布式智能体项目实战

Manus技术架构、实现内幕及分布式智能体项目实战 模块一: 剖析Manus分布式多智能体全生命周期、九大核心模块及MCP协议,构建低幻觉、高效且具备动态失败处理能力的Manus系统。 模块二: 解析Manus大模型Agent操作电脑的原理与关键API&#xf…

下载油管视频 - yt-dlp

文章目录 1. yt-dlp与you-get介绍1.1 主要功能对比1.2 使用场景1.3 安装 2. 基本命令介绍2.1 默认下载视频2.2 指定画质和格式规则2.3 下载播放列表2.4 备注 3. 参考资料 之前只使用you-get下载b站视频,当时了解you-get也可下载油管视频,但之前无此需求&…

济南通过首个备案生活服务大模型,打造行业新标杆

近日,一则振奋人心的消息在人工智能领域传开:济南本土企业丽阳神州智能科技有限公司自主研发的 “丽阳雨露” 大模型成功通过国家网信办的备案。这一成果不仅是济南企业在科技创新道路上的重大突破,更标志着我国在生活服务领域的人工智能应用…

第6次课 贪心算法 A

向日葵朝着太阳转动,时刻追求自身成长的最大可能。 贪心策略在一轮轮的简单选择中,逐步导向最佳答案。 课堂学习 引入 贪心算法(英语:greedy algorithm),是用计算机来模拟一个「贪心」的人做出决策的过程…

Hexo+Github+gitee图床零成本搭建自己的专属博客

一个详细、完善的 Hexo 博客部署教程,不仅涵盖了基本的安装、配置、生成与部署步骤,还增加了常见问题的解决、主题设置、图片上传等 在开始之前可以看看我最终搭建出来的成果:https://liangjh.blog 1.安装git和nodejs 在Windows上使用Git&a…

数字信号处理技术架构与功能演进

数字信号处理(DSP)是通过数字运算实现信号分析、变换、滤波及调制解调的技术领域,其发展过程与技术应用如下: 一、定义与核心功能 技术定义:通过算法将模拟信号转换为数字形式进行处理,具有高精度、可编程…