1. K8S简介及结构

文章目录

    • 1.K8S简介
      • 1-1.Brog系统结构
      • 1-2.K8S系统结构

1.K8S简介

Kubernetes(K8S)是自动部署、扩展、管理“容器化应用程序”的开源系统,旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”,支持一系列容器工具,包括docker。(摘自维基百科)

在正式开始k8s的相关介绍之前,我想我们可以先去思考以下这些问题(当然,大佬可直接略过,本人小白一枚)简单的说,Kubernetes是用来管理容器的,那为什么要容器化呢?容器化的优势体现在哪里?为什么容器化后需要使用kuburnetes来管理?

可以参考这篇blog,个人觉得写得很不错:通俗讲解:什么是容器?为什么我们要使用它?

个人理解,容器化技术实现了程序运行环境和真实部署环境的隔离。至于为什么用k8s,容器化之后随之而来的就是如何来管理这些容器,容器之间的通信等等,顺其自然地k8s就发展出来了。

K8S前身是由Google的Borg系统(资源管理器)发展而来的,基于GO语言开发

1-1.Brog系统结构

先看一下Brog系统的结构:

1. K8S简介及结构_第1张图片

*borgcfg /command-line tools/web browers 是所提供的多种访问方式;BrogMaster用于负责请求的分发(也就是收到请求后把任务交给哪个节点去处理),图中的scheduler实际上就是负责分发请求任务的,真正工作的节点是Broglet;但是scheduler并不会直接与broglet进行交互,而是把数据先写入Paxos(google的一个键值对数据库),Broglet会实时的监听Paxos,若发现存在其自身对应的请求,便会执行相应的请求。 **

这里要注意的是:为防止BrogMaster由于单节点故障,所以可以从图中结构可以看到有很多BrogMaster副本(这里要注意,BrogMasters的数量一般是奇数个,这是为了防止在投票选举时由于偶数个原因出现对半分的情况)

简单的说就是,发起请求、收到请求、分发请求、处理请求

1-2.K8S系统结构

再看k8s的结构:

1. K8S简介及结构_第2张图片

其整个运行流程与Brog系统类似,只是部分组件不同

APISERVER:所有服务访问统一入口
CrontrollerManager:维持副本期望数目
Scheduler:负责接收任务,选择合适的节点进行分配任务。这里要注意的是,Scheduler并不会直接与ETCD交互,而是先把请求写入到api server中,这一点与Brog系统不一样
ETCD:分布式键值对数据库 储存K8S集群所有重要信息(持久化) 相当于Brog系统中的Paxos。ETCD实现持久化的原理结构:

1. K8S简介及结构_第3张图片

Kubelet:直接跟容器引擎(比如Docker)交互实现容器的生命周期管理
Kube-proxy:负责写入规则至 IPTABLES、IPVS 实现服务映射访问的

其他组件:

COREDNS:可以为集群中的SVC创建一个域名IP的对应关系解析
DASHBOARD:给 K8S 集群提供一个 B/S 结构访问体系
INGRESS CONTROLLER:官方只能实现四层代理,INGRESS 可以实现七层代理
FEDERATION:提供一个可以跨集群中心多K8S统一管理功能
PROMETHEUS:提供K8S集群的监控能力
ELK:提供 K8S 集群日志统一分析介入平台

你可能感兴趣的:(Kubernetes,k8s)