kubernetes面试题汇总


微信公众号搜索  DevOps和k8s全栈技术 ,关注之后,在后台回复 k8s面试题,可获取最新完整的kubernetes面试题pdf文档,也可扫描文章最后的二维码关注公众号。

kubernetes是什么?

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

kubernetes面试题汇总

1.kubernetes是什么?

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

自动化容器的部署和复制
随时扩展或收缩容器规模
将容器组织成组,并且提供容器间的负载均衡
很容易地升级应用程序容器的新版本
提供容器弹性,如果容器失效就替换它,等等...

2.Kubernetes 有哪些特点?

可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
可扩展: 模块化,插件化,可挂载,可组合
自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

3.Kubernetes架构和组件


4.Kubernetes所能识别的最小单元什么?

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

5.K8S与Swarm的共同点是什么?

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

6.关于集群

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

7.在安装Kubernetes时会因为无法拉取gcr.io镜像

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

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

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

9.centos下如何配置主机互信

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

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

11.怎样从外面访问一个跑着许多Docker实例的应用程序?
通过使用Kubernetes的Service资源,可以有多种方案实现对一个跑在Kubernetes里的带有多个实例的Docker应用的访问。可以使用一个公网IP来创建一个Service,一个负载均衡Service,或者说,如果是HTTP的情况下,用一个Kubernetes的Ingress资源。

12.Docker + Kubernetes只能在Linux环境下运行吗?
不,Docker加入对Windows的支持已经有一段时间了,而就在1.5版本的时候,Kubernetes加入了对Windows Server容器的支持,控制器仍然还跑在Linux上,然后Kubelet和Kubeproxy则可以在Windows上运行。

13.Kubernetes和Openstack发展方向是怎样的?它们之间存在很多分歧吗?
Kubernetes和Openstack是两个完全不同的东西;真的没有必要去比较它们,因为它们根本从来都碰不到一起。你可以在Openstack上跑Kubernetes,你也可以使用Kubernetes来编排Openstack,但是它们始终还是两个截然不同的东西。
14.Mirantis提供对Kubernetes的支持吗?
到目前为止,Mirantis的产品只限于Openstack,这也即是我们所支持的全部;当我们加入对Kubernetes的支持时,事情可能会有一定程度的转变,但是就目前而言,情况就是这样。
15.怎么把一个公网IP分配给一个跑在Openstack虚拟机里的Docker容器?

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

16.应用和运行时平台是怎样解耦的?
容器是设计成自包含的。因此可以创建一个包含了系统的所有内容,让它拥有完备的移植性。我们也应该明白一点,应用程序不可能完全和运行时平台解耦。举个例子,你如果有一个应用是用Mono(Linux版本的.NET)写的,你可以用Linux上的Kubernetes来运行它,但是直接用Windows Server容器跑的话就只能运行在Windows上的Kubernetes了。
17.Docker/Kubernetes可以用在Windows服务或者实际的应用,数据库,还有存储吗,或者说你可以创建windows的虚拟机然后在Kubernetes下面跑吗?
听上去所说的“实际应用”真的有点像是在说“宠物”类应用。如果是的话,那么最好还是用虚拟机来跑吧。
18.是不是可以这样说,Kubernetes的编排就像一个流程图?一系列一个接一个的动作?
理想情况下,这是对的,但是实际上它并不是这样 —— 反正不是直接如此。当你在YAML文件里包含了多个定义时,没有办法保证它们会以怎样特定的顺序去执行。要解决这个问题实现“流程图”效果的话,你可以看下Kubernetes新的APPController。
19.虽然容器是分层的,在宿主操作系统这块每个分层也是重复部署的。Openstack会为此提供一个轻量级的容器宿主虚拟机吗?
与其操心有没有一个轻量级的容器宿主虚拟机镜像,还不如考虑下用一个最小集操作系统作为容器的基础层,比如Alpine Linux。

20.企业部署k8s,多少节点合适

