zoukankan      html  css  js  c++  java
  • Kubernetes 第一章 基础知识

    Kubernetes 第一章 基础知识

    Kubernetes是一个开源容器编排引擎,用于自动化容器化应用程序的部署,扩展和管理。开源项目由Cloud Native Computing Foundation(CNCF托管

    Kubernetes是一个可移植,可扩展的开源平台,用于管理容器化工作负载和服务,有助于声明性配置和自动化。它拥有庞大,快速发展的生态系统。Kubernetes服务,具有广泛的工具和支持可用。

    发展历程

    传统部署时代: 早期,组织在物理服务器上运行应用程序。无法为物理服务器中的应用程序定义资源边界,这会导致资源分配问题。例如,如果在物理服务器上运行多个应用程序,则可能存在一个应用程序占用大部分资源的情况,因此其他应用程序将表现不佳。解决方案是在不同的物理服务器上运行每个应用程序。但是由于资源未得到充分利用,这并没有扩展,组织维护许多物理服务器的成本很高。

    虚拟化部署时代:作为解决方案,引入了虚拟化。它允许您在单个物理服务器的CPU上运行多个虚拟机(VM)。虚拟化允许应用程序在VM之间隔离,并提供一定程度的安全性,因为另一个应用程序无法自由访问一个应用程序的信息。

    虚拟化可以更好地利用物理服务器中的资源,并且可以实现更好的可扩展性,因为可以轻松添加或更新应用程序,降低硬件成本等等。

    每个VM都是在虚拟化硬件之上运行所有组件(包括其自己的操作系统)的完整计算机。

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

    容器越来越受欢迎,因为它们有很多好处。下面列出了一些容器优势:

    • 敏捷应用程序创建和部署:与VM映像使用相比,增加了容器映像创建的简便性和效率。
    • 持续开发,集成和部署:通过快速简便的回滚(由于映像不变性)提供可靠且频繁的容器映像构建和部署。
    • Dev和Ops关注点分离:在构建/发布时而不是部署时创建应用程序容器映像,从而将应用程序与基础架构分离。
    • 可观察性不仅可以显示操作系统级信息和指标,还可以显示应用程序运行状况和其他信号。
    • 开发,测试和生产的环境一致性:在笔记本电脑上运行与在云中运行相同。
    • 云和操作系统分发可移植性:在Ubuntu,RHEL,CoreOS,本地,Google Kubernetes引擎和其他任何地方运行。
    • 以应用程序为中心的管理:提高在虚拟硬件上运行OS的抽象级别,以及使用逻辑资源在OS上运行应用程序。
    • 松散耦合,分布式,弹性,解放的微服务:应用程序被分解为更小的独立部分,可以动态部署和管理 - 而不是在一台大型单一用途机器上运行的单片堆栈。
    • 资源隔离:可预测的应用程序性能。
    • 资源利用:高效率和高密度。

     

    什么是Kubernetes

    此页面是Kubernetes的概述。

    Kubernetes是一个可移植,可扩展的开源平台,用于管理容器化工作负载和服务,有助于声明性配置和自动化。它拥有庞大,快速发展的生态系统。Kubernetes服务,支持和工具广泛可用。

    Kubernetes这个名字源于希腊语,意思是舵手或飞行员。谷歌在2014年开放了Kubernetes项目.Kubernetes建立在谷歌拥有大量运行生产工作量的十五年经验的基础上,结合了社区中的最佳创意和实践。

    回到过去

    让我们来看看为什么Kubernetes如此有用,可以追溯到时间。

    部署演变

    传统部署时代: 早期,组织在物理服务器上运行应用程序。无法为物理服务器中的应用程序定义资源边界,这会导致资源分配问题。例如,如果在物理服务器上运行多个应用程序,则可能存在一个应用程序占用大部分资源的情况,因此其他应用程序将表现不佳。解决方案是在不同的物理服务器上运行每个应用程序。但是由于资源未得到充分利用,这并没有扩展,组织维护许多物理服务器的成本很高。

    虚拟化部署时代:作为解决方案,引入了虚拟化。它允许您在单个物理服务器的CPU上运行多个虚拟机(VM)。虚拟化允许应用程序在VM之间隔离,并提供一定程度的安全性,因为另一个应用程序无法自由访问一个应用程序的信息。

    虚拟化可以更好地利用物理服务器中的资源,并且可以实现更好的可扩展性,因为可以轻松添加或更新应用程序,降低硬件成本等等。

    每个VM都是在虚拟化硬件之上运行所有组件(包括其自己的操作系统)的完整计算机。

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

    容器越来越受欢迎,因为它们有很多好处。下面列出了一些容器优势:

    • 敏捷应用程序创建和部署:与VM映像使用相比,增加了容器映像创建的简便性和效率。
    • 持续开发,集成和部署:通过快速简便的回滚(由于映像不变性)提供可靠且频繁的容器映像构建和部署。
    • Dev和Ops关注点分离:在构建/发布时而不是部署时创建应用程序容器映像,从而将应用程序与基础架构分离。
    • 可观察性不仅可以显示操作系统级信息和指标,还可以显示应用程序运行状况和其他信号。
    • 开发,测试和生产的环境一致性:在笔记本电脑上运行与在云中运行相同。
    • 云和操作系统分发可移植性:在Ubuntu,RHEL,CoreOS,本地,Google Kubernetes引擎和其他任何地方运行。
    • 以应用程序为中心的管理:提高在虚拟硬件上运行OS的抽象级别,以及使用逻辑资源在OS上运行应用程序。
    • 松散耦合,分布式,弹性,解放的微服务:应用程序被分解为更小的独立部分,可以动态部署和管理 - 而不是在一台大型单一用途机器上运行的单片堆栈。
    • 资源隔离:可预测的应用程序性能。
    • 资源利用:高效率和高密度。

    为什么我需要Kubernetes以及它能做什么

    容器是捆绑和运行应用程序的好方法。在生产环境中,您需要管理运行应用程序的容器并确保没有停机时间。例如,如果容器发生故障,则需要重新启动另一个容器。如果系统处理这种行为会不会更容易?

    这就是Kubernetes拯救的方式!Kubernetes为您提供了一个弹性运行分布式系统的框架。它负责您的扩展要求,故障转移,部署模式等。例如,Kubernetes可以轻松管理系统的canary部署。

    Kubernetes为您提供:

    • 服务发现和负载平衡
      Kubernetes可以使用DNS名称或使用自己的IP地址公开容器。如果容器的流量很高,Kubernetes能够负载均衡并分配网络流量,以便部署稳定。
    • 存储编排
      Kubernetes允许您自动安装您选择的存储系统,例如本地存储,公共云提供商等。
    • 自动部署和回滚
      您可以使用Kubernetes描述已部署容器的所需状态,并且可以以受控速率将实际状态更改为所需状态。例如,您可以自动化Kubernetes为您的部署创建新容器,删除现有容器并将所有资源用于新容器。
    • 自动装箱
      Kubernetes允许您指定每个容器需要多少CPU和内存(RAM)。当容器指定了资源请求时,Kubernetes可以更好地决定管理容器的资源。
    • 自我修复
      Kubernetes重新启动失败的容器,替换容器,杀死不响应用户定义的运行状况检查的容器,并且在它们准备好服务之前不会将它们通告给客户端。
    • 密钥和配置管理
      Kubernetes允许您存储和管理敏感信息,例如密码,OAuth令牌和ssh密钥。您可以部署和更新机密和应用程序配置,而无需重建容器映像,也不会在堆栈配置中暴露机密。

    什么Kubernetes不能做的

    Kubernetes不是一个传统的,包罗万象的PaaS(平台即服务)系统。由于Kubernetes在容器级而非硬件级运行,因此它提供了PaaS产品常用的一些通用功能,例如部署,扩展,负载平衡,日志记录和监控。但是,Kubernetes不是单片,而且这些默认解决方案是可选的和可插拔的。Kubernetes提供了构建开发人员平台的构建块,但在重要的地方保留了用户选择和灵活性。

    Kubernetes:

    • 不限制支持的应用程序类型。Kubernetes旨在支持各种各样的工作负载,包括无状态,有状态和数据处理工作负载。如果应用程序可以在容器中运行,那么它应该在Kubernetes上运行得很好。
    • 不部署源代码并且不构建您的应用程序。持续集成,交付和部署(CI / CD)工作流程由组织文化和偏好以及技术要求决定。
    • 不提供应用程序级服务,例如中间件(例如,消息总线),数据处理框架(例如,Spark),数据库(例如,mysql),高速缓存,也不提供集群存储系统(例如,Ceph)作为内置服务。这些组件可以在Kubernetes上运行,和/或可以通过便携式机制(例如Open Service Broker)在Kubernetes上运行的应用程序访问。
    • 不指示记录,监视或警报解决方案。它提供了一些集成作为概念证明,以及收集和导出指标的机制。
    • 不提供或授权配置语言/系统(例如,jsonnet)。它提供了一个声明性API,可以通过任意形式的声明性规范来实现。
    • 不提供或采用任何全面的机器配置,维护,管理或自我修复系统。
    • 此外,Kubernetes不仅仅是一个编排系统。事实上,它消除了编排的需要。业务流程的技术定义是执行已定义的工作流程:首先执行A,然后运行B,然后执行C.相反,Kubernetes由一组独立的,可组合的控制流程组成,这些流程不断地将当前状态驱动到所提供的所需状态。如何从A到C无关紧要。集中控制也不是必需的。这使得系统更易于使用,功能更强大,更强大,更具弹性,并且可扩展

     

     

     

  • 相关阅读:
    多重背包POJ1276不要求恰好装满 poj1014多重背包恰好装满
    哈理工1053完全背包
    求最小公倍数与最大公约数的函数
    Bus Pass ZOJ 2913 BFS 最大中取最小的
    POJ 3624 charm bracelet 01背包 不要求装满
    HavelHakimi定理(判断一个序列是否可图)
    z0j1008Gnome Tetravex
    ZOJ 1136 Multiple BFS 取模 POJ 1465
    01背包 擎天柱 恰好装满 zjut(浙江工业大学OJ) 1355
    zoj 2412 水田灌溉,求连通分支个数
  • 原文地址:https://www.cnblogs.com/zy09/p/11097558.html
Copyright © 2011-2022 走看看