聚焦Kubernetes

Posted 金蓝海

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了聚焦Kubernetes相关的知识,希望对你有一定的参考价值。


容器化的世界很容易忽视年轻的Kubernetes。鉴于其爆炸性的流行趋势,你可能已经忘了此软件出现还不到四年。那些使用该软件的人实际上已经走在尖端技术的前沿。借助容器技术通过应用程序执行细节抽象化使得软件开发更为简化与虚拟机相比,模块化容器化的部署使得IT团队大大减少开销并降低操作复杂性。

201710 17 日,Docker 创始人CTO Solomon Hykes在丹麦哥本哈根举行的 DockerCon 大会上宣布,将扩大其 Docker 平台并选择积极拥抱容器编排对手 Kubernetes,并且工程师们已经可以注册测试版。这意味着 Docker 客户及开发人员将同时可以选择使用 Kubernetes DockerSwarm 进行容器工作负载的编排。

Kubernetes 介绍

Kubernetes (又被称作KubeK8s)是由Google开发的一个强大的平台,可以在集群环境中管理容器化应用程序。本文我们将聚焦体系结构,研究其所能解决的问题,并理解Kube模型用于处理容器化部署和扩展的组件。

什么是Kube?

Kube帮助解决客户在生产、开发和测试环境中管理和编排容器时所面临的逻辑挑战通过声明代码防止大量的错误产生

如果没有Kube或Docker Swam的容器编排功能,团队需要在每次发布新feature时手动更新数百个容器,从而使部署既缓慢又容易出错Kube是一个开的容器编排平台,用于大规模管理分布式容器化应用程序。使用Kube,团队可以自动配置应用程序,管理他们的生命周期以及维护和跟踪服务器集群中的资源分配。所有容器化应用程序通常在Rktdocker上运行。除了快速自动化发布和部署,如果出现任何状况Kube还为应用程序基础构提供了一个“自愈”环境。当出现该情况时,平台将对所观察到的群集状态与用户期望的状态协调。假如工作node挂了,所有的pod将会被重新安排到可用的node上。

Benefit

拥有Kubernetes, 团队可以:

自动并立即按需缩放集群(在不需要时缩小规模以节省资源和金钱)。

内部任何地方运行。无论是在公共云或私有云(例如AWS或Google)中,混合配置

由于其轻便性,可在裸机、本地开发和云环境中不断部署。

短的调试时间,更多地交付业务价值。

独立和自动化的操作和开发。

快速迭代部署周期,提高系统弹性

Components

Kube的学习曲线被认为比Docker稍微广泛一些。因此要有效地使用Kube,就需要了解它的组件及其在系统架构中的功能。

Pods

Labels & Selectors

label标签是可以分配给对象(包括podnode)的价值属性。他们定义区分对用户有意义及合适对象特性label可以在创建对象时分配,也可以稍后贴上或修改。使用label可以识别、组织、选择对象子集并在开发渠道的多种维度创建顺序。发布启动(beta,稳定)环境类型(dev,prod)和或体系结构层(前端/后端)等信息都可以在label中识别labelselector作为核心方式协同工作以管理对象和组。 Kubernetes selector有两种类型:基于等式的selector基于集合的selector 基于等式的selector使用key-value pairs根据基本相等(或不相等)对对象组进行排序。基于集合的selector按值集排序key

Replica Sets

如前所述,如果node出现故障,则运行其上面的pod将不会重新安排Replica sets克服了Kube中的这一问题,确保在任何给定时间都有指定数量的pod实例(或副本集)一起运行。因此为了保持您的pod活着,请确保至少有一个replicate sets分配给它。  除了管理单一podReplica sets还可以管理并扩展到由一个共同label分类的pod组。由于在部署过程中大部分功能都是自动化的,因此您无需进行主动管理,但还是应该对系统功能有所了解以便更好地管理您的应用程序。

Networking

Services

Kubernetes service是一种抽象,它根据标签勾勒出了pod的逻辑子集(参见上文)。Kube的服务根据其所分配的服务来识别和利用pod组的label selector通过服务来管理端点的方便性完全取决于label。除了服务发现功能之外,服务的这种抽象还为集群中的pod进一步提供内部负载平衡。Kubernetes提供了两种查找服务的主要方法。在节点上运行pod时,kubelet(节点代理)根据预定义为每个活动服务添加环境变量。另一种方法是使用内置DNS服务。DNS服务器监视所有新服务的Kubernetes API,并为每个服务分配一组DNS记录。当DNS在整个集群中启用时,所有的pod都应该能够自动完成服务的名称解析。




以上是关于聚焦Kubernetes的主要内容,如果未能解决你的问题,请参考以下文章

云原生之kuberneteskubernetes集群下ConfigMap使用方法

云原生之kuberneteskubernetes集群下Secret存储对象的管理

云原生之kuberneteskubernetes集群下的Deployment高级资源对象管理

云原生之kuberneteskubernetes集群下的健康检查使用方法

云原生之kuberneteskubernetes集群下初始化容器的使用方法

一起来入门Kubernetes(k8s)