49 lines
5.1 KiB
Markdown
49 lines
5.1 KiB
Markdown
|
||
|
||
因收到Google相关通知,网站将会择期关闭。相关通知内容
|
||
|
||
|
||
01 开篇: Kubernetes 是什么以及为什么需要它
|
||
Kubernetes 是一个可扩展的,用于容器化应用程序编排,管理的平台。由 Google 于 2014 年基于其大规模生产实践经验而开源出来的。Kubernetes 目前在容器编排领域已经成为事实上的标准,社区也非常活跃。
|
||
|
||
Kubernetes 在国内外都已经得到广泛的应用,无论是Google, Amazon, GitHub 等还是国内的阿里,腾讯,百度,华为,京东或其他中小公司等也都已全力推进 Kubernetes 在生产中的使用。
|
||
|
||
现在无论是运维,后端,DBA,亦或者是前端,机器学习工程师等都需要在工作中或多或少的用到 Docker, 而在生产中大量使用的话 Kubernetes 也将会成为趋势,所以了解或掌握 Kubernetes 也成为了工程师必不可少的技能之一。
|
||
|
||
Kubernetes 是什么?
|
||
|
||
当提到 Kubernetes 的时候,大多数人的可能会想到它可以容器编排,想到它是 PaaS (Platform as a Service) 系统,但其实不然,Kubernetes 并不是 PasS 系统,因为它工作在容器层而不是硬件层,它只不过提供了一些与 PasS 类似或者共同的功能,类似部署,扩容,监控,负载均衡,日志记录等。然而它并不是个完全一体化的平台,这些功能基本都是可选可配置的。
|
||
|
||
Kubernetes 可支持公有云,私有云及混合云等,具备良好的可移植性。我们可直接使用它或在其之上构建自己的容器/云平台,以达到快速部署,快速扩展,及优化资源使用等。
|
||
|
||
它致力于提供通用接口类似 CNI( Container Network Interface ), CSI(Container Storage Interface), CRI(Container Runtime Interface)等规范,以便有更多可能, 让更多的厂商共同加入其生态体系内。它的目标是希望在以后,任何团队都可以在不修改 Kubernetes 核心代码的前提下,可以方便的扩展和构建符合自己需求的平台。
|
||
|
||
为什么需要 Kubernetes
|
||
|
||
我们回到实际的工作环境中。
|
||
|
||
|
||
如果你是个前端,你是否遇到过 npm 依赖安装极慢,或是 node sass 安装不了或者版本不对的情况?
|
||
如果你是个后端,是否遇到过服务器与本地环境不一致的情况,导致部分功能出现非预期的情况?
|
||
如果你是个运维,是否遇到过频繁部署环境,但中间可能出现各种安装不了或者版本不对的问题?
|
||
|
||
|
||
目前来看,对于这些问题,最好的解决方案便是标准化,容器化,现在用到最多的也就是 Docker。 Docker 通过 Dockerfile 来对环境进行描述,通过镜像进行交付,使用时不再需要关注环境不一致相关的问题。
|
||
|
||
现在面试的时候,无论前后端,我们总会多问下是否了解或者使用过 Docker 。如果使用过,那自然会问如果规模变大或者在生产中如何进行容器编排,部署扩容机制如何。
|
||
|
||
多数人在这个时候都已经回答不上来了,一方面是因为非运维相关岗位的同学,可能在实际工作中并不了解整体的架构体系,没有相关的知识积累。另一方面,对于运维同学可能尚未接触到这部分。
|
||
|
||
作为一个技术人员,我们应该对整体的体系架构有所了解, 掌握更多的技能,了解软件的完整生命周期,包括开发,交付,部署,以及当流量变大时的扩容等。
|
||
|
||
在容器编排领域,比较著名的主要有三个:Kubernetes, Mesos, 及 Docker 自家的 Swarm . 对这三者而言,较为简单的是 Swarm, 因为它本身只专注于容器编排,并且是官方团队所作,从各方面来看,对于新手都相对友好一些。但如果是用于生产中大规模使用,反而就略有不及。
|
||
|
||
而 Mesos 也并不仅限于容器编排,它的创建本身是为了将数据中心的所有资源进行抽象,比如 CPU,内存,网络,存储等,将整个 Mesos 集群当作是一个大的资源池,允许各种 Framework 来进行调度。比如,可以使用 Marathon 来实现 PaaS,可以运行 Spark,Hadoop 等进行计算等。同时因为它支持比如 Docker 或者 LXC 等作资源隔离,所以前几年也被大量用于容器编排。
|
||
|
||
随着 Kubernetes 在目前的认可度已经超过 Mesos, Docker Swarm 等,无疑它是生产环境中容器应用管理的不二之选。
|
||
|
||
本小册的目标是帮助更多开发者(不局限于运维,后端,前端等)认识并掌握 Kubernetes 的基础技能,了解其基础架构等。但是 Kubernetes 涉及知识点很多,且更新迭代很快,本小册集中于使用轻快的文字帮助大家掌握 K8S 的通用基础技能,对于其中需掌握的关于 Docker,及 Linux 内核相关的知识不会过于深入解释。主要以最常见 case 入手,帮助大家更快的掌握相关知识并将其用于生产实践中。
|
||
|
||
|
||
|
||
|