kubernetes

  1. 概念
    1. k8s是什么
    2. 特点
    3. 为什么要使用容器
    4. 能做什么
    5. 不是什么

概念

k8s是什么

kubernetes 的名字来自希腊语,意思是“舵手”或者“领航员”。k8s是将kubernetes 中间8个字母ubernete替换为8的缩写。

kubernetes 是容器集群管理系统,是一个开源的平台,可以实现容器集群化的自动化部署、自动扩缩容、维护等功能。通过kubernetes 你可以实现:

  1. 快速部署应用
  2. 快速扩展应用
  3. 无缝对接新的应用功能
  4. 节省资源,优化硬件资源的使用

特点

  1. 可移植: 支持公有云、私有云、混合云、多重云(multi-cloud)
  2. 可扩展: 模块化、插件化、可挂载、可组合
  3. 自动化: 自动化部署,自动重启,自动复制,自动伸缩、扩展

为什么要使用容器

传统的应用部署方式是通过脚本或者插件来安装应用。这样的缺点是应用的运运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于升级、回滚等操作。当然也可以使用创建虚拟机的方式来实现某些功能,但是虚拟机是非常重,并不具有可移植性。

新的方式是通过部署容器的方式来实现,每个容器之间相互隔离,每一个容器都有自己的文件系统,容器之间的进程互不影响,能区分计算资源。相对虚拟机,容器能够快速部署。由于容器与底层设施、机器文件之间是解耦的,所以能在不同云、不同操作系统之间进行迁移。

容器占用资源少,部署快。每个应用都可以被打包成一个镜像。使得应用与镜像之间是一一对应关系,这也让容器更加具有优势。使用容器可以在build或者release的阶段,为应用创建容器镜像,因为每个应用不需要与其他的应用堆栈组合,也不依赖于 生产环境基础结构,这就能保证开发、测试环境的一致性。同时容器比虚拟机更加的”透明“,方便监控和管理。

容器的优势总结:

  1. 快速创建、部署应用:与虚拟机相比容器的创建更加容易
  2. 持续开发、集成和部署:提供可靠且频繁的容器镜像构建、部署,并使用快速和简单的回滚(由于镜像的不可变性)。
  3. 开发和运行相分离: 在build或者release阶段创建容器镜像,使得应用和基础设施解耦。
  4. 开发测试环境的一致性:在本地或者外网运行一致性
  5. 支持云平台、或其他操作系统:可以在UbuntuRHELCoreOSon-premGoogle Container Engine或其它任何环境中运行。
  6. Lossely coupled,分布式,弹性,微服务化:应用程序分为更小更独立的部件,可以动态部署和管理。
  7. 资源隔离:每个容器之间相互隔离,都有独立的文件系统、互不影响
  8. 资源利用:更高效

能做什么

可以在物理机或者虚拟机的kubernetes集群上运行容器化应用,kubernetes能提供一个”以容器为中心的基础架构“,满足生产环境中运行应用的常见需求:

  1. 多个进程(作为容器运行)协同工作(pod)
  2. 储存系统挂载
  3. Distributing secrets
  4. 应用健康检测
  5. 应用实例的复制
  6. pod自动伸缩、扩展
  7. Naming and discovering
  8. 负载均衡
  9. 滚动更新
  10. 资源监控
  11. 日志访问
  12. 调试应用程序
  13. 提供认证和授权

不是什么

  1. Kubernetes并不是传统的PaaS(平台即服务)系统。
  2. Kubernetes不限制支持应用的类型,不限制应用框架。不限制受支持的语言runtimes (例如, Java, Python, Ruby),满足12-factor applications 。不区分 “apps” 或者“services”。 Kubernetes支持不同负载应用,包括有状态、无状态、数据处理类型的应用。只要这个应用可以在容器里运行,那么就能很好的运行在Kubernetes上。
  3. Kubernetes不提供中间件(如message buses)、数据处理框架(如Spark)、数据库(如Mysql)或者集群存储系统(如Ceph)作为内置服务。但这些应用都可以运行在Kubernetes上面。
  4. Kubernetes不部署源码不编译应用。持续集成的 (CI)工作流方面,不同的用户有不同的需求和偏好的区域,因此,提供分层的 CI工作流,但并不定义它应该如何工作。
  5. Kubernetes允许用户选择自己的日志、监控和报警系统。
  6. Kubernetes不提供或授权一个全面的应用程序配置 语言/系统(例如,jsonnet)。
  7. Kubernetes不提供任何机器配置、维护、管理或者自修复系统。

另一方面,大量的Paas系统都可以运行在Kubernetes上,比如Openshift、Deis、Gondor。可以构建自己的Paas平台,与自己选择的CI系统集成。

由于Kubernetes运行在应用级别而不是硬件级,因此提供了普通的Paas平台提供的一些通用功能,比如部署,扩展,负载均衡,日志,监控等。这些默认功能是可选的。

另外,Kubernetes不仅仅是一个“编排系统”;它消除了编排的需要。“编排”的定义是指执行一个预定的工作流:先执行A,之B,然C。相反,Kubernetes由一组独立的可组合控制进程组成。怎么样从A到C并不重要,达到目的就好。当然集中控制也是必不可少,方法更像排舞的过程。这使得系统更加易用、强大、弹性和可扩展。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件.

文章标题:kubernetes

文章字数:1.5k

本文作者:AlexBruce Lu

发布时间:2020-01-07, 13:32:49

最后更新:2020-01-07, 15:09:39

原始链接:https://alexbrucelu.github.io/2020/01/07/kubernetes/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