640?wx_fmt=png

kubernetes,简称K8S,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。


640?wx_fmt=gif1

Q:Kubernetes 是什么?


A:Kubernetes 提供了很多的功能,它可以简化应用程序的工作流,加快开发速度。通常,一个成功的应用编排系统需要有较强的自动化能力,这也是为什么 Kubernetes 被设计作为构建组件和工具的生态系统平台,以便更轻松地部署、扩展和管理应用程序。用户可以使用 Label 以自己的方式组织管理资源,还可以使用 Annotation 来自定义资源的描述信息,比如为管理工具提供状态检查等。此外,Kubernetes 控制器也是构建在跟开发人员和用户使用的相同的 API 之上。用户可以编写自己的控制器和调度器,也可以通过各种插件机制扩展系统的功能。这种设计使得用户可以方便地在 Kubernetes 之上构建各种应用系统。


640?wx_fmt=gif2

QKubernetes 不是什么?


A:Kubernetes 不是一个传统意义上,包罗万象的 PaaS(平台即服务)系统。它给用户预留了选择的自由。

不限制支持的应用程序类型,它不插手应用程序框架, 也不限制支持的语言(如 Java、Python、Ruby 等),Kubernetes 旨在支持极其多样化的工作负载,包括无状态、有状态和数据处理工作负载。只要应用可以在容器中运行,那么它就可以很好地在 Kubernetes 上运行。

不提供内置的中间件(如消息中间件)、数据处理框架(如 Spark)、数据库(如 MySQL)或集群存储系统(如 Ceph)等。这些应用直接运行在 Kubernetes 之上。

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

不直接部署代码,也不会构建用户的应用程序,但用户可以在 Kubernetes 之上构建需要的持续集成(CI)工作流。

允许用户选择自己的日志、监控和告警系统。

不提供应用程序配置语言或系统(如 jsonnet)。

不提供机器配置、维护、管理或自愈系统。


640?wx_fmt=gif3

Q应用和运行时平台是怎样解耦的?

A:容器是设计成自包含的。因此你可以创建一个包含了系统的所有内容,让它拥有完备的移植性。我们也应该明白一点,应用程序不可能完全和运行时平台解耦。举个例子,你如果有一个应用是用Mono(Linux版本的.NET)写的,你可以用Linux上的Kubernetes来运行它,但是直接用Windows Server容器跑的话就只能运行在Windows上的Kubernetes了。


640?wx_fmt=gif4

Q:Kubernetes 主要由以下几个核心组件组成


Aetcd:保存了整个集群的状态;

apiserver:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制;

controller manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;

scheduler:负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上;

kubelet:负责维护容器的生命周期,同时也负责 Volume(CVI)和网络(CNI)的管理;

Container runtime:负责镜像管理以及 Pod 和容器的真正运行(CRI);

kube-proxy:负责为 Service 提供 cluster 内部的服务发现和负载均衡


640?wx_fmt=gif5

Q:虽然容器是分层的,在宿主操作系统这块每个分层也是重复部署的。Openstack会为此提供一个轻量级的容器宿主虚拟机吗?

A:与其操心有没有一个轻量级的容器宿主虚拟机镜像,还不如考虑下用一个最小集操作系统作为容器的基础层,比如Alpine Linux。


640?wx_fmt=png


福利

扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!


640?wx_fmt=jpeg


推荐阅读:

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