【译者按】译自kubernetes官网文档,主要介绍kubernetes的基本概念以及应用场景,K8s的设计理念,以及K8s能干什么不能干什么。

什么是kubernetes?

Kubernetes是一款应用于集群的,容器自动部署、扩展和管理的开源平台,提供了一种以容器为中心的基础架构。

利用kubernetes,你可以快速高效地响应客户如下请求:
* 应用程序的动态、精准部署
* 应用程序的动态扩展
* 无缝推出新功能
* 按需优化使用硬件资源

我们的目标是提供一套减轻应用程序在公用云或私有云上运行负担的,生态环境的组件和工具。

kubernetes是:

  • 便携的:公有云、私有云、混合云、多云
  • 可扩展的:模块化、即插即用、钩子化、组合化
  • 自动修复的:自动布局、自动重启、自动副本、自动伸缩

Kubernetes项目是2014年由Google公司启动的,Kubernetes在Google公司15年生产环境经验基础上,结合了社区的一些优秀点子和实践而构建的。

准备好开始了吗?

为什么要用容器

寻找一下你用容器理由?

传统方法部署应用程序是利用操作系统的包管理器向主机上安装应用,这种方法的一个弊端是应用程序、配置、支撑库以及生命周期等经常与主机操作系统纠缠在一起,当然你也可以构建虚拟机镜像来实现可控的发布,但是虚拟机比较重量化并且其可移植性也不好。

新方法部署容器则是基于操作系统级别的虚拟化而不是硬件层面的虚拟化实现的,这些容器相互之间以及容器与主机之间是隔离的:它们拥有自己的文件系统,共享运算资源,但它们彼此看不到对方。容器的构建也比虚拟机的构建要容易,由于它们不依赖于运行平台和文件系统,因此可以跨越云和操作系统发行版实现可移植性。

因为容器小而快速,一个应用程序可以打包成容器镜像,这种应用与镜像的一一对应关系,彻底发挥了容器的好处。

  1. 永久的容器镜像可以在应用的开发阶段进行构建,而不是留在部署阶段,因为每个应用并不需要在其生命周期的其他阶段或是在正式交付生产环境时进行修改,这使得开发环境和生产环境高度一致。
  2. 容器相对于虚拟机更透明,便于监控和管理,特别是当容器的进程周期是由管理平台进行管理而不是由隐藏在容器中的超级进程进行管理时。
  3. 一个应用一个容器,对容器的管理相当于对应用的管理。

容器的优点可以归结为:

  • 敏捷地进行应用构建和部署: 相比于虚拟机的管理,容器的管理更为容易和高效。
  • 可连续进行开发、集成和部署:采用快速回滚的方式,使其具备可靠和频繁的容器镜像构建和部署的能力(基于镜像的永久性)。
  • 开发和运维可分开考虑:创建应用程序的容器镜像是在构建/发布阶段而不是在部署阶段,因此将应用程序与基础设施进行了解耦。
  • 可保持开发、测试和生产环境的一致性:在笔记本上运行和放在云端运行效果是一样的。
  • 云端和操作系统的可移植性:在Unbuntu、RHEL、CoreOS、on-prem、Google Container Engine以及其他地方随意运行。
  • 应用为核心的管理:(相比于虚拟机的方式)抽象的层级由在虚拟硬件上运行操作系统提升到在操作系统上利用其逻辑资源直接运行应用程序。
  • 松耦合、弹性、分布式、微服务: 应用被分为小型独立的片,可以动态进行部署和管理,无须在一个大的单一目的的主机上运行胖的程序栈。
  • 资源隔离: 可预测的程序性能。
  • 资源利用最大化: 高性能、高密度。

为什么我需要Kubernetes,它能干什么

Kubernetes可以实现在物理集群或虚拟机集群上调度和运行容器,当然它还可以做得更多。

为了充分发挥容器的优势并将传统的应用部署方式甩开,需要容器的部署与运行独立于基础设施。

然而,当特定的容器不再与特定的主机绑定时,主机为中心的基础设施也不再适用:负载均衡、自动扩展等,因此需要容器为中心的架构,这便是kubernetes所提供的。

Kubernetes满足了应用程序在生产环境中的一些通用需求,例如:

  • 协同定位的辅助进程,利用复杂应用部署,并且还保持了单容器单应用的模型。
  • 挂载存储系统
  • 分布式加密管理
  • 应用健康状况检查
  • 应用实例副本
  • 水平自动扩展
  • 命名与发现
  • 负载均衡
  • 滚动升级
  • 资源监控
  • 日志的获取和注入
  • 支持自省和调试以及,
  • 认证和授权

