k8s-No.1-概述与架构
本章目录
- k8s概述
- k8s系统架构
- k8s工作流程图
一 概述
- k8s是什么
k8s是谷歌公司基于内部容器管理系统borg开源出的一个容器集群管理工具,它是用go语言开发,提供了容器的应用部署,规划,更新,维护等功能。
相信你读这篇文章之前,你已经有了docker基础。并且对k8s已经有个大概的理解,所以关于k8s的背景知识不做过多赘婿,下面我们直接上干货
二 系统架构
- k8s系统架构
学习新知识之前,一定要先对知识的整体框架有个大概的了解,为了更加生动形象的理解k8s框架,我在网上找了一张图(图片出处见水印),我们日后的
学习也会按照架构图上的知识点一点一点的铺散开来
下面我们将架构图逐一拆解
- k8s操作对象
pod,service,replication controller三种就是我们日常经常操作的三类对象,当然,在k8s中,不仅仅只有这几种类型的资源,还有namespace,secret,node,
ingress,configmap等等
下面我们简单的对这三种资源做下介绍
- pod
pod在英文中的意思是豆荚,我们可以把容器想象成一个个的豆子,pod就是包裹住这些豆子的豆荚
Pod是K8s集群中所有业务类型的基础,也是k8s集群中可操作的最小单元。可以看作运行在K8s集群中的小机器人,不同类型的业务就需要不同类型的小机器人去执行。目前
K8s中的业务主要可以分为长期伺服型(long-running) 、批处理型(batch)、节点后台支撑型(node-daemon)和有状态应用 型(stateful application);分别对应的小机
器人控制器为Deployment、Job、DaemonSet和PetSet(现在不叫petset而叫statefulset)。
- replication controller
RC是K8s集群中最早的保证Pod高可用的API对象。比如有这样一个场景,你要启动俩个或者更多相同功能的pod容器来提供服务,我们总不能手动的一个个的去启动这些pod,然
后再去手动管理他吧?这种做法明显很low,k8s早已经为我们做好一个pod管理器,叫做replication controller,专门为我们管理那些带有副本的pod。replication controller通过监控
运行中的Pod来保证集群中运行指定数目的Pod副本。指定的数目可以是多个也可以是1个;少于指定数目,RC就会启动运行新的Pod副本;多于指定数目,RC就会杀死多余的Pod
副本,控制器在做这些操作的时候完全不用我们去人工参与,他已经自己为我们做好这一切。即使在指定数目为1的情况下,通过RC运行Pod也比直接运行Pod更明智,因为RC也可
以发挥它高可用的能力,保证永远有1个Pod在运行。RC是K8s较早期的技术概念,只适用于长期伺服型的业务类型,比如控制pod提供高可用的Web服务。当前RS已经取代了历史
版本的RC,RS是最新一代的RC控制器,他提供了更多的匹配模式,而且RS一般也不单独使用,而是作为deployment的理想化参数去使用
- service
service一种抽象的服务,RC、RS和Deployment只是保证了支撑服务的微服务Pod的数量,但是没有解决如何访问这些服务的问题。一个Pod
只是一个运行服务的实例,随时可能在一个节点上停止,在另一个节点以一个新的IP启动一个新的Pod,因此不能以确定的IP和端口号提供服务。
要稳定地提供服务需要服务发现和负载均衡能力。服务发现完成的工作,是针对客户端访问的服务,找到对应的的后端服务实例。在K8s集群中,
客户端需要访问的服务就是Service对象。每个Service会对应一个集群内部有效的虚拟IP,集群内部通过虚拟IP访问一个服务。在K8s集群中微服
务的负载均衡是由Kube-proxy实现的。Kube-proxy是K8s集群内部的负载均衡器。它是一个分布式代理服务器,在K8s的每个节点上都有一个;这
一设计体现了它的伸缩性优势,需要访问服务的节点越多,提供负载均衡能力的Kube-proxy就越多,高可用节点也随之增多。与之相比,我们平时
在服务器端做个反向代理做负载均衡,还要进一步解决反向代理的负载均衡和高可用问题。
2. 功能组件
在k8s集群中,共有俩部分,分为master节点与node节点,master节点还有node节点都对应一台实体服务器或者虚拟机
上面的功能组建遗漏了俩个最重要的部分,所以我们给他补上
针对以上组件,我们做一下简要说明
apiserve:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
controller manager:维护集群的状态,比如故障检测、自动扩展、滚动更新等;
scheduler:负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
flannel: 负责让不同机器上面pod跨节点进行网络通信
etcd: 提供强一致型的数据库与服务发现,在k8s集群中,网络配置还有资源对象的信息都存储在ETCD中
三 工作流程
上面的流程图意在通过yaml文件创建一个deployment资源,先画个图说一下pod,replicaset,deployment三者关系,不然下面的流程解释初学者看不懂
因为deployment包含replicaset包含pod,所以创建deployment的时候会连续创建三种资源
1、准备好一个包含应用程序的Deployment的yml文件,然后通过kubectl客户端工具发送给ApiServer,ApiServer接收到客户端的请求并将资源内容存储到数据库(etcd)中。
2、deloyment Controlle监控apiserver状态发生了改变,知道了apiserver需要创建一个deployment资源
3、deployment controller 根据apiserver的状态信息,想要去创建一个ReplicaSet,此时apiserver检测到了deployment controller的期望状态的变化,再次记录到数据库etcd中
4、replicaset 监控到了apiserver状态发生了改变,知道了apiserver需要创建一个replicaset
5、replicaset controller根据apiserver的状态信息,想要去创建一个pod,此时apiserver检测到了replicaset controller的期望状态的变化,再次记录到数据库etcd中,此时
最低级别的pod的创建准备工作也完成,此时实际上pod,replicaset,deployment三种资源都没有实际被创建,刚才所说的创建类似于一种演习
6、Scheduler再次检查数据库变化,发现尚未被分配到具体执行节点(node)的Pod
7、根据一组相关规则将pod分配到可以运行它们的节点上,并更新数据库,记录pod分配情况。
8、Kubelete监控数据库变化,此时kubelet知道自己该创建pod了,但是它本身并没有创建容器的功能,所以它通知了有创建容器功能的docker引擎,并把创建的约束信息
(如镜像名称,镜像源等)传递给docker引擎
9、docker引擎根据收到的信息开始拉取镜像,创建容器,此时,deployment才算真正创建成功
四 小结
以上就是k8s的简单介绍,后续我们将更深入的讲解每一个组件与功能
文中如有错误之处,请大家向我及时指出,谢谢
k8s-No.1-概述与架构的更多相关文章
- Kubernetes K8S之kube-prometheus概述与部署
Kubernetes K8S之kube-prometheus概述与部署 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7. ...
- TOGAF架构内容框架之概述及架构工作产品分类
TOGAF架构内容框架之概述及架构工作产品分类 在TOGAF 9之前的版本中,TOGAF的重点主要集中在企业架构开发方法方面,用于指导其使用者如何在各自的组织中对企业架构进行创建和维护,而对于企业架构 ...
- 大型互联网架构概述 关于架构的架构目标 典型实现 DNS CDN LB WEB APP SOA MQ CACHE STORAGE
大型互联网架构概述 目录 架构目标 典型实现 DNS CDN LB WEB APP SOA MQ CACHE STORAGE 本文旨在简单介绍大型互联网的架构和核心组件实现原理. 理论上讲,从安装配置 ...
- 阿里P8架构师深度概述分布式架构
简介 作为一名架构师,我们要专业,要能看懂代码,及时光着臂膀去机房,也能独挡一面!及时同事搞不定问题,或者撂挑子,你也能给老大一个坚定的眼神:不怕,有我在!还能在会议室上滔滔不绝,如若无人,让不懂技术 ...
- Java 异常(一) 异常概述及其架构
Java 异常(一) 异常概述及其架构 一.异常概述 (一).概述 Java异常是Java提供的一种识别及响应错误的一致性机制.异常指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常 ...
- 基于k8s的集群稳定架构-转载
基于k8s的集群稳定架构-转载 前言 我司的集群时刻处于崩溃的边缘,通过近三个月的掌握,发现我司的集群不稳定的原因有以下几点: 1.发版流程不稳定 2.缺少监控平台[最重要的原因] 3.缺少日志系统 ...
- 001-docker概述、架构、window安装、基本测试
一.概述 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流 ...
- 基于k8s的集群稳定架构
前言 我司的集群时刻处于崩溃的边缘,通过近三个月的掌握,发现我司的集群不稳定的原因有以下几点: 1.发版流程不稳定 2.缺少监控平台[最重要的原因] 3.缺少日志系统 4.极度缺少有关操作文档 5.请 ...
- 企业架构研究总结(29)——TOGAF架构内容框架之概述及架构工作产品分类
在TOGAF 9之前的版本中,TOGAF的重点主要集中在企业架构开发方法方面,用于指导其使用者如何在各自的组织中对企业架构进行创建和维护,而对于企业架构的具体内容并没有相关的论述,因而针对早期TOGA ...
- kubernetes-整体概述和架构
1.Kubernetes是什么 Kubernetes是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务.通过Kubernetes能够进行应用的自动化部署和扩缩容.在Kubernetes中,会将组 ...
随机推荐
- es2015 解构赋值
解构赋值语法是一个 Javascript 表达式,这使得可以将值从数组或属性从对象提取到不同的变量中.
- Java面试题复习笔记(框架)
1.什么是框架? 为解决一个开放性问题而设计的具有一定约束性的支撑结构,再次结构上可以根据具体问题扩展,安插更多的组成部分,从而更迅速和方便地构建完整解决问题的方案. 2.MVC模式? 用一种业务逻辑 ...
- javascript 路径读取
//获取当前文件全路径 <script language="javascript"> alert(window.location.href); alert(window ...
- 小程序 -- ui布局
Flex布局 相对定位和绝对定位 弹性盒模型 display flex-direction flex-wrap :nowrap(不换行)/ wrap(换行,第一行在上方)/ wrap-reverse ...
- Codeforces 1009G Allowed Letters 最大流转最小割 sosdp
Allowed Letters 最直观的想法是贪心取, 然后网络流取check可不可行, 然后T了. 想到最大流可以等于最小割, 那么我们状压枚举字符代表的6个点连向汇点是否断掉, 然后再枚举64个本 ...
- 编译linux内核前用make menuconfig设置时 Unable to find the ncurses ibraries的解决办法
今天在更新CentOS或者Ubuntu的内核时,执行make menuconfig可能看如这样的错误: *** Unable to find the ncurses libraries or the ...
- 思维导图工具XMind
思维导图工具XMind XMind简单介绍 官网地址:https://www.xmind.cn/ XMind 是一个全功能的思维导图和头脑风暴软件,为激发灵感和创意而生.作为一款有效提升工作和生活效率 ...
- 入门级----黑盒测试、白盒测试、手工测试、自动化测试、探索性测试、单元测试、性能测试、数据库性能、压力测试、安全性测试、SQL注入、缓冲区溢出、环境测试
黑盒测试 黑盒测试把产品软件当成是一个黑箱子,只有出口和入口,测试过程中只要知道往黑盒中输入什么东西,知道黑盒会出来什么结果就可以了,不需要了解黑箱子里面是如果做的. 即测试人员不用费神去理解软件里面 ...
- 最近公共祖先问题(LCA)的几种实现方式
LCA也是很经典的内容了,我这个蒟蒻居然今天才开始弄QAQ 我太弱啦! 照例先上定义——————转自维基百科 在图论和计算机科学中,最近公共祖先是指在一个树或者有向无环图中同时拥有v和w作为后代的最深 ...
- centos官网下载地址
CentOS 7官方下载地址:https://www.centos.org/download/ 源自博友的博客:https://blog.csdn.net/yf9595/article/details ...