Kubernetes面试题_如何在没有选择器的情况下定义服务 a

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

由于典型应用程序将具有跨多个主机运行的容器集群,因此所有这些容器都需要相互通信。因此,要做到这一点,你需要一些能够负载平衡,扩展和监控容器的东西。由于Kubernetes与云无关并且可以在任何公共/私有提供商上运行,因此必须是您简化容器化部署的选择。

Q9。您对Kubernetes的集群了解多少?

Kubernetes背后的基础是我们可以实施所需的状态管理,我的意思是我们可以提供特定配置的集群服务,并且集群服务将在基础架构中运行并运行该配置。
在这里插入图片描述
因此,正如您在上图中所看到的,部署文件将具有提供给集群服务所需的所有配置。现在,部署文件将被提供给API,然后由集群服务决定如何在环境中安排这些pod,并确保正确运行的pod数量。

因此,位于服务前面的API,工作节点和节点运行的Kubelet进程,共同构成了Kubernetes集群。

Q10。什么是Google容器引擎?

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

Q11。什么是Heapster?

Heapster是由每个节点上运行的Kubelet提供的集群范围的数据聚合器。此容器管理工具在Kubernetes集群上本机支持,并作为pod运行,就像集群中的任何其他pod一样。因此,它基本上发现集群中的所有节点,并通过机上Kubernetes代理查询集群中Kubernetes节点的使用信息。

Q12。什么是Minikube?

Minikube是一种工具,可以在本地轻松运行Kubernetes。这将在虚拟机中运行单节点Kubernetes群集。

Q13。什么是Kubectl?

Kubectl是一个平台,您可以使用该平台将命令传递给集群。因此,它基本上为CLI提供了针对Kubernetes集群运行命令的方法,以及创建和管理Kubernetes组件的各种方法。

Q14。什么是Kubelet?

这是一个代理服务,它在每个节点上运行,并使从服务器与主服务器通信。因此,Kubelet处理PodSpec中提供给它的容器的描述,并确保PodSpec中描述的容器运行正常。

Q15。你对Kubernetes的一个节点有什么了解?

在这里插入图片描述

基于架构的Kubernetes访谈问题

这部分问题将涉及与Kubernetes架构相关的问题。

Q1。Kubernetes Architecture的不同组件有哪些?

Kubernetes Architecture主要有两个组件 - 主节点和工作节点。如下图所示,master和worker节点中包含许多内置组件。主节点具有kube-controller-manager,kube-apiserver,kube-scheduler等。而工作节点具有在每个节点上运行的kubelet和kube-proxy。
在这里插入图片描述

Q2。你对Kube-proxy有什么了解?

Kube-proxy可以在每个节点上运行,并且可以跨后端网络服务进行简单的TCP / UDP数据包转发。基本上,它是一个网络代理,它反映了每个节点上Kubernetes API中配置的服务。因此,Docker可链接的兼容环境变量提供由代理打开的群集IP和端口。

Q3。您能否介绍一下Kubernetes中主节点的工作情况?

Kubernetes master控制容器存在的节点和节点内部。现在,这些单独的容器包含在容器内部和每个容器内部,您可以根据配置和要求拥有不同数量的容器。因此,如果必须部署pod,则可以使用用户界面或命令行界面部署它们。然后,在节点上调度这些pod,并根据资源需求,将pod分配给这些节点。kube-apiserver确保在Kubernetes节点和主组件之间建立通信。
在这里插入图片描述

Q4。kube-apiserver和kube-scheduler的作用是什么?

kube -apiserver遵循横向扩展架构,是主节点控制面板的前端。这将公开Kubernetes主节点组件的所有API,并负责在Kubernetes节点和Kubernetes主组件之间建立通信。

kube-scheduler负责工作节点上工作负载的分配和管理。因此,它根据资源需求选择最合适的节点来运行未调度的pod,并跟踪资源利用率。它确保不在已满的节点上调度工作负载。

Q5。你能简要介绍一下Kubernetes控制管理器吗?

多个控制器进程在主节点上运行,但是一起编译为单个进程运行,即Kubernetes控制器管理器。因此,Controller Manager是一个嵌入控制器并执行命名空间创建和垃圾收集的守护程序。它拥有责任并与API服务器通信以管理端点。

因此,主节点上运行的不同类型的控制器管理器是:
在这里插入图片描述

Q6。什么是ETCD?

Etcd是用Go编程语言编写的,是一个分布式键值存储,用于协调分布式工作。因此,Etcd存储Kubernetes集群的配置数据,表示在任何给定时间点的集群状态。

Q7。Kubernetes有哪些不同类型的服务?

以下是使用的不同类型的服务:
在这里插入图片描述

Q8。你对Kubernetes的负载均衡器有什么了解?

