一线大厂面试真题——5分钟带你快速了解什么是Kubernetes

概述

近些年,随着Docker与微服务的普及,K8S也乘着这两股东风,迅速蹿红起来。

作为最火的容器编排工具之一,它的很多思想设计都契合了微服务和云原生应用的设计法则。也正因如此,越来越多的公司开始使用起k8s。那么,称霸容器界的k8s,究竟有什么魔力呢?

带大家了解一下,什么是Kubernetes?K8s全称Kubernetes,8是中间8个字母的简称。作为一种容器自动部署、扩容以及管理的技术,我们可以简单理解其是一种容器编排技术。前身是Borg系统,在谷歌内部已经有了十多年的使用经验。

什么是容器编排技术

我们先以Docker容器为例,如果大家不熟悉什么是Docker的话,可以翻阅一下Docker相关的内容。

一线大厂面试真题——5分钟带你快速了解什么是Kubernetes_第1张图片

如图所示在一台centos物理机上安装了Docker镜像,然后在镜像上跑几个container器。

那最明显的一个题是,当物理机centos资源不够使用的时候,就没办法再创建新的container了,另外一个问题就是单点故障,也就是当安装了Docker Engine的这台centos机器挂了之后,所有的container都会挂掉,这样很多中间件和服务都变成不可用了,所以最直接的解决方案,就是对centos机器做集群化的部署,如图所示

一线大厂面试真题——5分钟带你快速了解什么是Kubernetes_第2张图片

但问题是样通过一个统一的入口,管理安装了Docker Engine的3台centos机器,不然每台centos就变成孤立的了,这里就需要用到容器编排的技术,我们就直接以K8s中的组件和大家来分析一下,它究竟是如何做到统一管理的。

一线大厂面试真题——5分钟带你快速了解什么是Kubernetes_第3张图片

可以看到是由3台centos机器组成的Docker集群或者K8s集群,其中1台是master,另外2台是worker

每台机器上都安装了Docker Engine,当需要对容器行操作时,会通过kubectl来接收用户的操作命令。

API Server会做客端的命令进行认证授权,接下来会通过Scheduler组件进行调度,就可以知道要创建的资源到底会落到哪个机器上。

然后会通过不同类型的Controller Manager进行管理要创建的资源,比如要将资源创建在其中一个worker节点,就会把请求转发给worker节点的kube-proxy组件。这里,要跟大家强调一点,在K8s中最小的操作单元是Pod,它可以理解为是container的逻辑单位,不会直接操作docker中的container,而是会以Pod的形式来操作,因Pod里面包含了各个类型的container。

worker中是如何操作Pod的呢

就是通过kubelet组件完的。当然可以发现,整个K8s集群中还可以持久化一些数到ETCD组件里,可以通过Dashboard查看个集群资源的状态,可以通过DNS组件进行相应的域名解析等,这些组件和功能都是可选的、可扩展的。

到这里我们不妨再想一个问题,K8s集群中的物理机可以是不同的硬件和操作系统吗?

显然是没问的,这样一来我们就可以通过Docker和K8s来屏蔽基础设施的差异性,在上层进行容器创建以及管理就变得方便多了,所以K8s也是云原生中很重要的基础保障。

如图所示最下面的基础设施可以是各种公有云、私有云、混合云,在此基础上构建K8s的集群支撑,后就可以非常方便调度管理不同的容器了。

一线大厂面试真题——5分钟带你快速了解什么是Kubernetes_第4张图片

看到这里,你明白容器编排技术的工作原理了吗

容器作为一种先进的虚拟化技术,是云原生时代软件开发和运维不可或缺的部分。

K8s作为当前最知名的容器编排工具,称得上是云原生时代的“操作系统”,熟悉和使用它是研发、运维、产品等的必备技能。

你可能感兴趣的:(Spring,Cloud生态必问面试题,面试,kubernetes,职场和发展,分布式,负载均衡,容器,云原生)