一、kubernetes概述

1、kubernetes是什么

由google公司基于go语言开发的集群版的容器编排工具
简称k8s

2、kubernetes作用/优势

  • 自我修复
  • 滚动更新
  • 服务发现和负载均衡
  • 存储编排
  • 水平扩展

总而言之,让容器化的应用部署变得更简单、高效

二、kubernetes核心组件

在这里插入图片描述

1、节点类型

  • Master节点, 主节点
    负责整个k8s集群的管理操作(监控、状态维护、扩容、缩容)

  • Node节点,工作节点
    运行容器的节点

  • Etcd数据库
    高性能的键值对数据库
    作为k8s集群的后台数据库使用,存储集群的所有数据

  • kubectl
    客户端、命令行工具

2、核心组件

2.1 Master节点的组件

  • kube-apiserver
    负责接收客户端操作请求、认证授权
    负责与etcd数据库交互
    负责接收工作节点的注册请求

  • kuber-scheduler 调度器
    选择一个合适的工作节点来运行容器

  • kube-controller-manager 控制器管理器
    负责管理k8s集群内部中所有的控制器的(无状态、有状态等)

2.2 Node节点的组件

  • 容器管理引擎
    可以是docker, containerd
    k8s从1.25版后弃用docker,改用containerd,性能效率考虑

  • kubelet
    负责调用工作节点的容器引擎进行容器的整个生命周期管理
    向api server发送注册请求

  • kube-proxy
    负责服务发布、负载均衡(调用lvs)

3、k8s创建容器的流程

在这里插入图片描述

  1. 用户通过客户端工具向api server组件发送创建pod的请求
  2. api server接收到该请求后,会将请求信息(pod名称、镜像、卷、网络等信息)记录到etcd数据库
  3. scheduler组件会周期性的请求api server,以询问是否有操作请求; api server组件查询etcd数据库响应scheduler组件,scheduler组件会得知存在创建pod的请求
  4. scheduler按一定的算法选择一个合适的node节点计划创建Pod, 并将选定的节点信息返回给api server;api server会将该node节点要与创建的pod对应关系写入etcd数据库
  5. kublet组件启动后,会先api server注册自己,以让api server得知有运行起kublet服务的node节点的存在,并将node节点信息记录到etcd数据库;这样scheduler组件才可以根据数据库的记录选择合适的节点创建pod
  6. kubelet组件也会周期性的请求api server, 以询问是否有自己要做的操作,api server查询数据库响应kubelet, kubelet获知到要创建的pod的信息后,调用container engine创建容器
  7. 容器创建完成后,为便于访问,由kube-proxy提供负载均衡
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