负载均衡器是暴露服务的最常见和标准方式之一。根据工作环境使用两种类型的负载均衡器,即内部负载均衡器或外部负载均衡器。内部负载均衡器自动平衡负载并使用所需配置分配容器,而外部负载均衡器将流量从外部负载引导至后端容器。

Q9。什么是Ingress网络,它是如何工作的?

Ingress网络是一组规则,充当Kubernetes集群的入口点。这允许入站连接,可以将其配置为通过可访问的URL,负载平衡流量或通过提供基于名称的虚拟主机从外部提供服务。因此,Ingress是一个API对象,通常通过HTTP管理集群中服务的外部访问,是暴露服务的最有效方式。

现在,让我以一个例子向您解释Ingress网络的工作。

有2个节点具有带有Linux桥接器的pod和根网络命名空间。除此之外,还有一个名为flannel0(网络插件)的新虚拟以太网设备被添加到根网络中。

现在,假设我们希望数据包从pod1流向pod 4.请参阅下图。
在这里插入图片描述

  • 因此,数据包将pod1的网络保留在eth0,并进入veth0的根网络。
  • 然后它被传递给cbr0,这使得ARP请求找到目的地,并且发现该节点上没有人具有目的地IP地址。
  • 因此,桥接器将数据包发送到flannel0,因为节点的路由表配置了flannel0。
  • 现在,flannel守护程序与Kubernetes的API服务器通信,以了解所有pod IP及其各自的节点,以创建pods IP到节点IP的映射。
  • 网络插件将此数据包封装在UDP数据包中,其中额外的标头将源和目标IP更改为各自的节点,并通过eth0发送此数据包。
  • 现在,由于路由表已经知道如何在节点之间路由流量,因此它将数据包发送到目标节点2。
  • 数据包到达node2的eth0并返回到flannel0以解封装并在根网络命名空间中将其发回。
  • 同样,数据包被转发到Linux网桥以发出ARP请求以找出属于veth1的IP。
  • 数据包最终穿过根网络并到达目标Pod4。

Q10。您对云控制器管理器有何了解?

Cloud Controller Manager负责持久存储,网络路由,从核心Kubernetes特定代码中抽象出特定于云的代码,以及管理与底层云服务的通信。它可能会分成几个不同的容器,具体取决于您运行的是哪个云平台,然后它可以使云供应商和Kubernetes代码在没有任何相互依赖的情况下开发。因此,云供应商开发他们的代码并在运行Kubernetes时与Kubernetes云控制器管理器连接。

各种类型的云控制器管理器如下:
在这里插入图片描述

Q11。什么是Container资源监控?

对于用户而言,了解应用程序的性能和所有不同抽象层的资源利用率非常重要,Kubernetes通过在容器,pod,服务和整个集群等不同级别创建抽象来考虑集群的管理。现在,可以监视每个级别,这只是容器资源监视。

各种容器资源监控工具如下:
在这里插入图片描述

Q12。Replica Set 和 Replication Controller之间有什么区别?

Replica Set 和 Replication Controller几乎完全相同。它们都确保在任何给定时间运行指定数量的pod副本。不同之处在于复制pod使用的选择器。Replica Set使用基于集合的选择器,而Replication Controller使用基于权限的选择器。

  • Equity-Based选择器:这种类型的选择器允许按标签键和值进行过滤。因此,在外行术语中,基于Equity的选择器将仅查找与标签具有完全相同短语的pod。
    示例:假设您的标签键表示app = nginx,那么,使用此选择器,您只能查找标签应用程序等于nginx的那些pod。
  • Selector-Based选择器:此类型的选择器允许根据一组值过滤键。因此,换句话说,基于Selector的选择器将查找已在集合中提及其标签的pod。
    示例:假设您的标签键在(nginx,NPS,Apache)中显示应用程序。然后,使用此选择器,如果您的应用程序等于任何nginx,NPS或Apache,则选择器将其视为真实结果。

Q13。什么是Headless Service?

Headless Service类似于“普通”服务,但没有群集IP。此服务使您可以直接访问pod,而无需通过代理访问它。

Q14。使用Kubernetes时可以采取哪些最佳安全措施?

以下是使用Kubernetes时可以遵循的最佳安全措施:
在这里插入图片描述

Q15。什么是集群联邦?

在联邦集群的帮助下,可以将多个Kubernetes集群作为单个集群进行管理。因此,您可以在数据中心/云中创建多个Kubernetes集群,并使用联邦来在一个位置控制/管理它们。

联合集群可以通过执行以下两项操作来实现此目的。请参考下图。
在这里插入图片描述
基于场景的面试问题

这部分问题将包含您在面试中可能遇到的各种基于场景的问题。

场景1:

假设一家基于单一架构的公司处理众多产品。现在,随着公司在当今的扩展行业的扩展,他们的单一架构开始引发问题。

您如何看待公司从单一服务转向微服务并部署其服务容器?

解:

由于公司的目标是从单一应用程序转向微服务,它们最终可以逐个构建,并行构建,只需在后台切换配置。然后他们可以将这些内置微服务放在Kubernetes平台上。因此,他们可以从一次或两次迁移服务开始,并监控它们以确保一切运行稳定。一旦他们觉得一切顺利,他们就可以将其余的应用程序迁移到他们的Kubernetes集群中。

场景2:

考虑一家拥有分布式系统的跨国公司,拥有大量数据中心,虚拟机和许多从事各种任务的员工。

您认为这样 的公司如何以与Kubernetes一致的方式管理所有任务?

解:

正如我们所有人都知道IT部门推出了数千个容器,其任务在分布式系统中遍布全球众多节点。

在这种情况下,公司可以使用能够为基于云的应用程序提供敏捷性,横向扩展功能和DevOps实践的东西。

因此,该公司可以使用Kubernetes来定制他们的调度架构并支持多种容器格式。这使得容器任务之间的亲和性成为可能,从而提供更高的效率,并为各种容器网络解决方案和容器存储提供广泛支持。

场景3:

考虑一种情况,即公司希望通过维持最低成本来提高其效率和技术运营速度。

您认为公司将如何实现这一目标?

解:

公司可以通过构建CI/CD管道来实现DevOps方法,但是这里可能出现的一个问题是配置可能需要一段时间才能启动并运行。因此,在实施CI/CD管道之后,公司的下一步应该是在云环境中工作。一旦他们开始处理云环境,他们就可以在集群上安排容器,并可以在Kubernetes的帮助下进行协调。这种方法将有助于公司缩短部署时间,并在各种环境中加快速度。

场景4:

假设一家公司想要修改它的部署方法,并希望建立一个更具可扩展性和响应性的平台。

您如何看待这家公司能够实现这一目标以满足客户需求?

解:

为了给数百万客户提供他们期望的数字体验,公司需要一个可扩展且响应迅速的平台,以便他们能够快速地将数据发送到客户网站。现在,要做到这一点,公司应该从他们的私有数据中心(如果他们使用任何)转移到任何云环境,如AWS。不仅如此,他们还应该实现微服务架构,以便他们可以开始使用Docker容器。一旦他们准备好基础框架,他们就可以开始使用最好的编排平台,即Kubernetes。这将使团队能够自主地构建应用程序并快速交付它们。

场景5:

考虑一家拥有非常分散的系统的跨国公司,期待解决整体代码库问题。

您认为公司如何解决他们的问题?

那么,为了解决这个问题,我们可以将他们的单片代码库转移到微服务设计,然后每个微服务都可以被视为一个容器。因此,所有这些容器都可以在Kubernetes的帮助下进行部署和协调。

场景6:

我们所有人都知道,从单片到微服务的转变解决了开发方面的问题,但却增加了部署方面的问题。

公司如何解决部署方面的问题?

团队可以试验容器编排平台,例如Kubernetes,并在数据中心运行。因此,通过这种方式,公司可以生成模板化应用程序,在五分钟内部署它,并在此时将实际实例集中在暂存环境中。这种Kubernetes项目将有数十个并行运行的微服务,以提高生产率,即使节点出现故障,也可以立即重新安排,而不会影响性能。

场景7:

假设一家公司希望通过采用新技术来优化其工作负载的分配。

公司如何有效地实现这种资源分配?

这个问题的解决方案就是Kubernetes。Kubernetes确保资源得到有效优化,并且只使用特定应用程序所需的那些资源。因此,通过使用最佳容器编排工具,公司可以有效地实现资源分配。

场景8:

考虑一家拼车公司希望通过同时扩展其平台来增加服务器数量。

您认为公司如何处理服务器及其安装?

公司可以采用集装箱化的概念。一旦他们将所有应用程序部署到容器中,他们就可以使用Kubernetes进行编排,并使用像Prometheus这样的容器监视工具来监视容器中的操作。因此,利用容器的这种使用,在数据中心中为它们提供更好的容量规划,因为它们现在将受到更少的限制,因为服务和它们运行的硬件之间存在抽象。

场景9:

考虑一种情况,公司希望向具有各种环境的客户提供所有必需的分发。

您认为他们如何以动态的方式实现这一关键目标?

该公司可以使用Docker环境,组建一个横截面团队,使用Kubernetes构建Web应用程序。这种框架将帮助公司实现在最短的时间内将所需产品投入生产的目标。因此,在这样的机器运行的情况下,公司可以向所有具有各种环境的客户发放电子邮件。

场景10:

假设公司希望在不同的云基础架构上运行各种工作负载,从裸机到公共云。

