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

002.k8s(Kubernetes)一小时快速入门(先看docker30分钟)

  • 简介(免费开源,google开源)

    • 关键概念:

      • 容器(Containers):Kubernetes 管理容器,通常使用 Docker,允许应用程序在隔离的环境中运行。
      • 节点(Nodes):节点是 Kubernetes 运行的虚拟或物理机器,分为 主节点(Master)工作节点(Worker)
      • Pod:Pod 是 Kubernetes 中最小的可部署单位,包含一个或多个共享存储、网络以及运行配置的容器。
      • 服务(Services):服务定义了一组逻辑上的 Pod 以及访问它们的策略,确保对外暴露一个稳定的访问端点。
      • 部署(Deployments):部署管理无状态服务,确保在任何时候都有期望数量的 Pod 副本在运行。
      • 命名空间(Namespaces):命名空间用于在集群内隔离资源组。
      • 卷(Volumes):Kubernetes 卷可以让数据在 Pod 生命周期之外持久化,或在容器之间共享数据。
    • 为什么使用 Kubernetes?

      • 可扩展性:根据流量自动扩展应用程序。
      • 自我修复:自动重启失败的容器、替换和重新调度容器,终止不响应的容器。
      • 负载均衡:Kubernetes 将流量分配到已部署的服务上。
      • 存储编排:可以挂载并管理来自本地系统或云提供商的存储解决方案。
      • 声明式配置:使用 YAML 或 JSON 进行配置,易于定义目标状态并进行版本控制。
    • kubernetes:容器编排引擎

  • Kubernetes核心组件

    • 为了清晰展示 Kubernetes 资源对象的演进过程,我们可以通过“目的”的角度,逐步连接和解释它们的引入。

    • ### 1. **Node** – 提供容器的运行环境

      • 最基本的需求是为应用程序的容器提供一个实际的运行环境。**Node** 作为 Kubernetes 的基础工作单元,负责承载和执行容器化的工作负载。每个 Node 运行着控制器代理(如 `kubelet`),确保容器按计划启动并运行。

      • **目的**:为容器提供计算资源(CPU、内存、存储)和网络支持,是工作负载运行的基础单元。

    • ### 2. **Pod** – 封装和调度容器

      • 有了 Node,我们需要一个机制来部署和管理容器。**Pod** 引入是为了解决如何在 Node 上管理和调度容器的问题。Pod 可以封装一个或多个容器,允许它们共享存储和网络资源。

      • **目的**:在 Kubernetes 中将容器作为一个整体进行管理,实现容器的调度和隔离。

    • ### 3. **ReplicaSet** – 确保应用的高可用性

      • 运行一个 Pod 可以启动容器,但单个 Pod 无法保证应用的高可用性。为了解决 Pod 失效的问题,**ReplicaSet** 被引入。它保证在任何时刻都有指定数量的 Pod 副本在运行,自动补充失败的 Pod。

      • **目的**:确保应用程序有足够的 Pod 副本持续运行,实现容器的冗余和高可用性。

    • ### 4. **Deployment** – 提供版本管理和滚动更新

      • 当应用的副本数量增加后,管理应用的更新、扩缩容变得复杂。**Deployment** 引入了声明式的更新机制,可以控制应用如何逐步更新、回滚,确保在不中断服务的情况下完成新版本的部署。

      • **目的**:通过声明式更新、回滚等机制,简化应用的版本管理和生命周期控制。

    • ### 5. **Service** – 提供稳定的访问和负载均衡

      • 随着多个 Pod 副本的存在,应用内部以及外部需要有一个固定的方式来访问这些 Pod。**Service** 提供了一个稳定的访问端点,通过负载均衡将流量分发到后端的多个 Pod 副本。

      • **目的**:提供负载均衡和稳定的服务发现机制,确保应用在副本增加时可以被可靠访问。

    • ### 6. **ConfigMap** 和 **Secret** – 分离配置和机密数据

      • 应用逐渐复杂化后,配置和敏感数据(如密码)需要被安全地管理。**ConfigMap** 用于管理常规的非敏感配置信息,而 **Secret** 专门用于存储和传递加密的敏感数据。通过将这些数据与代码分离,应用变得更加灵活且安全。

      • **目的**:分离环境配置和敏感数据,简化应用管理并提升安全性。

    • ### 7. **PersistentVolume (PV)** 和 **PersistentVolumeClaim (PVC)** – 提供持久化存储

      • 有些应用(如数据库、文件系统)需要数据持久化,即使 Pod 被销毁或重启,数据依然需要保留。**PersistentVolume (PV)** 提供了实际的存储资源,而 **PersistentVolumeClaim (PVC)** 允许 Pod 请求这些持久存储资源。

      • **目的**:实现数据持久化,确保应用的数据不会随着 Pod 的销毁而丢失。

    • ### 8. **HorizontalPodAutoscaler (HPA)** – 实现动态扩展

      • 当应用面临不稳定的流量时,手动管理 Pod 的副本数量显得效率低下。**HorizontalPodAutoscaler (HPA)** 能根据资源利用情况(如 CPU 或内存)自动调整 Pod 的副本数量,确保应用能够根据实际需求自动扩展或缩减。

      • **目的**:动态调整应用的资源,确保在负载波动时应用能够自动扩展或缩减,保持高可用性和成本效益。

    • ### 9. **NetworkPolicy** – 控制网络访问

      • 随着集群规模增大,安全性变得至关重要。**NetworkPolicy** 引入了对 Pod 网络通信的控制,允许用户定义哪些 Pod 或外部流量可以访问哪些 Pod,从而确保集群内部和外部的流量受控。

      • **目的**:提供网络隔离和流量控制,确保应用之间的通信安全。

    • ### 连接解释总结:

      • 1. **Node** 作为基础,提供容器运行环境。

      • 2. **Pod** 通过封装容器,实现调度和管理。一个或者多个容器集合(一般是一个)

      • 3. **ReplicaSet** 确保 Pod 的副本足够,增强应用高可用性。

      • 4. **Deployment** 进一步简化了应用的版本管理和升级过程。

      • 5. **Service** 提供稳定的网络端点和负载均衡,使得多副本应用可以被统一访问。

      • 6. **ConfigMap** 和 **Secret** 通过分离配置和敏感数据,提高应用的安全性和灵活性。

      • 7. **PersistentVolume** 确保数据持久化,允许应用长期保存数据。

      • 8. **HorizontalPodAutoscaler** 根据实际负载自动扩展应用资源,提升了资源利用效率。

      • 9. **NetworkPolicy** 提供网络安全控制,保障集群内部和外部的通信安全。

  • Kubernetes架构

    • 1. 控制平面(Control Plane)

      • 控制平面负责整个集群的全局决策和管理,是 Kubernetes 的大脑部分。它管理节点,调度 Pod,并确保集群中的状态符合预期。

      • 1.1 API 服务器(kube-apiserver)
        • 作用:提供 Kubernetes 的 REST API,是所有操作和查询的入口。
        • 功能:负责处理来自集群用户和其他组件的请求,并将它们传递给合适的组件进行处理。API 服务器是控制平面与外界通信的桥梁。
      • 1.2 etcd
        • 作用:分布式键值存储,用于持久化存储集群的所有配置信息、状态和元数据。
        • 功能:保存所有的集群数据,确保数据一致性,是 Kubernetes 高可用的核心组件之一。
      • 1.3 调度器(kube-scheduler)
        • 作用:负责将新创建的 Pod 分配到合适的节点上。
        • 功能:根据 Pod 的资源需求和节点的资源可用性、策略、约束等,选择最优的节点来运行每个 Pod。
      • 1.4 控制器管理器(kube-controller-manager)
        • 作用:负责集群内的各种控制循环,确保系统的实际状态与预期状态保持一致。
        • 功能:运行一组控制器,包括副本控制器(确保正确数量的 Pod 副本)、节点控制器(监控节点健康)、端点控制器等。
      • 1.5 云控制器管理器(cloud-controller-manager)
        • 作用:与云平台集成,管理云资源。
        • 功能:处理与底层云服务相关的控制逻辑,如负载均衡器、节点生命周期管理等。这是一个可选组件,主要用于集成 Kubernetes 和云平台。
    • 2. 工作节点组件(Node Components)

      • 工作节点是 Kubernetes 集群中实际运行容器的地方。每个节点都有自己的组件来确保 Pod 正常运行,并与控制平面通信。

      • 2.1 kubelet
        • 作用:每个节点上的核心代理,负责确保 Pod 按照定义运行。
        • 功能:接收 API 服务器的指令,启动和停止容器,并通过健康检查确保 Pod 正常运行。它不断汇报 Pod 的状态给控制平面。
      • 2.2 kube-proxy
        • 作用:节点上的网络代理,管理 Pod 的网络通信。
        • 功能:负责在每个节点上维护网络规则,确保集群内不同 Pod 之间的通信,以及外部流量与集群的通信。
      • 2.3 容器运行时(Container Runtime)
        • 作用:运行容器的实际环境。
        • 功能:Kubernetes 支持多种容器运行时,如 Docker、containerd 和 CRI-O。容器运行时负责拉取镜像并启动、停止容器。
    • 3. 附加组件(Add-ons)

      • 除了核心组件,Kubernetes 还支持多种附加组件,用来增强集群的功能。

      • 3.1 DNS
        • 作用:为 Kubernetes 服务提供服务发现。
        • 功能:每个集群通常会自动部署一个 DNS 服务,用来解析服务名称为 IP 地址,支持 Pod 间的网络通信。
      • 3.2 Dashboard
        • 作用:提供图形化用户界面。
        • 功能:为用户提供对集群资源的可视化管理和监控工具。
      • 3.3 日志收集和监控
        • 作用:为集群提供日志和监控支持。
        • 功能:常见的监控工具如 Prometheus,日志收集工具如 Fluentd,可以帮助用户了解集群的运行状况和排查问题。
    • Kubernetes 架构的工作流程

      • 用户请求:用户通过 kubectl 或其他客户端工具向 API 服务器发出请求(如创建、更新或删除 Pod)。
      • API 服务器处理请求:API 服务器接收到请求后,将其持久化存储到 etcd,然后将任务分发给合适的控制器(如 ReplicaSet 控制器)进行处理。
      • 调度器调度 Pod:如果是新创建的 Pod,调度器会根据节点资源状况、策略和约束,决定将 Pod 分配到哪个节点上。
      • kubelet 执行指令:kubelet 接收到调度命令后,使用容器运行时在节点上启动或停止 Pod,确保应用程序在正确的环境中运行。
      • kube-proxy 设置网络:kube-proxy 配置网络规则,确保 Pod 之间的流量可以正确路由,同时处理外部与集群的通信。
      • 持续监控:控制平面中的控制器和 kubelet 持续监控集群状态,自动调整和修复 Pod、节点,确保集群保持在预期状态。
  • 搭建Minikube环境

  • 搭建K3S环境

  • 在线环境

  • kubectl常用命令

  • 配置文件

  • 配置和公开服务

  • Portainer


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

