|
Kubernetes 是谷歌推出的工业级容器编排平台,可实现容器化应用程序的自动化部署、管理和扩展。它现在已成为容器编排的事实标准。
k8s的由来
Kubernetes是希腊语,中文翻译为“舵手”或“飞行员”。其实最常用的缩写是k8s,就是把结尾k和s之间的八个字母“ubernete”换成“8”而产生的缩写。类似于i18s的另一个缩写——国际化(internationalization)在编程界最常用。
什么是——分布式集群自动化(自助)运维的舵手
k8s是分布式集群的舵手,自动化(自助)运维。在轻量级容器(如docker)上,实现分布式集群的高动态运维和服务管理功能,完善DevOps体系,模糊Dev和Ops的区别。限制。出生于以下两个重要背景
需求驱动——微服务后的分布式部署集群
在 SOA 和微服务大行其道的大背景下,单个应用拆分成几十个微服务,数百个实例部署在多台机器上。手动部署和管理是繁重的、多余的,甚至是不可能的。于是,k8s作为代表诞生了。分布式集群自动化运维工具。相反,在传统的单应用、单机部署、运维的场景下,不会产生也不需要k8s等复杂的编排工具,也不需要过多的设计和玄学。
技术驱动——轻量级容器化技术
以 Docker 为代表的轻量级容器化技术实现了单机秒级部署速度,拥有数百/千个容器和高度可扩展的 API,为上层分布式集群下的容器编排提供了可能。
Docker等轻量级容器技术是提高虚拟机的负载率和性能的虚拟化解决方案,从而挤压单机部署和多服务的极限,但并非旨在解决多机(分布式集群)操作和维护。需要k8s、Apache Mesos等集群容器编排工具。
高动态集群运维抽象模型 DCOM应用集群部署、运维的一般流程
在常见的生产场景中泛目录防K,新的迭代业务需求进行开发和测试,然后交给运维,然后进入部署和上线流程,大致包括以下几个环节:
一个项目组的运维人员往往是固定的、相关的,他们的所有运维工作都需要满足审计要求、标准、安全、可追溯。因此,运维人员通常都有自己的固定账户,并尽量减少权限。降低风险。
业务团队根据自身应用的特点,无论是IO密集型还是CPU密集型,评估所需的CPU、内存、网络、存储等资源,支持健康、持续、高效的运行的应用程序。
各种配置通常是应用程序运行的起始依赖项。多种环境通常意味着多种配置。因此,需要将正确的配置交付给运维人员,以防止混淆和误操作。
目前大部分业务应用都是无状态的,适合点对点集群部署,既解决了单点故障问题,又实现了负载均衡。
周边提高应用可观察性的管理服务,如监控、日志等,往往以sidecar的形式独立部署,防止核心服务的资源被挤出,保证核心服务的稳定性。
对于应用的多实例点对点集群,需要使用Nginx等负载均衡器LB来统一代理请求和自定义负载均衡策略,而不是直接显式地针对具体实例,否则集群的价值将迷失。同时,为了保证LB的高可用,通常会部署多个LB代理,通过VIP技术实现外部相同的识别,屏蔽内部的故障转移细节。
虽然暴露的服务(VIP)可以通过IP:Port静态访问,但IP不是友好的语义符号,不能动态应用于应用迁移等引起的IP变化,所以通常需要通过DNS 协议。它还解耦了客户端和服务器之间的静态绑定关系。
抽象高动态集群运维模型DCOM
高度动态的集群运维模型是对上述应用集群部署、运维的一般流程的抽象,以标准化、程序化的方式准确定义各个环节,从而提供自助式的部署和运维。维护可编程分布式集群。理论支持,主流开源kubernates、Apache Mesos等都可以看做是它的实现。
应用程序部署的第一步,本质上是为一些应用程序或项目从整个集群中划分和隔离的一个子集群。庞大的分布式集群集合不是用来部署单个应用程序的,而是由多个应用程序共享的。因此,进行应用级划分,使应用能够安全稳定地运行在逻辑沙箱中。说有必要。
它是对运维人员和各种管理流程的抽象,以安全可控的方式实现了审计所需的操作痕迹和最小权限的原则。
分布式集群本身就是CPU、内存、网络、存储等硬件和软件资源的集合。应用集群部署和运维的本质是对CPU、内存等各种集群资源的动态规划和管理。使用 REST 风格的 API 对各种资源进行抽象和管理。
常规配置适用于静态相关的应用,不具备集群管理的特点,不能动态关联多个相关的应用。集群动态配置Config需要将部署配置和应用配置解耦,实现跨应用和实例的动态配置共享。
部署的本质是在集群上安装并运行一个需要占用一定集群资源(如cpu、内存)并提供一定服务的应用进程,这也是核心环节。
部署本身不仅仅是应用程序进程本身,还包括与集群相关的各种资源和策略。因此,部署不能狭隘地等同于特定的应用形式。
部署要屏蔽具体的应用形式,无论是各种程序包,比如Java jar/war包,各种轻量级容器(比如docker),甚至是虚拟机泛目录防K,都是上层的,对集群来说是一致的。Deploy 的部署。
在分布式/微服务大行其道的背景下,基于服务的服务已经成为一种标准和共识。服务的本质是提供一组动态的对等点或相关的进程集,外部一致的服务标签(服务名称),使其可以在集群中自然使用。实现服务发现的能力(微服务的核心)。
开源实现
Kubernetes 并不是唯一或最早的分布式集群应用编排工具。整个应用架构的第四层容器编排层有很多开源实现,但都可以抽象为高动态集群运维模型DCOM的实现。
最早也是最强大的集群容器编排系统,为Docker Swarm甚至kubernates等后期明星提供了集群应用编排的有效解决方案。但它由两个独立的 API Mesos 和 Marathon 组成,学习复杂,难以推广和普及。2019 年,Twitter 宣布不再支持它。
Docker正式推出的容器编排系统,特点是开箱即用,可以满足小规模集群和简单部署场景的需求。但功能本身过于简单,不支持超大集群,因此并未成为企业市场的主流。同样在 2019 年,阿里云宣布不再支持。
谷歌出品,一定是杰作。作为谷歌推出的后起之秀,kubernates吸收了Apache Mesos和Docker Swarm的优点,克服了它们的不足,完美实现了高动态集群运维模型DCOM。从市场份额来看,已经成为分布式集群容器编排工具的事实标准。并成为 DevOps 趋势下的必备技术栈。
豪侠泛目录站群程序,专业泛目录,站群,二级目录,泛站群程序! |
|