• Kubernetes (K8s) 底层原理


    Kubernetes (K8s) 的底层原理涉及多个关键组件和概念,确保容器化应用程序的自动化部署、扩展和管理。以下是 Kubernetes 的底层原理及其关键组件的详细描述。

    核心组件

    1. Etcd

      • 功能:分布式键值存储,用于存储集群的所有数据,包括配置、状态等。
      • 作用:提供可靠的数据存储,确保所有组件能够一致地访问集群状态。
    2. Kube-API Server

      • 功能:Kubernetes 控制平面的核心组件,负责处理 RESTful API 请求。
      • 作用:管理和协调所有其他组件的操作,包括 Pod、Service、Namespace 等资源的管理。
    3. Kube-Scheduler

      • 功能:负责根据调度策略将新创建的 Pod 分配到合适的 Node 上。
      • 作用:确保资源的合理分配,满足负载均衡和资源利用率优化。
    4. Kube-Controller Manager

      • 功能:运行集群的控制循环,监控集群状态并确保期望状态与实际状态一致。
      • 作用:包括节点控制器、复制控制器、端点控制器和服务帐户控制器等。
    5. Kubelet

      • 功能:运行在每个 Node 上,负责管理该节点上的容器。
      • 作用:监控 Pod 的状态,确保容器按照 Pod 规范运行。
    6. Kube-Proxy

      • 功能:负责为 Kubernetes 服务提供网络代理功能。
      • 作用:管理网络规则,处理 Pod 间的网络通信和负载均衡。
    7. Container Runtime

      • 功能:在容器中运行应用程序。
      • 作用:支持 Docker、containerd、CRI-O 等容器运行时。

    工作流程

    1. API 请求:用户通过 kubectl 或 API 调用与 Kube-API Server 交互,提交资源配置请求(例如创建 Pod)。
    2. 持久化存储:Kube-API Server 将请求数据存储在 Etcd 中。
    3. 调度:Kube-Scheduler 从 Etcd 中读取新创建的 Pod 资源,根据调度策略将其分配到适当的 Node 上。
    4. Pod 创建:Kubelet 接收到调度任务后,通过 Container Runtime 创建并启动容器。
    5. 状态监控:Kube-Controller Manager 不断监控资源状态,确保实际状态与期望状态一致。
    6. 网络代理:Kube-Proxy 管理网络通信,确保 Pod 间和外部访问的网络连接正常。

    架构图示

    +-------------------------------+
    |        Kube-API Server        |
    |                               |
    |  +-------------------------+  |
    |  |         Etcd            |  |
    |  +-------------------------+  |
    |                               |
    +---------------+---------------+
                    |
    +---------------v---------------+
    |       Kube-Scheduler          |
    +---------------+---------------+
                    |
    +---------------v---------------+
    |   Kube-Controller Manager     |
    +---------------+---------------+
                    |
    +---------------v---------------+
    |        Nodes (Workers)        |
    |                               |
    |  +-------------------------+  |
    |  |         Kubelet         |  |
    |  +-------------------------+  |
    |                               |
    |  +-------------------------+  |
    |  |       Kube-Proxy        |  |
    |  +-------------------------+  |
    |                               |
    |  +-------------------------+  |
    |  |    Container Runtime    |  |
    |  +-------------------------+  |
    |                               |
    +-------------------------------+
    

    核心概念

    1. Desired State & Actual State:Kubernetes 使用声明式 API,用户定义所需的集群状态(Desired State),Kubernetes 控制平面通过不断对比实际状态(Actual State)和期望状态,确保二者一致。
    2. Controller Loop:控制器不断监控集群状态,自动纠正偏差,确保资源按照定义配置和运行。
    3. Label & Selector:通过标签(Label)和选择器(Selector)实现资源的灵活管理和筛选。
    4. Namespace:用于资源隔离和分组管理,实现多租户支持。
    5. Service Discovery:通过 Service 和 DNS 机制,实现 Pod 之间和外部系统的自动发现和通信。

    总结

    Kubernetes 通过其分布式架构和自动化控制机制,提供了高度可扩展和可靠的容器编排能力。其底层原理涵盖了从资源调度、状态管理到网络通信的各个方面,确保容器化应用程序的高效运行和管理。

  • 相关阅读:
    【C++】KDevelop的基本使用
    不会metaclass你居然敢说自己会Python?
    Azure Synapse Analytics 性能优化指南(4)——使用结果集缓存优化性能
    Try llama2 in NUC (by quqi99)
    thonny的汉字编码是UTF-8,如何才能转为GB2312?
    开发程序员转金融finance、量化quant的解决方案(含CPA、CFA、CQF等证书要求)
    Kafka 消息的生产和消费
    基于C#的公交充值管理系统的设计与实现
    2.10_python+Django+mysql实现pdf转word项目_项目开发-编写pdf转word函数
    JVM关闭与关闭钩子 Runtime.getRuntime().addShutdownHook() 作用以及相关注意事项
  • 原文地址:https://blog.csdn.net/Casual_Lei/article/details/140039095