相关文章:

  • 重温设计模式--单例模式
  • Day1 苍穹外卖前端 Vue基础、Vue基本使用方式、Vue-router、Vuex、TypeScript
  • Canoe E2E校验自定义Checksum算法
  • 项目亮点案例
  • 【视觉SLAM:八叉树地图(Octree Map)概述】
  • docker安装nginx,docker部署vue前端,以及docker部署java的jar部署
  • WPF经典面试题全集
  • JavaEE: 深入探索TCP网络编程的奇妙世界(一)
  • 【MySQL】数据类型【mysql当中各自经典的数据类型的学习和使用】
  • Leetcode 136 只出现一次的数字
  • EfficientFormer实战:使用EfficientFormerV2实现图像分类任务(一)
  • WPF 的TreeView的TreeViewItem下动态生成TreeViewItem
  • 合宙LuatOS应用,与时间相关那些事
  • k8s中pod的创建过程和阶段状态
  • Allegro视频去除走线的小方块
  • Milvus - 四种一致性级别与应用场景解析
  • 可靠传输是什么?是基于UDP实现的吗
  • JUC并发编程_四大函数式接口和 Stream 流式计算
  • 适用于 Windows 的 7 大数据恢复工具,可靠的数据恢复工具可有效地恢复丢失的文件
  • 后端开发工程师转行大模型领域:全面学习路线指南,非常详细收藏我这一篇就够了
  • 【大语言模型_1】VLLM部署Qwen模型
  • 【速成Redis】04 Redis 概念扫盲:事务、持久化、主从复制、哨兵模式
  • 2-102基于matlab的蒙特卡洛仿真
  • C语言——文件操作
  • [数据结构]动态顺序表的实现与应用
  • 第二证券:“产业+科技” 中国并购重组市场持续升温