胡文成的个人博客

Kubernetes相关介绍

2024-08-06

一、介绍

1. 概念

官方解释:Kubernetes是一个可移植可扩展开源的平台,用于管理容器化的工作负载和服务。

通俗解释:可将Kubernetes理解为一个开源的自动化容器平台,管理员可通过Kubernetes完成容器的部署、调度与资源扩容。

2. Docker 和 Kubernetes 的关系

Docker是Kubernetes支持的一个容器引擎,除此之外,Kubernetes还支持container等容器引擎

3. 主要功能
  • 服务发现与负载均衡
  • 存储编排
  • 自动发布与回滚
  • 自动调度
  • 故障自愈
  • 配置托管

二、Kubernetes架构

完整的Kubernetes集群包含两部分:主节点(Master Node)、工作节点(Worker Node)

Kubernetes运行架构图
1. 主节点(Master Node)
功能

负责集群的控制。比如:监控集群状态、执行变更

包含组件
  • ETCD(数据存储器)

    开源、高可用的分布式键值对存储系统,用来保存整个集群的数据

  • API Server(API服务器)

    操作 Kubernetes集群各个资源的应用接口

    比如:处理完一个创建Pod的写请求后,将数据写入ETCD中

  • Scheduler(调度器)

    负责调度Pod资源到指定节点上

    比如:通过API Server新建一个Pod后,调度器会按照调度策略将Pod分配到指定的节点上

  • Controller Manager(集群控制器)

    负责对集群的管理操作

    比如:按预期增加或删除某个Pod,或者按顺序启动一系列Pod

2. 工作节点(Work Node)
功能

运行容器应用,并根据主节点的命令管理容器

包含组件
  • kubelet

    每个从节点上,都包含了kubelet,它负责该节点中容器的创建、销毁等全生命周期的维护

  • kube-proxy

    一组具有特定功能的Pod,将抽象为一个Service

    kube-proxy负责为Service提供集群内部的服务发现负载均衡功能

  • Container Runtime(容器运行时)

    负责Pod和容器的运行

三、Kubernetes核心概念

image-20231105142357068
  • Pod

    Kubernetes集群运行与部署应用的最小单元

  • Service

    按特定逻辑,对多个Pod进行分组,所形成的每个组就是一个Service

    客户端是通过Service的IP地址访问这组Pod的

  • ReplicaSet(副本集)

    副本集合负责创建和管理一个Service中的一组Pod的。

    比如:当Service的Pod需要从2个扩容到4个时,副本集合会按照YAML中的Pod模板在合适的节点上创建Pod

  • 四种集群控制器

    • Deployment

      作用:用来对Pod和副本集合进行更新

      注意:Deployment不会直接控制Pod,而是通过控制ReplicaSet来间接控制Pod

    • StatefulSet

      作用:用来部署有状态的服务

      说明:StatefulSet中的每个Pod名称都是事先确定的,如果某个Pod发生了故障,会从其他Node启动一个同名称的Pod

    • DaemonSet

      作用:用来确保创建的Pod在集群中的每一个节点或指定的节点上会运行一个Damon Pod

      使用场景:多用于存储、日志和监控等后台支持型服务的部署

    • Job、CronJob

      作用:负责批量处理短暂的一次性任务

      使用场景:那些仅需要执行一次的任务

  • Volume(存储卷)

    Kubernetes支持多种类型的存储卷,比如:公有云平台存储、分布式存储或逻辑存储等

  • ConfigMap

    给Pod提供配置的组件

    两种提供方式:

    • 以环境变量形式注入Pod
    • 以文件形式通过Volume挂载到Pod中

三、Kubernetes分层架构

最核心的两个设计理念:

  • 容错性

    保证集群稳定且安全地运行

  • 易扩展性

    保障kubernetes可以快速迭代新功能

image-20231105155529421
Tags: k8s

扫描二维码,分享此文章