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