多少个节点看业务,还有物理机配置,假如一个物理机配置特别高,那你部署十个节点,比你用100 台低配置的机器都要跑的业务更多。

21.上万规模的容器的kubernetes集群,使用kubernetes时需要注意哪些问题?

上万规模需要用ipvs做转发,网络用calico性能更好。

22.kubernetes的运维中有哪些注意的要点?

注意做好hpa,还有livenessProbe和readnessProbe这种探测,数据持久化,监控等

23.kube-apiserver和kube-scheduler的作用是什么?

kube–apiserver遵循横向扩展架构,并且是主节点控制面板的前端。这将公开Kubernetes主节点组件的所有API,并负责在Kubernetes节点和Kubernetes主组件之间建立通信。kube-scheduler负责在工作节点上分配和管理工作负载。因此,它根据资源需求选择最合适的节点来运行Pod,并跟踪资源利用率。它可以确保未在已满的节点上调度工作负载。

24.您能简要介绍一下Kubernetes控制器管理器吗?

多个控制器进程在主节点上运行,但被编译在一起以作为单个进程(即Kubernetes Controller Manager)运行。因此,Controller Manager是一个守护程序,它嵌入控制器并执行名称空间创建和垃圾回收。它负责并与API服务器通信以管理端点。因此,在主节点上运行的不同类型的控制器管理器为:

25.什么是ETCD?

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

26.Kubernetes中有哪些不同类型的服务?

27.什么是Ingress网络?它如何工作?

入口网络是充当Kubernetes集群入口点的规则的集合。这允许入站连接,可以将其配置为通过可访问的URL,负载平衡流量或通过提供基于名称的虚拟主机在外部提供服务。因此,Ingress是一个API对象,通常通过HTTP管理群集中对服务的外部访问,这是公开服务的最强大方法。现在,让我通过一个示例向您解释Ingress网络的工作原理。有2个节点具有带有Linux网桥的pod和根网络名称空间。除此之外,还在根网络中添加了一个名为flannel0(网络插件)的新虚拟以太网设备。现在,假设我们希望数据包从pod1到pod4。请参考下图。


因此,数据包在eth0离开pod1的网络,在veth0进入根网络。
然后将其传递给cbr0,后者发出ARP请求以查找目标,并且发现该节点上没有人具有目标IP地址。
因此,网桥将数据包发送到flannel0,因为节点的路由表已配置了flannel0。现在,法兰绒守护程序与Kubernetes的API服务器进行对话,以了解所有Pod IP及其各自的节点,以创建Pod IP到节点IP的映射。
网络插件将该数据包包装在带有额外报头的UDP数据包中,该报头将源IP和目标IP更改为它们各自的节点,然后通过eth0发送此数据包。
现在,由于路由表已经知道如何在节点之间路由流量,因此它将数据包发送到目标节点2。
数据包到达node2的eth0,然后返回flannel0进行解封装,然后将其发送回根网络名称空间。
再次将数据包转发到Linux网桥,以发出ARP请求,以找出属于veth1的IP。
数据包最终穿过根网络并到达目标Pod4。

28.什么是联合集群?

借助联合集群,可以将多个Kubernetes集群作为一个集群进行管理。因此,您可以在一个数据中心/云中创建多个Kubernetes集群,并使用联合在一个地方控制/管理所有集群。

29.您能否简要介绍一下Kubernetes中主节点的工作?

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

30.Kubelet 调用的处理检查容器的IP地址是否打开的程序是?

TCPSocketAction 

技术交流

学无止境,了解更多关于kubernetes/docker/devops/openstack/openshift/linux/IaaS/PaaS相关内容,想要获取更多资料和免费视频,可按如下方式进入技术交流群

微信:luckylucky421302

按如下指纹可关注公众号



参考链接如下:

https://blog.csdn.net/ARPOSPF/article/details/98476793
https://www.edureka.co/blog/interview-questions/kubernetes-interview-questions
  • 2
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
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
发出的红包

打赏作者

韩先超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值