【虚拟化】Kubernetes面试100题

Kubernetes面试100题

Kubernetes是什么?kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。


Q:Kubernetes是什么?

A:Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成Kubernetes内部使用的低级别组件。Kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。
使用Kubernetes可以:

  • 自动化容器的部署和复制

  • 随时扩展或收缩容器规模

  • 将容器组织成组,并且提供容器间的负载均衡

  • 很容易地升级应用程序容器的新版本

  • 提供容器弹性,如果容器失效就替换它,等等...

Q:Kubernetes 有哪些特点?

A:可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)

     可扩展: 模块化,插件化,可挂载,可组合

     自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

Q:Kubernetes架构和组件

A:【虚拟化】Kubernetes面试100题_第1张图片

- 服务分组,小集群,多集群

- 服务分组,大集群,单集群

Q:Kubernetes所能识别的最小单元什么?

A:Pod就是Kubernetes所能识别的最小单元。它包含了一个或多个的容器并看做是一个整体的单元。基本上,可以说Pod就是一个单一的微服务。

Q:K8S与Swarm的共同点是什么?

A:Docker Swarm和Kubernetes都是用来编排容器的,但是是以不同的方式。

Q: 关于集群

A: 集群是一组节点,这些节点可以是物理服务器或者虚拟机,之上安装了Kubernetes平台。下图展示这样的集群。注意该图为了强调核心概念有所简化。这里可以看到一个典型的Kubernetes架构图。

【虚拟化】Kubernetes面试100题_第2张图片

Q: 在安装Kubernetes时会因为无法拉取gcr.io镜像,导致安装过程一直等待或报出无关错误。

A: 在已知镜像名称和标签的情况,可以通过阿里云镜像仓库 + GitHub 用Dockerfile重新打包gcr.io 镜像,然后安装时从阿里云镜像仓库直接下载再重命名为gcr.io镜像。在未知镜像名称和标签的情况,需要先找一台可以科学上网的机器来装一遍,再通过docker images 查看准确的镜像名称和标签。

Q:是否手动创建Pod,如果想要创建同一个容器的多份拷贝,需要一个个分别创建出来么,能否将Pods划到逻辑组里?

A:Replication Controller确保任意时间都有指定数量的Pod“副本”在运行。如果为某个Pod创建了Replication Controller并且指定3个副本,它会创建3个Pod,并且持续监控它们。如果某个Pod不响应,那么Replication Controller会替换它,保持总数为3.如下面的动画所示:

【虚拟化】Kubernetes面试100题_第3张图片

 Q:CentOS下如何配置主机互信?

【虚拟化】Kubernetes面试100题_第4张图片

Q:如何监控部署在Docker容器上的应用程序?

A:Kubernetes可以通过设定livenessProbe属性来为一个Pod做健康检测。

Q:怎样从外面访问一个跑着许多Docker实例的应用程序?

A:通过使用Kubernetes的Service资源,可以有多种方案实现对一个跑在Kubernetes里的带有多个实例的Docker应用的访问。可以使用一个公网IP来创建一个Service,一个负载均衡Service,或者说,如果是HTTP的情况下,用一个Kubernetes的Ingress资源。

Q:Docker + Kubernetes只能在Linux环境下运行吗?

A:不,Docker加入对Windows的支持已经有一段时间了,而就在1.5版本的时候,Kubernetes加入了对Windows Server容器的支持,控制器仍然还跑在Linux上,然后Kubelet和Kubeproxy则可以在Windows上运行。

Q:Kubernetes和Openstack发展方向是怎样的?它们之间存在很多分歧吗?

A:Kubernetes和Openstack是两个完全不同的东西;真的没有必要去比较它们,因为它们根本从来都碰不到一起。你可以在Openstack上跑Kubernetes,你也可以使用Kubernetes来编排Openstack,但是它们始终还是两个截然不同的东西。

Q:Mirantis提供对Kubernetes的支持吗?

A到目前为止,Mirantis的产品只限于Openstack,这也即是我们所支持的全部;当我们加入对Kubernetes的支持时,事情可能会有一定程度的转变,但是就目前而言,情况就是这样。

Q:怎么把一个公网IP分配给一个跑在Openstack虚拟机里的Docker容器?

A:只要像分配任何其他基于Openstack的公网IP一样通过浮动IP去做就行。

Q:应用和运行时平台是怎样解耦的?

A:容器是设计成自包含的。因此可以创建一个包含了系统的所有内容,让它拥有完备的移植性。我们也应该明白一点,应用程序不可能完全和运行时平台解耦。举个例子,你如果有一个应用是用Mono(Linux版本的.NET)写的,你可以用Linux上的Kubernetes来运行它,但是直接用Windows Server容器跑的话就只能运行在Windows上的Kubernetes了。

Q:Docker/Kubernetes可以用在Windows服务或者实际的应用,数据库,还有存储吗,或者说你可以创建windows的虚拟机然后在Kubernetes下面跑吗?

A:听上去所说的“实际应用”真的有点像是在说“宠物”类应用。如果是的话,那么最好还是用虚拟机来跑吧。

Q:是不是可以这样说,Kubernetes的编排就像一个流程图?一系列一个接一个的动作?

A:理想情况下,这是对的,但是实际上它并不是这样 —— 反正不是直接如此。当你在YAML文件里包含了多个定义时,没有办法保证它们会以怎样特定的顺序去执行。要解决这个问题实现“流程图”效果的话,你可以看下Kubernetes新的APPController。

Q:虽然容器是分层的,在宿主操作系统这块每个分层也是重复部署的。Openstack会为此提供一个轻量级的容器宿主虚拟机吗?

A:与其操心有没有一个轻量级的容器宿主虚拟机镜像,还不如考虑下用一个最小集操作系统作为容器的基础层,比如Alpine Linux。

 

你可能感兴趣的:(Kubernetes,面试,问题,Docker,容器,学习历程记录,虚拟化与云计算)