当前位置: 首页 > article >正文

K8s小白入门

文章目录

  • 前言
  • 一、特性
  • 二、集群的结构
    • 控制平面内部组件
    • Node内部组件
  • 三、Docker与K8s的关系
  • 总结


前言

Kubernetes(K8s)是一个开源的容器编排平台,用于自动化容器化应用的部署、扩展和管理。是支持云原生部署的一个平台,它前生是谷歌的Borg系统,后经过Go语言重写,在2014 年开源了 Kubernetes 项目,并捐献给CNCF 基金会开源,即Kubernetes,之所以简称K8s,因为 Kubernetes 中间有 8个字母。


一、特性

  1. 自动化部署和回滚:K8s 允许用户声明应用的期望状态,并自动将实际状态调整为期望状态。这意味着可以自动部署新版本的应用,并在出现问题时自动回滚到之前的版本。

  2. 服务发现和负载均衡:K8s 可以使用 DNS 名称或自己的 IP 地址来暴露容器。如果进入容器的流量很大,K8s 可以负载均衡并分配网络流量,从而使部署稳定。

  3. 存储编排:K8s 允许自动挂载用户选择的存储系统,例如本地存储、公共云提供商等。

  4. 自动完成装箱计算:K8s 提供了资源调度功能,能够根据容器的资源需求,将其分配到合适的节点上,优化资源利用率。

  5. 自我修复:K8s 能够自动重启失败的容器、替换容器、杀死不响应用户定义的健康检查的容器,并且在准备好服务之前不将其通告给客户端。

  6. 密钥与配置管理:K8s 允许存储和管理敏感信息,例如密码、OAuth 令牌和 SSH 密钥。可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥。

  7. 水平扩缩:K8s 支持根据 CPU 使用率或其他自定义指标,自动对应用进行扩展或缩减,确保应用在不同负载下都能高效运行。

  8. 可移植性和灵活性:K8s 支持在多种环境中运行,包括本地数据中心、公有云和混合云,提供一致的操作体验。

二、集群的结构

集群的结构主要由控制平面(Control Plane)和工作节点(Node) 两部分组成。

在这里插入图片描述

控制平面内部组件

Kubernetes 的控制平面(Control Plane)是集群的核心,负责管理和协调所有节点,确保集群处于期望的状态。控制平面由以下关键组件组成:

  1. API 服务器(kube-apiserver)

    • 功能:作为 Kubernetes 控制平面的前端,提供集群的 RESTful API 接口,处理所有的 API 请求,包括认证、授权、数据校验和集群状态变更。
    • 作用:所有其他组件都通过 API 服务器进行通信,是集群的统一入口。
  2. etcd

    • 功能:一个分布式、一致性、高可用的键值存储,用于保存集群的所有配置信息和状态数据。
    • 作用:作为集群的唯一数据源,存储了所有的集群数据,包括节点信息、Pod 状态、配置数据等。
  3. 调度器(kube-scheduler)

    • 功能:监视新创建且未指定运行节点的 Pod,并根据资源需求、硬件/软件/策略约束、亲和性/反亲和性规范等因素,将其分配到合适的节点上。
    • 作用:确保工作负载在集群中的合理分布,优化资源利用率。
  4. 控制器管理器(kube-controller-manager)

    • 功能:运行各种控制器进程,每个控制器负责维护集群的不同方面,确保实际状态与期望状态一致。

    • 常见控制器

      • 节点控制器:负责在节点出现故障时进行通知和响应。
      • 副本控制器:确保每个副本集(ReplicaSet)具有正确数量的 Pod 副本。
      • 端点控制器:填充 Endpoint 对象,维护服务与 Pod 之间的映射关系。
  5. 云控制器管理器(cloud-controller-manager)

    • 功能:嵌入特定云提供商的控制逻辑,允许将集群与云提供商的 API 集成。
    • 作用:管理与云平台相关的控制器,如节点控制器、路由控制器和服务控制器,处理云资源的创建、更新和删除。

Node内部组件

在这里插入图片描述

在 Kubernetes 集群中,节点(Node) 是实际运行容器化应用的工作单元。每个节点包含以下关键组件:

  1. kubelet

    • 功能:节点上的核心代理,负责与控制平面通信,确保容器按照定义正确运行。
    • 作用:接收并执行来自 API 服务器的 Pod 指令,监控 Pod 和容器的状态,报告节点和 Pod 的状态信息。
  2. kube-proxy

    • 功能:节点上的网络代理,负责维护网络规则,处理服务的网络代理和负载均衡。
    • 作用:实现 Kubernetes 服务的通信与负载均衡机制,确保网络流量正确路由到相应的 Pod。
  3. 容器运行时(Container Runtime)

    • 功能:负责实际运行容器的底层软件。
    • 作用:管理容器的生命周期,包括创建、启动、停止和删除容器。常见的容器运行时包括 Docker、containerd、CRI-O 等。

这些组件共同协作,确保节点能够高效地运行和管理容器化的应用程序,提供稳定的运行环境。

三、Docker与K8s的关系

互补性: Docker 提供了容器化的技术基础,使应用程序可以在任何地方以一致的方式运行;而 Kubernetes 则提供了容器编排和管理的能力,帮助更轻松地管理和扩展应用程序。

集成性: Kubernetes 可以使用 Docker 作为容器运行时接口的一部分。这意味着 Kubernetes 可以利用 Docker 来运行容器,但 Kubernetes 也可以与其他容器运行时(如 containerd、CRI-O 等)一起工作。

抽象层: Kubernetes 提供了一层抽象,使得用户无需关心底层基础设施的具体细节,而是专注于应用的部署和服务管理。


总结

K8s的概念较为复杂,但基本的结构就是这些。如今K8s是现代云原生应用的首选平台。


http://www.kler.cn/a/383394.html

相关文章:

  • 「Mac畅玩鸿蒙与硬件22」鸿蒙UI组件篇12 - Canvas 组件的动态进阶应用
  • 第十九周机器学习笔记:GAN的数学理论知识与实际应用的操作
  • 如何在 Vue.js 中优化 Element UI 长文本显示
  • Redis的内存淘汰机制
  • 开源模型应用落地-glm模型小试-glm-4-9b-chat-vLLM集成(四)
  • 人工智能之人脸识别(人脸采集人脸识别)
  • 【C++笔记】模版的特化及其编译分离
  • 6.qsqlquerymodel源码分析
  • Java Agent使用、用途和优势
  • 第十九周机器学习笔记:GAN的数学理论知识与实际应用的操作
  • URL上的参数获取
  • C++之多态(3)
  • 鸿蒙next打包流程
  • 提升网站流量的有效网页优化方法指南
  • 力扣1 两数之和
  • 栈和队列相关题 , 用队列实现栈, 用栈实现队列 ,设计循环队列 C/C++双版本
  • C#字符串的不可变性:内存管理与线程安全的优势分析
  • 你要的增量更新来了:微软GraphRAG 0.4.0
  • DPDK(F-Stack) 实现UDP通信
  • 印刷质量检测笔记
  • TS(类 接口 泛型)
  • 【Python编程实例】-深入理解Python线程安全
  • 【机器学习】随机森林算法
  • 网页,app,微信小程序互相跳转
  • 传统的问答系统;;基于生成的问答系统;;基于检索增强生成的问答系统RAG
  • 工业4.0时代下的分布式IO模块