目 录CONTENT

文章目录

Kubeadm管理k8s集群系列01-介绍K8S

cplinux98
2022-09-06 / 0 评论 / 0 点赞 / 589 阅读 / 1,751 字 / 正在检测是否收录...

00:文章简介

介绍k8s是什么?k8s集群的基础架构等基础知识。

01:介绍

kubernetes简称k8s,是Google使用Go语言基于内部使用了多年的Borg重写并开源的一个开源系统。
官方的介绍是: 
    kubernetes是用于自动部署、扩展和管理容器化应用的开源系统。它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现。kubernetes源自Google 15年生产环境的运维经验,同时凝聚了社区的最佳创意和实践。
官方还介绍了它的特点:
    规模:
        扩展性极强
    灵活:
        功能没有上限,永远满足你的需求
    时效:
        永不过时,开源系统,可以在任意平台中使用

自己的总结:
    kubernetes是Google基于内部Borg系统使用Go语言重写并开源的一款容器管理平台,它集成了Google 15年的生产环境运维经验,将运维经验落地形成了平台化的操作,使用Kubernetes相当于踩在了巨人的肩膀上。而且Kubernetes采用分布式的架构,扩展性极强;应用与底层基础架构分离,可以更灵活的管理业务;它是开源的操作系统,可以根据自己的使用习惯来进行二次开发。

带来的好处:
    缩短软件开发周期,提高资源利用率,使用互补的开源技术
缺点:
    每年4个重要版本,更新速度太快,且每个版本中的变动太大,每个版本都会引入新特性,很多版本不能兼容使用。
              

02:k8s基础架构

image

03:重要组件

Master
    整个k8s集群中的控制节点,负责集群中所有资源的调度和控制,不应用资源的运行,节点数量应该为奇数,不需要较高配置。

API Server
    它是k8s的入口,内部封装了核心对象的增删改查操作,提供了RESTFul风格的API接口的关键服务进程,k8s集群所有资源的“增删改查”操作唯一入口,是集群间节点通信的根基。所有结果将存储到etcd中。

Scheduler
    资源调度中心,根据特定的调度算法,将Pod调度到node节点上(创建生成pod请求,匹配最佳工作节点)。

Controller
    将运维经验代码化的产物,负责集群内部所有节点的资源对象的自动化管理控制中心,重点实现service Endpoint的动态更新。管理k8s集群中的各种控制节点,包括replication Controller 和 node Controller。
    根据资源的 期望状态 和 当前状态 进行比较,判断是否与期望状态一致,若不一致,则通知APIServer进行重启、迁移、删除等操作,最终保证集群的各种资源在预期状态下运行。
    资源对象:节点、容器应用、软件版本、容器副本(个数)等等

etcd
    分布式的协同数据存储服务实现方案,通过将数据分散存储,达到提高数据的可靠性或读写性能
    k8s内部资源对象的数据全部保存在etcd中,来实现持久化并维护对象的一致性。

Node
    k8s集群中的工作负载节点,接收到Master的任务后,分配Pod到Node节点中运行,需要较高配置。

Kubelet
    Node节点上的Agent客户端,负责与Master的API Server通信,同步工作状态、抓取主机资源信息。
    它有垃圾回收机制,包括容器垃圾回收和镜像垃圾回收。

Kube-proxy
    管理service并提供service通信和负载均衡的功能,提供算法将客户端流量负载均衡到service对应的一组后端pod
    使用etcd的watch机制,实现服务发现功能,维护一张service到endpoint的映射关系,从而保证后端pod的IP变化不会影响用户的访问
    将service资源转换成iptabels或ipvs规则,是k8s的核心网络组件。

Fluentd
    集群中的一种日志管理方案,不是k8s内部实现的功能

flannel
    它是针对k8s设计的一个覆盖网络工具,它的目的是为集群中的所有节点重新规划ip地址的使用规则,从而使得不同节点上的容器能够获得同属一个内网且不重复的ip地址,并让属于不同节点上的容器能够通过内网ip通信

Docker
    底层容器运行依赖,是运行k8s集群中各种资源对象的载体。

Harbor
    管理k8s集群中的所有docker镜像

04:内部资源对象

image

05:k8s与docker的关系

关系图

docker是容器管理平台

k8s是容器编排工具

k8s依赖于docker-shim 和 docker-containerd来创建容器

docker创建容器原理:

containerd -> docker-shim -> runc -> 容器

k8s创建容器原理:

kubelet -> CRI-containerd -> docker -> dockershim -> runc -> 容器

虽然Kubernetes在2020宣布废弃dockershim,但只是将CRI-Container d 和containerd结合成了CRI plugin container d,节省了两个插件中间的dockershim,实际上,在containerd 到container中间,还有dockershim负责与runc进行通信。

06:k8s与docker的关系中涉及名词

CNCF

CNCF,全称Cloud Native Computing Foundation(云原生计算基金会),口号是 "坚持和整合开源技术来编排容器作为微服务架构的一部分",实际上与其口号差不多,就是给开源容器的插件来进行审核的一个机构,开源插件需要经过他们的测试和考察,“毕业”后才能成为kubernetes和docker编排中的合格产品。

CNI

CNI, 全称Container Network Interface
kubernetes 对于网络的解决方案,只是预留了网络接口,只要符合CNI标准的解决方案都可以使用

CSI

Container Storage Interface
kubernetes 对于存储的解决方案,只是预留了存储接口,只要符合CSI标准的解决方案都可以使用

CRI

Container Runtime Interface
kubernetes 对于容器的解决方案,只是预留了容器接口,只要符合CRI标准的解决方案都可以使用
0

评论区