一、简介

  1、什么是Kubernetes

    简称K8s,用8代替8个字符“ubernerte”而成的速写,K8s是一个开源的容器编排平台,它是一个跨主机集群的开源容器调度平台,用于管理云平台中多个主机上的容器化的应用,它可以自动化应用容器的部署、扩展、的操作,k8s的目标是让部署容器化的应用简单并且高效,构建一个软件和工具的生态系统,以减轻企业在公有云或私有云运行应用程序的负担,;K8s提供了应用部署、规划,更新,维护的一种机制。

    K8s项目由Google公司在2014年启动,Kubernetes建立在google公司超过十余年阿运维经验基础之上,Google所有的应用都运行在容器上,再与社区中最好的想法和实践相结合,也许它是现在最受欢迎的容器平台。

  2、使用K8s可以快速高效响应客户的需求:

    快速、可预测地部署您的应用程序

    拥有即使扩展应用程序的能力

    不影响现有业务的情况下,无缝地发布新功能

    优化了硬件资源,降低成本

  3、K8s具有如下特点:

    便捷性:无论公有云、私有云、混合云还是多云架构都全面支持

    可扩展性:它是模块化、可插拔、可挂载、可组合,支持各种形式的扩展

    自修复:它可以自保持应用状态、可自重启、自复制、自缩放的,通过声明式语法提供了强大的自修复能力

  4、三个时代说明,K8s为什么如此有用

    

    传统部署时代:早期,组织都是再物理服务器上运行应用程序,无法位物理服务器中的应用定义资源边界,着会导致资源分配问题。比如,如果再物理服务器上运行多个应用程序,可能会出现一个应用占用大部分资源,其他应用程序的性能就将下降,解决方案往往是在不同服务器上运行每个应用程序,但这并没有随着资源利用不足而扩展资源,并且维护诸多物理服务器成本也很高。

    虚拟化部署时代:为了解决上面提到的资源分配问题,引入了虚拟化,它允许在单个物理服务器的CPU上允许多个虚拟机(VM)。虚拟化允许应用程序在VM之间隔离,并提供安全级别,因为一个应用程序的信息不能被另一个应用程序自由访问。

            虚拟化可以更好的利用物理服务器中资源,并可以实现更好的可伸缩性,因为可以轻松地添加或更新应用程序,降低硬件成本等等。借助虚拟化,您可以将一组物理资源呈现位一组一次性虚拟机。

            每个VM是一台完整的计算机,在虚拟化硬件上运行所有组件,包括其自己的操作系统

    容器部署时代:容器类似VM,但是他们具有轻松的隔离属性,可以在应用程序之间共享操作系统。因此,容器被认为是轻量的,与VM相似,容器具有自己的文件系统,CPU,内存,进程空间等。由于他们与基础架构分离,因此可以跨云和OS分发进行移植

  5、补充使用容器的好处

    敏捷的应用程序创建和部署:与使用VM镜像相比,容器镜像创建的简便性和效率更高。

    持续的开发,集成和部署:通过快速简单的回滚(镜像不可更改),提供可靠且频繁的容器镜像构建和部署。 

    开发和运营的关注点分离:在构建/发布时,而不时在部署时创建应用程序容器镜像,从而将应用程序与基础架构分离。

    可观察性不仅可以显示操作系统级别的信息和指标,还可以显示应用程序的运行状况和其他信号。

    跨开发,测试和生成环境一致性:在便捷式计算机上与在云中相同的运行。

    云和操作系统分发的可移植性:可在Ubuntu,RHEL,coreOS,本地,google kubernetes engine和其他任何地方运行。

    松散耦合,分布式,弹性,解放的微服务:应用程序被分解成较小的独立部分,并且可以动态部署和管理,而不时在一台大型单机上运行的整体堆栈。

    资源隔离:可预测的应用程序性能。

    资源利用:高效率和高密度。

  6、K8s提供了哪些功能

    服务发现和负载均衡

      K8s可以使用DNS名称或使用其自己的IP地址公开容器。如果到容器的流量很高,K8s可以负载均衡分配流量,使部署稳定

    存储编排

      允许自动挂载选择的存储系统,例如本地存储,公有云提供商等。

    自动部署和回滚

      可以使用Kunbernetes描述已经部署容器的所需状态,并可以以控制速率将实际状态更改所需状态。比如可以自动化Kubernetes来位您的部署创建新容器,删除现有容器并将他们的所有资源用于新容器

    自动包装

      一个Kubernetes集群,可以用于容器化任务,可以指定每个容器需要多少CPU和内存,使其充分利用资源。   

    自检

      Kubernetes可以重新启动失败的容器,替换容器,杀死对用户定义的运行状态检查没有响应的容器,并且在准备好服务之前不会将其通告给客户端

    加密管理

      Kubernetes允许存储和管理敏感信息,如密码,auth令牌和ssh密钥,可以部署和更新机密的应用程序配置,而无需重新构建容器镜像,也无需在堆栈配置中公开。

  7、kubernetes不是什么

    不是一个传统意义上包罗万象的Paas系统,它保留用户的自由选择,比如:

      不限制支持的应用程序类型,不限制应用程序框架,不限制支持的语言(java/python/ruby)支持多种多样的工作负载,包括无状态,有状态和数据处理工作负载。

      不提供内置服务的中间件(例如:消息中间件)、数据处理框架(例如:spark)、数据库(例如:mysql)和分布式存储(例如Ceph),这些应用可以允许在K8s上。

      没有提供点击即部署的服务市场。

      源代码到镜像都是开源的,它不部署源代码且不构建您的应用程序。持续集成,交付和部署(CI/CD)工作流取决各公司组织的文化和偏好。

      允许用户选择其他的日志记录,监控和告警系统,(它也提供一些集成作为概念证明)。

      不提供也不要求应用程序配置语言/系统,提供一个声明性API,可以通过任意形式的声明性规范。

      不提供也不采用任何全面的机器配置,维护,管理或自动修复系统。

     另外许多Paas系统运行在K8s上面,比如openshift,deis,eldarion,可以自定义自己的paas与自己选择的CI系统集成,或与K8s一起使用,将容器镜像部署到K8s上。

    由于K8s在应用级别而不是仅仅在硬件级别运行,因此它提供Paas产品通用的一些功能,如:部署、扩展、负载均衡、日志记录、监控等。但是K8s不是单一的,默认是可选和可插拔的。

    K8s也不仅仅是一个编排系统,它消除了编排的需要,编排代表工作流的执行为从A到B,然后到C,相反,K8s是包括一套独立、可组合的控制过程,通过声明式语法使其连续地朝向期望状态驱动当前状态,不需要告诉它具体的从A到C的过程,只需要告诉到C的状态即可,也不需要集中控制,这使得系统更易于使用,并且强大,更具有弹性和扩展性。

  

