2022 年你需要知道的 20 大 Kubernetes 面试问题和答案

已发表: 2021-01-04

Kubernetes 是当今市场上最受欢迎的容器编排工具之一。 该系统于 2014 年由 Google 开源,已成为 SoundCloud、SAP、纽约时报、eBay、华为等公司的最爱。

但是只有少数熟练的专家可以满足对 Kubernetes 认证专业人员的巨大需求。 此外,当今的工作选择程序非常重视技术概念。 因此,始终建议您事先准备好Kubernetes 面试问题的答案

Kubernetes 背后的基本思想是抽象底层计算机资源。 它使机器、存储和网络远离其物理实现。 毫无疑问,该平台背后的势头正在上升。 Kubernetes 被称为云的操作系统。 了解有关 Kubernetes 及其网络的更多信息。

如果您正在考虑从事该领域的职业,请完成下面给出的Kubernetes 面试问题 迈出第一步,熟悉基础知识!

2022 年 Kubernetes 面试问答

1. 定义 Kubernetes。

Kubernetes 不仅仅是一个容器化平台。 它可以自动执行应用程序的部署、扩展和负载平衡任务。 此外,这种多容器管理工具与大多数云提供商配合良好,并受益于熟练的开源社区的贡献。 Kubernetes 是用 Go 编程语言编写的。

2. 列出 Kubernetes 的一些关键特性。

    1. 自动调度——在集群节点上启动容器的高级调度程序。
    2. 自我修复——可以重新调度、替换和重启已经死亡的容器。
    3. 自动推出和回滚 - 支持推出和回滚。
    4. 水平扩展——根据要求向上或向下扩展应用程序的能力。
  1. 列出 Kubernetes 和 Docker Swarms 之间的区别。

Docker Swarm 是一个用于构建容器以进行生命周期管理的工具。 Kubernetes 比 Docker Swarm 更广泛,因为它旨在编排集群并大规模协调节点集群。 尽管 Kubernetes 具有高度可扩展性,但 Docker Swarm 的扩展速度大约是 Kubernetes 的五倍。 此外,Docker Swarm 对不同容器之间的流量进行自动负载平衡,这需要在 Kubernetes 中进行手动干预。

但是,Kubernetes 还有其他功能。 它具有内置的日志记录和监控工具以及自动回滚机制。 Docker Swarm 不能像 Kubernetes 那样进行自动回滚和自动扩展。

4. 应用在主机上的部署与在容器上的部署有何不同?

当您在主机上部署应用程序时,操作系统的内核允许在其上安装许多库。 所有应用程序共享该操作系统上存在的各种库。 但是,在容器上部署应用程序的架构有点不同。

在容器化架构中,内核是应用程序之间唯一通用的东西。 其他应用程序不能侵占一个应用程序所需的库和二进制文件。 因此,它们与系统的其余部分隔离存在。 例如,如果一个特定的应用程序需要 Python,那么只有该应用程序可以访问它。

5、你对容器编排的理解是什么? 你为什么需要它?

假设一个应用程序有 4-5 个微服务。 现在,这些微服务将位于单独的容器中。 因此,需要容器编排以允许服务相互通信并协同工作以满足服务器的需求。 这个过程就像一个管弦乐队,不同的乐器和谐地演奏来组成一个作品。

6. 什么是 Kubelet?

Kubelet 是一个运行 Pod 的代理服务。 Pod 只不过是部署在同一主机上或具有一些公共资源的一组容器,例如单个 IP、卷等。kubelet 工作在 PodSpec 中提供的这些容器的描述上。 其主要目的是在每个节点上运行,确保容器健康运行,并进一步实现主节点和工作节点之间的通信。

阅读:全栈面试问题和答案

7、集群在Kubernetes中的作用是什么?

Kubernetes 允许您通过提供特定配置的集群服务来强制执行所需的状态管理。 然后,这些集群服务在基础架构中运行该配置。 该过程涉及以下步骤:

  • 部署文件包含要馈送到集群服务的所有配置。
  • 部署文件被输入 API。
  • 现在,集群服务在环境中调度 Pod
  • 集群服务还确保运行正确数量的 pod

所以,Kubernetes 集群本质上是由 API、worker 节点和节点的 Kubelet 进程组成的。

8. Kubectl 是做什么用的?

Kubectl 是一个控制 Kubernetes 集群的工具。 事实上,“ctl”代表控制。 它是一个命令行界面,允许您将命令传递到集群并管理 Kubernetes 组件。

9. 定义谷歌容器引擎。

