Kubernetes(K8s)

发布时间 2023-08-20 17:34:29作者: vorn

一、背景

Google有十几年的容器化基础架构,内部有一套成熟的管理容器的资源管理器框架borg,但borg并不开源。后来Google使用GO语言根据borg的设计思路开发出了一套具有同功能的资源管理器框架Kubernetes,并开源了出来。

Kubernetes特点:轻量级(资源消耗小)、开源、弹性伸缩、负载均衡(使用IPVS)

二、组件说明

1、borg

架构图:

说明:

borgcfg:文件方式的请求

command-line tools:命令行方式的请求

web browsers:web页面方式的请求

BorgMaster:负责请求分发,相当于borg的大脑,BorgMaster有多个(奇数个),保证高可用

scheduler:调度器,将请求更新到键值对数据库Paxos中

Paxos:存储键值对的数据库

Borglet:borg真正工作的节点,实时监听Paxos,如果发现键值对中有请求就去执行

2、K8s

架构图:

说明:

kubectl:命令行管理工具

web UI:web页面

api server:所有服务访问统一入口,由于这个组件访问量太大,因此其它服务都有缓存机制

scheduler:调度器,和borg不同,scheduler通过api server跟数据库etcd交互。除此之外,负责接收任务,选择合适的节点进行分配任务

replication controller:控制器,维护副本数目(期望值),如控制pod数量

etcd:go语言编写的一个可信赖(自身支持集群化)的分布式(扩容方便)键值存储服务,它能够为整个分布式集群存储一些关键数据,协助分布式集群的正常运转。v2版本在memory中存储,v3版本加入了磁盘做持久化存储,v2版本己在K8s v1.11 中弃用。v3版本实际使用时,将K8s集群所有重要信息做持久化存储,其他信息还是在内存中

kubelet:直接跟容器引擎交互实现容器的生命周期管理

kube proxy:负责写入规则至IPTABLES、IPVS实现服务映射访问的

3、其他插件

CoreDNS:可以为集群中的svc(service的简写)创建一个域名IP的对应关系解析

Dashboard:给K8s集群提供一个B/S 结构访问体系

lngress Controller:K8s官方只能实现四层代理,lngress可以实现七层代理

Federation:提供一个可以跨集群中心多K8S统一管理功能

Prometheus:提供K8s集群的监控能力

ELK:提供K8s集群日志统一分析接入平台