二、K8s架构

  1、整体架构

三、常见组件

    请见图示1:分别包含1、2、3、4

        

  1、master:

    Kubernetes管理节点

  2、apiserver:

    提供接口服务,用户通过apiserver来管理整个容器集群平台。API Server负责和Etcd交互(其他组件不会直接操作etcd,只有API Server这么做),整个Kubernetes集群的所有交互都是以API server为核心的。如:1、所有对集群进行的查询和管理都要通过API来进行;2、所有模块之间并不会互相调用,而是通过和API Server打交道来完成自己那部分的工作、API Server提供的验证和授权保证了整个集群的安全

  3、scheduler Kubernetes 调度服务:

  4、Replication Controllers 复制:

     保证pod的高可用

     Replication Controller是Kubernetes系统中最有用的功能,实现复制多个Pod副本,往往一个应用需要多个Pod来支撑,并且可以保证其复制的副本数,即使副本所调度分配的宿主机出现异常,通过Replication Controller 可以保证在其它宿主机启用同等数量的Pod。Replication Controller 可以通过repcon模板来创建多个Pod副本,同样也可以直接复制已存在Pod,需要通过Label selector来关联

    请见图示2:包含5、6、7、8

  5、minion:

    真正运行容器container的物理机。Kubernets中需要很多minion集群,来提供运算

  6、container:

    容器,可以运行服务和程序

  7、Pod:

    Kubernetes系统中,调度的最小颗粒不是单纯的容器,而是抽象成一个Pod,Pod是一个可以被创建、销毁、调度、管理的最小部署单元。pod中可以包括一个或一组容器。

      pod:豆荚的意思,如下图示理解pod及容器实例:

  8、Kube_prox 代理:

    做端口转发,相当于LVS-NAT模式中的复制调度器

    Proxy解决了同一宿主机,相同服务端口冲突的问题,还提供了对外服务的能力,Proxy后端使用了随机、轮询负载均衡算法。

      

  9、etcd:

    存储Kubernetes的配置信息,可以理解为K8s数据库,存储这K8s容器平台所有节点、pods、网络等信息

  10、services:

    services是Kunbernetes最外围的单元,通过虚拟一个访问IP及服务端口,可以访问我们定义好的Pod资源。目前的版本是通过iptables的nat转发来实现,钻发的目标端口为Kube_proxy生成的随机端口。

  11、Lables标签:

    Lables是用于区分Pod、Service、Replication Controller的key/value键值对,仅使用在Pod、Service、Replication Controller之间的关系识别,但对这些单元本身进行操作时得使用name标签。

  12、Deployment部署

      Kubernetes Deployment用于更新Pod和Replica Set(下一代的Replication Controller)的方法,可以在Deployment对象中只描述你所期望的理想专题(预期运行状态),Deployment控制器会将现在的实际状态转换成期望的状态。例如,将所有的webapp:v1.0.9升级成webapp:v1.1.0,只需要创建Deployment,Kubernetes会按照Deployment自动进行升级,通过Deployment可以用来创建新的资源

      Deployment可以帮我们实现无人值守的上学,大大降低我们上线的复杂和风险

  13、Kubelet命令

      Kubelet和Kube-proxy都运行在minion节点上

      Kube-proxy实现Kubernetes网络相关内容

      Kubelet命令管理pod、pod中容器机让其的镜像和卷等信息

  14、总结:各组件之间的关系

    1)、kubernetes由一个master和多个minion组成,master通过api提供服务接收kubectl的请求来调度管理集群,kubectl是k8s平台的一个管理命令

    2)、Replication controller定义了多个pod或者容器需要运行,如果当前集群中运行的pod或容器达不到配置的数量,replication controller会调度容器在多个minion上运行,保证集群中的pod数量

    3)、service则定义真实对外提供的服务,一个service会对应后端运行的多个container。

    4)、Kubernetes是一个管理平台,minion上的kube-proxy拥有提供真实服务公网IP,客户端访问K8S中提供的服务,是直接访问到kube-proxy上的。

    5)、在kubernetes中pod是一个基本单元,一个pod可以是提供相同功能的多个container,这些容器会被部署在同一个minion上,minion是运行Kubelet中容器的物理机,minion介绍master的指令创建pod或者容器。

