Kubernetes (简称k8s)近两年大火,如果你是一名云计算从业者,或者运维人员,还不了解kubernetes 的话那你已经OUT了。

为了帮更多朋友了解容器技术,了解kubernetes,本周三我们在【光环云社群】做了一次kubernetes的入门讲座。直播开始前,分享嘉宾——资深运维陈铎、铎哥告诉我:我想好了,这次我就要把kubernetes掰开了揉碎了,讲到产品和运营人员都能听懂。

全程听下来,铎哥做到了。从什么是虚拟化、什么是容器、容器和虚拟化什么关系、docker和kubernetes什么关系,学习和使用kubernetes要搜索和关注哪些关键词,都讲得明明白白。

这次直播的标题是《探秘kubernetes——从基础到实践》,我知道很多朋友还没来得及听,没关系,以下我们为您整理了本次直播的文字版精华回顾:

 

Kubernetes 是什么

官方定义是,Kubernetes是用于自动部署、扩展和容器化应用程序的开源系统。

而我们要了解究竟什么是Kubernetes,首先要明白容器的概念,以及Docker是什么。



容器:

容器是一种虚拟化技术。
我们知道,在传统的服务器使用中,服务器物理资源存在较大的浪费。虚拟化技术就是为了避免这种浪费而产生的技术。下图展示了从虚拟化技术,到容器技术的发展史。

 

 

我们可以看到,容器技术不是凭空产生的,而是经历了漫长的演变过程。了解了这种演变,了解了容器技术为解决什么问题而诞生,你就不会对容器技术望而生畏了。

容器技术最早应用在Linux操作系统,称为Linux Container(LXC),早期在互联网公司开始使用部署分布式应用,随后随着容器管理器(Docker、Rocket和CloudFoundary Garden)兴起,定制容器宿主操作系统(CoreOS、Ubuntu Snappy、Red Hat Atomic)盛行,容器被有效构建和管理、并在各行各业普遍使用和认可。



容器技术的官方定义是:


容器是通过一种虚拟化技术来隔离运行在主机上不同进程,从而达到进程之间、进程和宿主操作系统相互隔离、互不影响的技术。

要理解这个定义,首先要弄清楚容器和虚拟机的区别。

简单来说,虚拟机是一个机器,但容器是一个进程。

每一个虚拟机里面都有一套完整的操作系统,而容器层安装在操作系统之上,它直接利用了宿主机的内核,更加轻量化,启动速度极快。通常,我们在会每个容器里面跑单个的应用,而在虚拟机里会跑很多应用。下图展示了虚拟机和容器的不同。

 


容器技术具有:简化部署、快速启动、服务组合、易于迁移等优点。



最流行的开源容器引擎:Docker

谈到容器,就不能不讲Docker。Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

 


Docker把容器变得标准化了。要理解Docker,你需要明白三个最主要的概念:容器、镜像、仓库。

- 容器是运行在虚拟机上的进程。
- 镜像是一种存储形式,可以理解为数据或应用的副本。
- 仓库是用来存储镜像的。

Docker能够普遍使用起来,很大程度上个得益于Docker的仓库里汇集了很多已经标准化的镜像,大大提升了部署效率。



什么是kubernetes

了解了容器和Docker,再来看kubernetes的定义就很容易理解了。

上文提到,Kubernetes是用于自动部署、扩展和容器化应用程序的开源系统。

当我们使用的容器服务多了,面临的访问量增大以后,我们就需要一种工具把这些容器统一的管理起来,需要实现对这些容器的自动部署、扩展和管理。也就是俗称的容器编排。

Kubernetes就是这样一种容器编排系统。


上图是Kubernetes的架构图。

从大的模块看,图中包含Master组件(APIs, scheduler, etc),Node节点和cloud端。

Master中,包含负责提供API服务的组件kube-apiserver;作为后台数据库的etcd,监听组件kube-scheduler;运行控制器的组件kube-controller-manager。

Node节点中包括运行在各个节点的客户端的kubelet,运行在各个节点的网络代理组件kube-proxy,支持运行容器底层环境的软件Container Runtime。

Cloud端作为集群外部的附加能力,通过与cloud-controller-manager组件对接,扩展k8s集群云上动态扩展的特性。

 

如何上手使用 kubernetes

 

Kubernetes的安装

Kubernetes有很多种安装方法,这里就不一一介绍了。推荐三种主要的安装方法,感兴趣的朋友可以通过关键词搜索相关教程,按步骤尝试安装。如果遇到问题,可以在我们的社群或者Kubernetes中文社区提问。


常见的三种安装方法:
- Kuberspray
- Kubeadm
- 手动安装



Kubernetes有哪些优势

为什么我们要用Kubernetes?因为它更省钱,更快,更省力。

Kubernetes和Docker都是开源的,这意味着你不需要支付高昂的授权费用;容器服务从启动到关停,比传统的服务器、虚拟机都要快捷很多;管理方面,Kubernetes提供一整套架构,管理方便,节省了运维的人力。

容器技术是未来发展的必然趋势。如果你从事开发、运维、云计算相关工作,一定要多多关注容器技术的发展。



几个与Kubernetes相关的产品/概念

在Kubernetes的生产实践中,有这几个产品/概念建议你去了解:

Openshift:OpenShift是由Red Hat开发的容器化软件解决方案。他们的主要产品是OpenShift容器平台,这是由Kubernetes管理的平台即服务(PaaS)。

Amazon EKS:Amazon Elastic Kubernetes Service (Amazon EKS) ,这是一项完全托管的 Kubernetes 服务。EKS拥有原生的kubernetes体验,并与AWS其他的云服务无缝的结合,为用户提供极佳的云端容器体验。下期直播我们会着重介绍这个产品。

微服务:由于容器技术的发展,微服务的理念也越来越被人们接受。按照微服务的理念,如果使用容器作为基础设施,能够实现快速部署,快速迭代。很多时候大家会将微服务和容器技术一起谈论,甚至有些公司直接将自己的新建的微服务应用部署在容器平台上。



如何学习Kubernetes

学习kubernetes,其实官方文档和github 就用了。最重要的,是你要边实践边学习,遇到不懂的问题,多搜索,多思考,多在社区里交流。实践出真知,这也是所有技术学习的不二法门。

 

以上就是本次直播的主要内容了。如果你需要直播的视频资料,可以添加光环云社群的管理员索要。或者关注我们在B站上的视频动态。

下期直播,我们将会介绍AWS上的 kubernetes服务 Amazon EKS,时间是4月22日下午。敬请期待。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