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 能够有效地分配负载,避免节点过载,确保集群的高效运行