上述功能提供了平台即服务(PaaS)的简易性以及基础设施即服务(IaaS)的灵活性,提升了跨基础设施移植的方便性。

想得到更多细节内容,参加用户指南

为什么如何Kubernetes成为了一个平台

尽管Kubernetes提供了很多功能,但总有新的应用场景需要新的特性,应用相关的工作流可流水线化以加速开发速度,最初设计的Ad hoc机制经常在扩展时需要更为灵活的自动化。这也是为什么Kubernetes被设计成为一个构建组件和工具生态的平台,使得应用的部署、扩展和管理更为容易。

标签授权用户可以按需组织他们的资源,标注功能能够使用户对特定的资源添加一些定制信息,以方便其工作流的实现,并且为管理工具的状态检查提供了一种解决方法。

此外,Kubernetes控制面板是基于API进行构建的,这些API对于开发者和用户同样适用,用户可以基于此写出自己的控制器、调度器等,甚至可以有针对性的用自己的API写一些通用的命令行工具http://kubernetes.io/docs/user-guide/kubectl-overview/)

这种设计使得用户可以在Kubernetes基础上构建一些其他的系统。

Kubernetes并不是:

Kubernetes并不是传统意义包打天下的Paas系统,我们在一些重要的方面保留了用户选择的权利。

  • Kubernetes并不限制支持的应用类型,也不指定应用的框架(例如Wildfly),不限制支持的语言环境(例如:Java, Python, Ruby),并不迎合12-factor application,也不是区分“应用”和“服务”。Kubernetes目的在于支持尽可能多样的负载,包括有状态、无状态、数据处理型的负载,只要应用程序可以运行在容器中,就可以很好地跑在Kubernetes。
  • Kubernetes不提供中间件(例如消息总线)、数据处理框架(如Spark)、数据库(如mysql),也不提供集群存储系统(如Ceph),这些应用运行在Kubernetes上。
  • Kubernetes没有点击即部署的服务前端。
  • Kubernetes并不提供源代码-镜像的处理空间,它并不部署源代码也不会构建你的应用,持续集成(Continuous Integration: CI)工作流要求用户和项目分别有自己的需求和选项,所以我们支持分层CI工作流,但是并不指定工作流该怎么工作。
  • Kubernetes允许用户自由选择日志、监视和告警系统。(尽管作为概念验证也提供了相应的集成)
  • Kubernetes并不提供也不指定一种综合的应用配置语言/系统(如jsonnet)。
  • Kubernetes并不提供也不采用任何综合的机器配置、维护、管理或自我修复系统。

另一方面,很多PaaS系统运行在Kubernetes上,例如Openshift、Deis以及Gondor,你也可以定制你自己的Paas,整合一个CI系统,或者仅用Kubernetes也挺好,将容器镜像拿来直接部署到Kubernetes上。

由于Kubernetes工作在应用层而不是仅在硬件层,它提供了一些一般Paas所能提供的通用特性,比如部署、扩展、负载均衡、日志和监控等,但Kubernetes并非一个整体,这些功能都是可选和可插拔的。

此外,Kubernetes并不是一个业务流程系统,它消除了业务流程的需要,业务流程是指按照预定义的工作流执行任务,先A再B再C。相反,Kubernetes包含了一套独立、可组合的控制处理来连续驱动当前状态向所需状态转换,它不关心你怎么从A到C的。中央控制也并不需要,这种方法更像舞蹈,这使得系统更易于使用,也更强大、鲁棒、弹性和可扩展。

Kubernetes是什么意思?K8s?

Kubernetes一词源自希腊语,意思是舵手或飞行员,并且是总督或控制论的根源。(The name Kubernetes originates from Greek, meaning “helmsman” or “pilot”, and is the root of “governor” and “cybernetic”)。K8s是将中间的8个字母用8来简写的结果。

