Web开发

注册

 

发新话题 回复该主题

写给前端的K8S上手指南 [复制链接]

1#
泉州白癜风医院 http://m.39.net/pf/a_8720484.html

K8S是什么?在回答这个问题之前,让我们一起先了解下web应用部署方式的演化过程。

宿主机模式

在我刚接触软件开发的时候,人们部署应用的方式通常是这样的:

首先需要一台服务器,然后在服务器上安装WebServer(例如:Nginx或者ApacheServer)。接着,根据应用的运行时要求,安装对应的软件包(例如:如果代码是用Node.js编写,就需要安装Node.js运行时环境)。最后,根据应用的其他功能,安装对应的软件,如数据库之类的。

应用部署的同时,宿主机上也多了各种软件程序。此时,这个web应用提供的服务如下图所示:

随着web应用的日趋复杂,这种部署方式的弊端逐渐出现了。

现代服务器性能非常强悍,如果一台主机上仅运行几个程序,就可能造成机器资源利用率偏低。而且,由于程序是直接运行在宿主机上的,程序之间存在资源竞争关系,会互相影响。如果某个程序造成宿主机卡顿或挂掉,那么其他程序也无法正常工作了。

在年出现Docker容器技术之后,这种部署方式逐渐被淘汰了。

容器

容器技术有多种实现方式,比较主流的是Docker。

其logo很好的体现了“容器”的特点——程序就像一个个集装箱,彼此隔离的运行在宿主机上。

区别于传统的宿主机部署模式,容器化技术提供了一个隔离环境。程序之间既不会互相影响,也不会影响宿主机的稳定。

Docker方式运行的容器,可以理解为一个虚拟机(但和虚拟机还是有区别的,虚拟机是对硬件的虚拟化;Docker是操作系统层的虚拟化)。它包含了运行程序所需的运行时环境和程序代码,启动后能够以端口映射的方式,将容器自身的服务暴露给宿主机和外部用户。

容器之间除了彼此隔离之外,也能够通过Docker引擎实现互联。容器之间的访问通常是以内部IP的方式进行的。

随着web应用规模的继续扩大,单主机不再能满足性能要求。现在的部署是基于多主机、多容器进行的。那么,如何对这些主机资源和应用容器进行管理?这个问题的答案指向了本文的主角——K8S。

开源的容器管理平台

K8S的全称是Kubernetes,因为在首字母k和尾字母s中间有8个字母,因此被简写为K8S(类似的还有i18n等)。它是由谷歌开源的,主流的容器管理平台。

它的logo也很有意思,K8S就像一个舵一样,让用户能够在茫茫大海中将满载集装箱的大船驶向成功的彼岸。

借助K8S提供的能力,运维人员——甚至是前端开发人员——能够很容易地在集群环境中部署和管理容器。并且,对于以下功能,K8S也能够很好地支持:

负载均衡高可用高并发(多实例)集群管理

K8S环境需要先被安装和运行起来。由于这部分的操作需要服务器支持,这里就不做介绍了。下文的全部内容都基于读者能够连接到任一K8S系统这个前提之上。

K8S核心知识点

在K8S中,所有资源都是通过声明式配置进行管理的,它们被称作K8S对象。以namespace为例:

apiVersion:v1kind:Namespacemetadata:nameemo-spacespecinalizers:-kubernetesstatus:phase:Active

不同类型的对象所需的配置不完全相同,但他们都应有如下几个基础配置:

apiVersion-创建该对象所使用的KubernetesAPI的版本,不同的版本,对于yaml中可使用配置项的字段、格式有不同的要求。kind-想要创建的对象的类别metadata-帮助唯一性标识对象的一些数据spec-你所期望的该对象的状态

更详细的文档,请移步K8S

分享 转发
TOP
发新话题 回复该主题