Kubernetes解读

49 阅读3分钟

Kubernetes的简介

Kubernetes:是一个基于容器技术的分布式架构

  • 本质上是一组服务器集群,可以在集群的每个节点上运行程序,来对节点中的容器进行管理
  • 目的是实现资源的自动化

主要功能:

  • 自我修复:一旦某一个容器崩溃,能够在1秒左右迅速启动新的容器
  • 弹性伸缩:可以根据需要,自动对集群正在运行的容器进行调整
  • 服务发现:服务可以通过自动发现的形式,找到它所依赖的服务
  • 负载均衡:如果一个服务启动了多个容器,能够自动实现请求的负载均衡
  • 版本回退:如果发现新发布的版本有问题,可以立即回退到原来的版本
  • 存储编排:可以根据容器自身需求自动创建存储卷

kubernetes的组件

一个kubernetes集群主要有:控制节点、工作节点 构成

控制平面(Control Plane):负责集群的状态、调度Pod到合适的节点、监控节点和Pod健康状况

  • kube-apiserver
  • etcd
  • kube-scheduler
  • kube-controller-manager
  • could-controller-manager

工作节点:负责运行实际的应用容器

  • kubelet
  • kube-proxy
  • 容器运行时

每个工作节点都有一个kubelet进程,来管理节点的Pod

还有kube-proxy进程来处理网络代理和负载均衡

控制平面组件

Kube-ApiServer:是Kubernetes控制平面的核心组件

  • 负责处理所有的REST操作,暴露 kubernetes API
  • 它是整个集群的前端,所有的控制请求都要经过它

功能:

  • 验证和授权:负责验证用户的身份,并根据配置的访问控制策略进行授权,确保只有合法的请求才能对集群进行操作
  • 集群状态管理:是集群的状态中心,所有的集群状态信息都通过它来访问和更新
  • 通信枢纽:是其他控制平面组件和工作节点与集群进行通信的桥梁。
    • 所有的组件和节点都通过它来获取和更新集群状态

当用户或其他组件向 Kube-APIServer 发送请求时,APIServer 首先进行身份验证和授权检查,然后对请求的数据进行验证和处理。

处理完成后,APIServer 会将数据存储到 etcd 中,同时通知其他组件进行相应的操作

Etcd:是一个分布式键值存储

  • 用于储存 Kubernetes 集群的所有数据
  • 所有的配置信息、状态信息都存储在 etcd 中

功能:

  • 数据存储:Etcd 负责存储所有的集群状态数据
    • 包括 Pod、Service、ConfigMap、Secret
  • 数据可靠性:Etcd 通过分布式架构,保证数据的高可用性和一致性,确保集群状态。数据在发生故障时,仍能可靠存储
  • 数据访问:Etcd 提供了高效的键值对存储和访问接口,支持高频率的读写操作,满足 Kubernetes 对集群状态数据的高频访问需求

Kube-APIServer 通过 etcd API 进行数据的读写操作。

当集群状态发生变化时,APIServer 会将新的状态数据写入 etcd,同时其他组件可以监听 etcd 的变化,从而进行相应的处理

Kube-Scheduler:是 Kubernetes 的调度组件

  • 负责将创建的Pod调度到合适的工作节点上
  • 根据预设的调度策略和节点状态,选择最合适的节点来运行 Pod

功能:

  • 资源调度:Kube-Scheduler 根据节点的资源使用情况和 Pod 的资源需求,选择合适的节点来运行 Pod
  • 策略配置:Kube-Scheduler 支持多种调度策略,包括资源优先、亲和性、反亲和性等,用户可以根据需求自定义调度策略
  • 负载均衡:通过合理的调度策略,Kube-Scheduler 能够有效地分配负载,避免节点过载,确保集群的高效运行