关于kubernetes(k8s),这可能是讲的最通俗易懂的一次了

915 阅读6分钟

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 就用了。最重要的,是你要边实践边学习,遇到不懂的问题,多搜索,多思考,多在社区里交流。实践出真知,这也是所有技术学习的不二法门。

以上就是本期kubernetes直播的主要内容了。需要本次直播视频和课件资料的朋友可以添加光环云社群管理员微信sinnet-cloud索取。

4月22日,我们将继续为您分享AWS上的kubernetes——Amazon EKS,敬请期待。