参考:互联网内容

转载请注明出处:https://www.cnblogs.com/zhangxingeng/p/11670786.html

 

Kubernetes1-K8s的简单介绍的更多相关文章

  1. K8S Kubernetes 简单介绍 转自 http://time-track.cn/kubernetes-trial.html Kubernetes初体验

    这段时间学习了一下 git jenkins docker  最近也在看  Kubernetes  感觉写得很赞  也是对自己对于K8S 有了进一步得理解  感谢 倪 大神得Blog 也希望看到这篇Bl ...

  2. k8s 挂载卷介绍(四)

    kubernetes关于pod挂载卷的知识 首先要知道卷是pod资源的属性,pv,pvc是单独的资源.pod 资源的volumes属性有多种type,其中就包含有挂载pvc的类型.这也帮我理清了之间的 ...

  3. [原创]关于mybatis中一级缓存和二级缓存的简单介绍

    关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候 ...

  4. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍

    一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...

  5. 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍

    一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ...

  6. yii2的权限管理系统RBAC简单介绍

    这里有几个概念 权限: 指用户是否可以执行哪些操作,如:编辑.发布.查看回帖 角色 比如:VIP用户组, 高级会员组,中级会员组,初级会员组 VIP用户组:发帖.回帖.删帖.浏览权限 高级会员组:发帖 ...

  7. angular1.x的简单介绍(二)

    首先还是要强调一下DI,DI(Denpendency Injection)伸手获得,主要解决模块间的耦合关系.那么模块是又什么组成的呢?在我看来,模块的最小单位是类,多个类的组合就是模块.关于在根模块 ...

  8. Linux的简单介绍和常用命令的介绍

    Linux的简单介绍和常用命令的介绍 本说明以Ubuntu系统为例 Ubuntu系统的安装自行百度,或者参考http://www.cnblogs.com/CoderJYF/p/6091068.html ...

  9. iOS-iOS开发简单介绍

    概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的 ...

  10. iOS开发多线程篇—多线程简单介绍

    iOS开发多线程篇—多线程简单介绍 一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcod ...