Kubernetes是什么?相关推荐

  1. Kubernetes 中 设置pod不部署在同一台节点上

    在k8s中,节点的调度主要由亲和性和污点来进行控制的.   而在亲和性部分由分为了节点亲和性和节点反亲和性.   节点亲和性是指在pod部署时,尽量(软策略)或者必须满足(硬策略)部署在某些节点上. ...

  2. 【CentOS】利用Kubeadm部署Kubernetes (K8s)

    [CentOS]利用Kubeadm部署Kubernetes (K8s)[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体实验流程 1 系统准 ...

  3. 【Kubernetes】如何使用Kubeadm部署K8S集群

    一 . 准备机器 本次环境采用华为云ECS弹性云服务器部署(也可以使用VMware) vm01(2V4G): Ubuntu_18.04作为K8S master节点 vm02(1V1G): Ubuntu ...

  4. 自定义Kubernetes调度程序来编排高可用性应用程序

    自定义Kubernetes调度程序来编排高可用性应用程序 只要愿意遵守规则,在Kubernetes上进行部署和乘飞机旅行就可以很愉快.通常,事情会"正常工作".但是,如果有兴趣与必 ...

  5. Kubernetes 网络排错指南

    本文介绍各种常见的网络问题以及排错方法,包括 Pod 访问异常.Service 访问异常以及网络安全策略异常等. 说到 Kubernetes 的网络,其实无非就是以下三种情况之一 Pod 访问容器外部 ...

  6. 使用Netsil监控Kubernetes上的微服务

    ubernetes是容器编排和调度领域的王者,它击败了竞争对手Docker Swarm和Apache Mesos,开启了闪耀的未来,微服务可以自修复,可以自动扩展,可以跨zone,region甚至跨云 ...

  7. e.V4p.C0/index.php,php-fpm进程在Kubernetes中接收SIGKILL信号

    我已经在其中配置了Nginx,PHP和php-fpm创建了ubuntu docker镜像 . 当我在Docker实例上运行它时工作正常 . 但是当我在kubernetes中运行相同的图像时,php-f ...

  8. kubectl常用命令_《蹲坑学kubernetes》之十五:kubectl命令详解

    kubectl用于运行Kubernetes集群命令的管理工具.本章节主要讲了kubectl基本语法和使用方法.在以后的实际工作中,使用越来越多,也会越来越熟悉. 1.kubectl语法 kubectl ...

  9. K8S - Kubernetes简介

    Kubernetes Kubernetes(简称K8s,用8代替8个字符"ubernete")是Google开源的一个容器编排引擎,支持自动化部署.大规模可伸缩.应用容器化管理. ...

  10. Kubernetes 架构(下)【转】

    上一节我们讨论了 Kubernetes 架构 Master 上运行的服务,本节讨论 Node 节点. Node 是 Pod 运行的地方,Kubernetes 支持 Docker.rkt 等容器 Run ...

最新文章

  1. QS最新世界大学排名发布,清华北大获史上最高名次
  2. 线程的同步之Synchronized在单例模式中的应用
  3. Android中Context
  4. 同步通信和异步通信的区别
  5. dav1d 0.5.1:更快!
  6. android service交互,Android Activity与Service的交互方式
  7. oc 画一个圆弧_用SolidWorks画的塑料衣架,要用到不少让人头疼的曲线
  8. 逻辑回归分类python实例_Python逻辑回归原理及实际案例应用
  9. 《Go程序设计语言》- 第13章:低级编程
  10. Android统计图控件之圆饼图
  11. 记 2022年11月5日 信息安全工程师考试
  12. doc文件转换为docx文件
  13. SpringCloud 之 注册中心
  14. (筆記) 否定疑問句的回答 (Japanese)
  15. 厦门商标注册网商标产权关系
  16. setTimeout 实现 setInterval
  17. 电视盒子显示服务器未连接,你家的电视盒子直播总是卡,解决方法全都在这里...
  18. 黑镜.潘达斯奈基 高清中字
  19. 【无标题】OSPF协议及ACL的使用及配置
  20. 手机设备唤醒计算机,计算机自行唤醒,但唤醒源未知

热门文章

  1. Ylmf OS4开启3D
  2. linux桌面壁纸目录,酷炫!推荐一款适用于Linux的壁纸程序
  3. FPGA经验谈系列文章——FPGA开发方向以及算法开发模型
  4. 全志R16 checklist(PCB部分)
  5. 【Spring】面向切面编程详解(AOP)
  6. abaqus流固耦合
  7. 我眼中未来的计算机资料,我心目中未来的计算机
  8. mendeley中如何重复引用同一篇参考文献_免费文献管理器 Mendeley,其实比你想象的好用!...
  9. mtcnn系列-2.数据集讲解
  10. android上播放按键声音方法