k8s架构原理

Python018

k8s架构原理,第1张

k8s是google公司使用go语言开发,借鉴borg系统开发出来的。

k8s集群服务器主要分为两类角色,分别为master和node。

api server: k8s网关,所有指令请求都必须经过apiserver。

scheduler: 调度器 根据调度算法,将请求资源调度到某一个node节点。

controller: 控制器,维护k8s资源对象。

etcd: 分布式存储组件,用于存储资源对象。

docker: 运行容器的基础环境,容器引擎。

kubelet: 每个node节点都存在一份,在node节点上的资源操作指令均由kubelet执行,从etcd扫描相关请求,在节点上执行请求。

kube-proxy: 代理服务,负载均衡

fluentd: 日志收集服务

pod: 是k8s管理的基本单位(最小单元),pod 内部是容器

k8s是用来管理容器的,但是不直接操作容器,最小操作单元为pod

特点:

pod是一个虚拟化的分组(有自己的ip地址、主机名),pod相当于独立主机,可以封装一个或多个容器。通常情况下,一个pod中要么部署一个服务,要么部署多个相关的服务

1、pod底层网络和数据存储:

pod底层网络和存储主要依赖pause容器,该容器作用如下:

2、pod内部容器使用localhost相互访问

3、pod内部容器创建之前必须先创建pause

Kubernetes(简称k8s)是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了资源调度、部署管理、服务发现、扩容缩容、监控,维护等一整套功能。,努力成为跨主机集群的自动部署、扩展以及运行应用程序容器的平台。 它支持一系列容器工具, 包括Docker等。

所以注意:K8s学习有一个前提条件,需要先掌握docker,如果你没有docker基础的话,那还不能学习 K8s k8s它底层的部署容器的那么容器本来就是docker。

还可以通过B站上这个视频教程了解更多:

容器是将应用和其依赖打包在一起的一个集合。

我们要发布一款应用,一般流程是先在测试服务器上开发,配置环境,测通,然后再到生产环境,配置环境依赖然后部署应用。当我们有大量架构不同的应用需要配置到不同的生产环境,比如公有云、虚拟机,很容易因为环境的不容导致发布失败。

为了解决这个问题,受集装箱的启发,我们将应用和其依赖打包成一个轻量级、独立的、标准的集合,使其可以顺畅地运行在任何一个安装了容器管理系统的服务器中而不需要额外配置环境。这个集合就是容器。

容器使得开发运维人员只需要在发布之初在本地配置一次环境,就可以无差别地在测试环境、开发环境,公有云服务器、虚拟机上运行和维护应用。

Docker是使用Go语言开发的一个开源项目,实现轻量级的操作系统虚拟化解决方案,Docker可以自行搭建和配置开发环境,可以方便地创建使用容器,并且提供镜像仓库。

Doker的核心概念包含:

容器与以容器为基本单位,提供构建发布运行应用的平台。

Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。主要概念有:

参考文档:

https://cloud.tencent.com/developer/article/1171200

https://www.cnblogs.com/SzeCheng/p/6822905.html

http://docs.kubernetes.org.cn/227.html