Kubernetes 源自希腊语,意思是“船长”、“舵手”或“统治者”。该术语现在也用于DevOps和本地软件开发领域,指的是一系列功能强大的解决方案,使运营工程师能够轻松扩展和服务服务器(和盒子)设置。
这篇 Kubernetes 面试问题文章将帮助您准备完成 Kubernetes 培训后可能需要参加的任何面试或认证考试。因此,事不宜迟,让我们直接开始学习 Kubernetes 面试的热门问题和答案。
这是最基本的 Kubernetes 面试问题之一,也是最重要的问题之一!Kubernetes是一种开源容器编排工具或系统,用于自动化容器化应用程序的管理、监控、扩展和部署等任务。它用于轻松管理多个容器(因为它可以处理容器分组),这提供了可以发现和管理的逻辑单元。
K8s 是 Kubernetes 的另一个术语。
编排是指多个服务的集成,使它们能够自动化流程或及时同步信息。举例来说,您有六七个微服务供应用程序运行。如果将它们放在不同的容器中,这将不可避免地造成沟通障碍。在这种情况下,编排将有所帮助,它使各个容器中的所有服务能够无缝工作以实现单一目标。
这是最常见的 Kubernetes 面试问题之一,面试官可能会要求您分享与其中任何一个合作的经验。Docker 是一个用于处理软件开发的开源平台。它的主要好处是将软件/应用程序运行所需的设置和依赖项打包到容器中,从而实现可移植性和其他几个优点。Kubernetes 允许手动链接和编排多个容器,在使用 Docker 创建的多个主机上运行。
Docker Swarm 是 Docker 原生的开源容器编排平台,用于集群和调度 Docker 容器。Swarm 与 Kubernetes 有以下不同之处:
部署应用程序由具有操作系统的体系结构组成。操作系统将有一个内核,其中包含安装在操作系统上的应用程序所需的各种库。
而容器主机是指运行容器化进程的系统。这种与其他应用程序是隔离的;因此,应用程序必须具有必要的库。二进制文件与系统的其余部分分开,不会侵犯任何其他应用程序。
Kubernetes 架构有两个主要组件:主节点和工作节点。这些组件中的每一个都有单独的组件。
主节点是控制和管理工作节点集的节点。这种类似于 Kubernetes 中的集群。节点负责集群管理以及用于配置和管理集合内资源的 API。Kubernetes 的主节点可以与 Kubernetes 本身(专用 Pod 的资产)一起运行。
为了管理并提供 API 对象的配置数据。它包括 Pod、服务、副本控制器。此外,它还提供 REST 操作以及集群的前端。该前端集群状态是共享的,所有其他组件都通过它进行交互。
节点是计算硬件的最小基本单元。它代表集群中的一台机器,可以是数据中心中的物理机,也可以是来自云提供商的虚拟机。每台机器都可以替代 Kubernetes 集群中的任何其他机器。Kubernetes 中的 master 控制拥有容器的节点。
节点状态的主要组成部分是地址、条件、容量和信息。
Kube-apiserver进程在主节点上运行,用于扩展更多实例的部署。
在这个 Kubernetes 面试问题中,尝试给出一个完整的答案,而不是一句俏皮话。Pod 是包含一个或多个容器的高级结构。这是因为容器不直接在 Kubernetes 中运行。同一 Pod 中的容器共享本地网络和相同的资源,使它们能够轻松地与同一 Pod 中的其他容器进行通信,就像它们在同一台机器上一样,同时保持一定程度的隔离。
kube-scheduler 将节点分配给新创建的 Pod。
容器集群是一组作为节点的机器元素。集群发起特定的路由,以便节点上运行的容器能够相互通信。在 Kubernetes 中,容器引擎(不是 Kubernetes API 的服务器)为 API 服务器提供托管。
Google 容器引擎是一个专为Docker 容器和集群量身定制的开源管理平台,为运行在 Google 公有云服务中的集群提供支持。
守护进程集是一组仅在主机上运行一次的 pod。它们用于主机层属性(例如网络)或用于监视网络,您可能不需要在主机上运行多次。
在这个 Kubernetes 面试问题中,面试官希望得到彻底的解释。您可以解释它是什么,并且它对您很有用(如果您到目前为止在工作中使用过它!)。Heapster 是一个性能监控和指标收集系统,用于 Kublet 收集的数据。该聚合器本身受支持,并且像 Kubernetes 集群中的任何其他 Pod 一样运行,这使得它能够发现和查询集群中所有节点的使用数据。
借助 Minikube,用户可以在本地运行 Kubernetes。此过程允许用户在个人计算机上运行单节点 Kubernetes 集群,包括 Windows、macOS 和 Linus PC。这样,用户也可以尝试使用 Kubernetes 进行日常开发工作。
命名空间用于在多个用户之间划分集群资源。它们适用于有许多用户分布在项目或团队中并提供一定范围资源的环境。
控制器管理器是一个守护进程,用于嵌入核心控制循环、垃圾收集和命名空间创建。它允许在主节点上运行多个进程,即使它们被编译为作为单个进程运行。
可以在主节点上运行的主要控制器管理器是端点控制器、服务帐户控制器、命名空间控制器、节点控制器、令牌控制器和副本控制器。
Kubernetes 使用 etcd 作为所有数据(包括元数据和配置数据)的分布式键值存储,并允许 Kubernetes 集群中的节点读取和写入数据。尽管 etcd 是专门为 CoreOS 构建的,但由于它是开源的,它也可以在各种操作系统(例如 Linux、BSB 和 OS X)上运行。Etcd 代表了集群在特定时刻的状态,是 Kubernetes 集群状态管理和集群协调的规范中心。
不同类型的 Kubernetes 服务包括:
ClusterIP 是默认的 Kubernetes 服务,它在集群内提供服务(无外部访问),集群内的其他应用程序可以访问该服务。
NodePort 服务是让外部流量直接到达您的服务的最基本方式。它在所有节点上打开一个特定端口,并将发送到该端口的任何流量转发到服务。
LoadBalancer 服务用于将服务公开到互联网。例如,网络负载均衡器创建一个将所有流量转发到您的服务的单个 IP 地址。
入口是一个允许用户从 Kubernetes 集群外部访问 Kubernetes 服务的对象。用户可以通过创建定义哪些入站连接到达哪些服务的规则来配置访问。
它是如何工作的-这是一个API对象,提供路由规则来管理外部用户通过HTTPS/HTTP访问Kubernetes集群中的服务。这样,用户可以轻松设置路由流量的规则,而无需创建一堆负载均衡器或将每个服务暴露给节点。
您一定听说过公共云、私有云和混合云。借助云基础设施技术,您可以在其上运行 Kubernetes。在云控制器管理器的上下文中,它是嵌入云特定控制逻辑的控制面板组件。此过程允许您将集群链接到云提供商的 API,并将与云平台交互的元素与仅与集群交互的组件分开。
与主要的 Kubernetes 项目相比,这也使得云提供商能够以不同的速度发布功能。它采用插件机制构建,允许各种云提供商将其平台与 Kubernetes 集成。
这是指收集指标并跟踪容器化应用程序和微服务环境的运行状况的活动。它有助于改善健康和表现,并确保它们顺利运作。
副本控制器简称RC,这为 Pod 提供了额外的功能,并提供副本。
它监视 Pod 并在发生故障时自动重新启动它们。如果节点发生故障,该控制器将在另一个节点上重新生成该节点的所有 Pod。如果 Pod 死亡,它们将不会再次生成,除非副本集还存在。
另一方面,副本集简称为 rs。它被称为下一代副本控制器。这种支持有一些选择器类型,并支持基于相等和基于集合的选择器。
它允许按标签值和键进行过滤。为了匹配对象,它们必须满足所有指定的标签约束。
headless service用于与服务发现机制交互,而无需绑定到 ClusterIP,因此允许您直接访问 Pod,而无需通过代理访问它们。当既不需要负载平衡也不需要单个服务 IP 时,它非常有用。
将多个集群视为单个逻辑集群的聚合称为集群联邦。在此,多个集群可以作为单个集群来管理。他们在联盟团体的帮助下留下来。此外,用户可以在数据中心或云中创建各种集群,并使用联邦在一个地方控制或管理它们。
您可以通过执行以下操作来执行集群联合:
跨集群,提供具有来自参与集群的后端的 DNS 和负载均衡器的能力。
用户可以跨不同集群同步资源,以便跨各个集群部署相同的部署集。
kubelet 是一个服务代理,通过 Kubernetes API 服务器监视 pod 规格来控制和维护一组 pod。它通过确保给定的一组容器都按其应有的方式运行来保留 pod 生命周期。kubelet 运行在每个节点上,实现主从节点之间的通信。
Kubectl 是一个 CLI(命令行界面),用于针对 Kubernetes 集群运行命令。因此,它通过 Kubernetes 组件上的不同创建和管理命令来控制 Kubernetes 集群管理器
标准 Kubernetes 安全措施的示例包括定义资源配额、支持审计、限制 etcd 访问、定期对环境进行安全更新、网络分段、定义严格的资源策略、持续扫描安全漏洞以及使用来自授权存储库的映像。
Kube-proxy 是负载均衡器和网络代理的实现,用于支持其他网络操作的服务抽象。Kube-proxy 负责根据传入请求的 IP 和端口号将流量引导到正确的容器。
Kubernetes 负载均衡器的静态 IP 可以通过更改 DNS 记录来实现,因为 Kubernetes Master 可以分配新的静态 IP 地址。