随机推荐

  1. 如何基于String实现锁?

    在某些时候,我们可能想基于字符串做一些事情,比如:针对同一用户的并发同步操作,使用锁字符串的方式实现比较合理.因为只有在相同字符串的情况下,并发操作才是不被允许的. 因为String 类型的变量赋值是 ...

  2. Elasticsearch(9) --- 聚合查询(Bucket聚合)

    Elasticsearch(9) --- 聚合查询(Bucket聚合) 上一篇讲了Elasticsearch聚合查询中的Metric聚合:Elasticsearch(8) --- 聚合查询(Metri ...

  3. .net core 发布单个exe 文件, 并优化缩小大小

    最新版的.net core 3.0 可以通过命令行发布为exe文件, 操作步骤如下: 在项目目录下打开控制台: 输入命令: dotnet publish -r win-x64 -c Release - ...

  4. 生产环境轻量级dns服务器dnsmasq搭建文档

    dnsmasq搭建文档 一.生产环境域名解析问题 之前生产环境设备较少,是通过维护master(192.168.1.1)设备的hosts文件实现的.每次新增设备后,需要在master的hosts文件中 ...

  5. event.stopPropagation()、event.preventDefault()与return false的区别

    做小demo时经常用到return false来取消默认事件,但一直不是很懂它和preventDefault()等的区别,今天查了查文档和大神们的博客,在这里对相关知识点做一个总结 首先开门见山,总结 ...

  6. 工厂模式(整理自李建忠<C++设计模式>视频)

    整理自李建忠<C++设计模式>视频 一.导入:"对象创建"模式和工厂模式 工厂模式只是该模式下的一种. 二.举例说明 有这样一个场景:需要在MainForm中设计一个按 ...

  7. 用 CocosCreator 快速开发推箱子游戏

    游戏总共分为4个功能模块: - 开始游戏(menuLayer) - 关卡选择(levelLayer) - 游戏(gameLayer) - 游戏结算(gameOverLayer) Creator内组件效 ...

  8. 小记redis持久化的机制

    刚学redis,就经常看到两种持久化机制在眼头晃,RDB和AOF,然而当时学的还知道这两东西是啥玩意,过段时间又忘了,中文记忆这两种概念总感觉有些别扭.今心血来潮翻看redis的配置文件,豁然开朗,仿 ...

  9. mysql创建用户和权限管理

    一 权限管理 我们知道我们的最高权限管理者是root用户,它拥有着最高的权限操作.包括select.update.delete.update.grant等操作.那么一般情况在公司之后DBA工程师会创建 ...

  10. Laravel 5 中文文档 CHM 版

    使用 Microsoft HTML Help Workshop 做了一个 Laravel 5.4 中文文档的 CHM 版本. 百度网盘下载地址:http://pan.baidu.com/s/1dFN2 ...