公司将如何在不同界面的存在下实现这一目标?

该公司可以将其基础设施分解为微服务,然后采用Kubernetes。这将使公司在不同的云基础架构上运行各种工作负载。

多项选择面试问题

这部分问题将包括多项面试问题,这些问题在面试中经常被问到。

Q1。什么是Kubernetes集群中的minions?

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

面试问题,这些问题在面试中经常被问到。

Q1。什么是Kubernetes集群中的minions?

[外链图片转存中…(img-zcD2Aw4v-1715806423237)]
[外链图片转存中…(img-aqvSpZO9-1715806423238)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

Kubernetes是一个用于自动化容器化应用程序部署、扩展和管理的开源平台。它提供了一种可靠的方式来管理和编排容器,以便应用程序在集群中运行。[16] Kubernetes不是一个特定的技术或工具,而是一个完整的容器管理解决方案。它提供了许多功能,包括自动化部署和扩展、容器编排、服务发现和负载均衡、容器健康检查、故障恢复和自动化滚动更新等。[17] Kubernetes使用Deployment来定义和管理Pod的副本数量。Deployment可以指定应该在集群中运行多少个Pod的精确副本数量,这称为replication。它提供了滚动更新的功能,以便在不影响应用的情况下进行版本升级。 Kubernetes中的镜像下载策略是根据镜像是否已经在节点上存在来决定是否下载。如果镜像已经在节点上存在,则不会进行下载,直接使用已有的镜像。如果镜像不存在,则会根据配置的策略进行下载,常见的策略有Always、IfNotPresent和Never。 删除一个Pod会导致Kubernetes自动重新调度一个新的Pod来替代被删除的Pod。Kubernetes会根据定义的副本数量和调度策略来选择一个合适的节点,并在该节点上启动一个新的Pod。 Kubernetes Scheduler是负责将Pod绑定到Worker节点的组件。它根据定义的调度策略和节点资源的可用性来选择合适的节点。调度的过程是基于节点的资源需求和Pod的约束条件,并使用一些调度算法,如最佳适应和最差适应算法。 对于Pod的健康监测,Kubernetes提供了两种机制。一种是通过容器的探针来监测容器的健康状态,包括存活探针和就绪探针。另一种是通过使用kubelet组件来监测容器的运行状态,并将状态报告给Kubernetes控制平面。 Kubernetes使用两种算法来将Pod绑定到Worker节点:最佳适应算法和最差适应算法。最佳适应算法将Pod绑定到能够满足其资源需求的节点上,而最差适应算法将Pod绑定到资源最不充足的节点上,以便更好地利用资源。[15] 创建一个Pod的流程包括定义Pod的配置文件,使用kubectl命令将配置文件提交给Kubernetes API服务器,API服务器接收到请求后将Pod的配置信息存储到etcd中,然后调度器根据调度策略选择一个合适的节点,并在该节点上创建和启动Pod。[19] Kubernetes通过使用命名空间来隔离资源。每个命名空间都是一个独立的资源容器,拥有自己的Pod、服务、配置等资源。命名空间可以帮助用户将不同的应用程序或环境进行隔离,从而提高安全性和管理灵活性。[20] Kubernetes中的常用标签分类包括应用程序、环境、版本等。通过使用标签,可以根据需要对Pod、服务等资源进行分类和管理,实现更好的资源管理和组织。[21] 容器和主机部署应用的区别在于容器部署应用是将应用程序打包成容器镜像,并在Kubernetes集群中运行,而主机部署应用是直接在主机上安装和运行应用程序。容器部署提供了更好的隔离性、可移植性和扩展性,使应用程序更易于管理和部署。[22] Kubernetes Deployment的升级过程包括创建新的Pod副本、逐步将流量转移到新的Pod副本上、停止旧的Pod副本。这个过程可以保证应用程序在升级过程中的高可用性和零停机时间。[23] Kubernetes中的Metric Service可以用于收集和存储集群中的度量数据,如CPU使用率、内存使用率等。这些度量数据可以用于监控和调优集群的性能和资源利用情况。[24] Kubernetes中的RBAC(Role-Based Access Control)是一种访问控制机制,它基于角色和权限来管理用户对集群资源的访问。RBAC提供了更细粒度的权限控制和安全性,可以帮助管理员更好地管理和控制集群中的资源访问。[25] Kube-proxy在Kubernetes中的作用是提供网络代理和负载均衡的功能。它负责将集群内部的服务暴露给外部网络,并根据定义的服务规则将请求转发到相应的后端Pod。 以上是关于Kubernetes面试题的解答。希望对您有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [最新 2022 年 Kubernetes 面试题高级面试题及附答案解析](https://blog.csdn.net/afreon/article/details/122782334)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值