Google Container Engine (GKE) 是一个管理平台,支持在 Google 的公共云服务中运行的 Docker 容器和集群。 它是一个基于 Kubernetes 的开源引擎。

10.解释Kubernetes中节点的使用。

节点提供运行 Pod 所需的服务。 也称为 minions,节点可以根据集群在物理机或虚拟机上运行。 在 Kubernetes 中,节点是主要的工作机器,主组件管理系统中的每个节点。

现在您已经掌握了最新的基础知识,让我们再看一些Kubernetes 面试问题和答案,以获得清晰的信息。

11. Kubernetes 架构的两个主要组件是什么?

主节点和工作节点组成了 Kubernetes 架构。 这两个组件中都有多个内置服务。 例如,master 组件有 kube-controller-manager、kube-scheduler、etcd 和 kube-apiserver。 工作节点在每个节点上运行容器运行时、kubelet 和 kube-proxy 等服务。

阅读: React 面试问答

12. 定义 kube-apiserver 和 kube-scheduler。

Kube-apiserver 是 maser 节点控制面板的前端,它暴露了所有的组件 API。 它在 Kubernetes 节点和主组件之间建立通信。 kube-scheduler 管理工作节点的工作负载。 它跟踪资源利用率以确保在合适的节点上完成调度。

13、简述Kubernetes Controller Manager的作用。

在 Kubernetes 中,主节点上运行着各种进程,它们以 Kubernetes 控制器管理器的形式编译在一起。 它是一个嵌入控制器的守护进程,包括以下内容:

  • 节点控制器:管理状态,即创建、更新和删除节点
  • 复制控制器:维护每个复制对象的 pod
  • 服务帐户和令牌控制器:关注新命名空间的默认帐户和 API 访问令牌
  • 端点控制器:负责端点对象(pod 和服务)
  1. 云控制器管理器做什么?

云控制器管理器 (CCM) 是一个允许嵌入特定于云的控制循环的守护进程。 它从核心 Kubernetes 代码中抽象出特定于云的供应商代码。 它还有助于管理与底层云服务的通信。 它的设计基于插件机制,这意味着云供应商使用插件将他们的代码与 CCM 集成。

15.负载均衡器的作用是什么?

负载均衡器提供了一种在不同后端服务之间分配网络流量的标准方法,从而最大限度地提高了可扩展性。 根据工作环境,可以有两种类型的负载均衡器——内部或外部。

内部负载均衡器可以自动平衡负载并将所需的配置分配给 Pod。 另一方面,外部负载均衡器将外部负载流量引导到后端 pod。 在 Kubernetes 中,这两种负载均衡方法通过 kube-proxy 功能运行。

16. 如何在本地运行 Kubernetes?

您可以使用 Minikube 工具在本地运行 Kubernetes。 它在您的笔记本电脑上的虚拟机内运行一个单节点集群。 因此,它为刚入门并想尝试 Kubernetes 的用户提供了一种有效的方式。

17. 什么是赫普斯特?

Heapster 是 Kubernetes 集群原生支持的性能监控和指标收集工具。 它像集群中的任何其他 pod 一样运行,发现所有节点并从 Kubernetes 节点查询信息。 这个容器管理工具通过机器上的代理工作。

18. Kubernetes 中的 ETCD 是什么?

Etcd 是 Kubernetes 集群的配置、状态和元数据的存储。 它是用 Go 编程语言编写的,表示给定时间点的集群状态。 该数据存储充当分布式系统的骨干。

19、你对容器资源监控的理解是什么?

从用户的角度来看,了解不同抽象层和级别的资源利用率至关重要,例如容器 pod、服务和整个集群。 每个级别都可以使用各种工具进行监控,即:

  • 格拉法纳
  • 赫普斯特
  • 涌入数据库
  • 顾问
  • 普罗米修斯
  1. 在使用 Kubernetes 时如何确保环境的安全性?

在使用 Kubernetes 时,您可以遵循并实施以下安全措施:

  • 限制 ETCD 访问
  • 限制对节点的直接访问
  • 定义资源配额
  • 一切都应该记录在生产环境中
  • 使用授权存储库中的图像
  • 为资源制定严格的规则和政策
  • 进行持续的安全和漏洞扫描
  • 定期应用安全更新

从世界顶级大学获得软件开发课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

包起来

在本文中,我们介绍了基本的Kubernetes 面试问题,以帮助您实现职业目标。 所以,接受学习挑战,别忘了复习!

如果您想学习和掌握 Kubernetes、DevOps 等,请查看 IIIT-B 和 upGrad 的 Executive PG Program in Full Stack Software Development Program。

为未来的职业做准备

立即申请软件工程硕士