2026年容器与K8s运维试卷(含答案)_第1页
2026年容器与K8s运维试卷(含答案)_第2页
2026年容器与K8s运维试卷(含答案)_第3页
2026年容器与K8s运维试卷(含答案)_第4页
2026年容器与K8s运维试卷(含答案)_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026年容器与K8s运维试卷(含答案)一、单项选择题(共15题,每题2分,共30分)1.在Docker中,关于Dockerfile指令的描述,以下哪一项是正确的?A.`FROM`指令必须是Dockerfile的第一个非注释指令。B.`RUN`指令在构建镜像时执行,而`CMD`指令在容器启动时执行。C.`ENTRYPOINT`指令指定的命令可以被`dockerrun`命令行参数覆盖。D.`COPY`和`ADD`指令功能完全相同,可以互换使用。答案:A2.Kubernetes中,以下哪个资源对象主要用于定义一组Pod的访问策略,控制Pod之间的网络通信?A.NetworkPolicyB.IngressC.ServiceD.ConfigMap答案:A3.关于Kubernetes的Service类型,以下哪种类型会将Pod直接暴露在集群外部,并为Pod分配一个云服务商提供的公网IP?A.ClusterIPB.NodePortC.LoadBalancerD.ExternalName答案:C4.在Kubernetes中,一个Pod一直处于`Pending`状态,最不可能的原因是?A.调度器没有找到合适的节点(如资源不足、节点选择器不匹配)。B.正在从镜像仓库拉取容器镜像。C.节点资源不足(如CPU、内存)。D.Pod的亲和性/反亲和性规则导致无法调度。答案:B5.以下哪个Docker命令可以查看容器内部运行的进程?A.`dockerps`B.`dockertop<container_id>`C.`dockerstats<container_id>`D.`dockerinspect<container_id>`答案:B6.在Kubernetes中,用于存储非敏感配置数据的资源对象是?A.SecretB.ConfigMapC.PersistentVolumeD.DownwardAPI答案:B7.关于容器镜像的层(Layer)和联合文件系统(UnionFS),以下说法错误的是?A.镜像层是只读的,容器层是可写的。B.多个镜像可以共享相同的只读层,节省存储空间。C.删除容器层中的文件,会同时删除底层镜像层中对应的文件。D.每一条Dockerfile指令(如`RUN`,`COPY`)通常会创建一个新的镜像层。答案:C8.Kubernetes的Deployment控制器通过以下哪个概念来管理Pod的更新和回滚?A.ReplicaSetB.StatefulSetC.DaemonSetD.Job答案:A9.使用`kubectl`命令查看Pod的详细信息,包括事件(Events),应该使用哪个命令?A.`kubectlgetpods`B.`kubectldescribepods<pod_name>`C.`kubectllogs<pod_name>`D.`kubectlexec<pod_name>--<command>`答案:B10.在Docker中,以下哪个命令用于将本地的镜像推送到远程镜像仓库?A.`dockerpull`B.`dockerpush`C.`dockertag`D.`dockercommit`答案:B11.Kubernetes中,Pod的`readinessProbe`(就绪探针)的主要作用是?A.检查容器应用是否启动完成,启动失败则重启容器。B.检查容器应用是否健康,不健康则重启容器。C.检查容器应用是否准备好接收流量,未准备好则将其从Service的负载均衡池中移除。D.检查容器应用是否存活,不存活则重启整个Pod。答案:C12.关于Kubernetes的命名空间(Namespace),以下描述错误的是?A.资源名称在同一个命名空间内必须唯一,跨命名空间可以重复。B.大多数Kubernetes资源(如Pod、Service)都隶属于某个命名空间。C.`kube-system`命名空间存放Kubernetes系统组件相关的Pod。D.无法限制一个命名空间内可使用的计算资源总量。答案:D13.以下哪个是Kubernetes中用于实现有状态应用部署的控制器?A.DeploymentB.StatefulSetC.DaemonSetD.ReplicaSet答案:B14.Docker容器的默认网络模式是?A.host模式B.bridge模式C.container模式D.none模式答案:B15.在KubernetesYAML文件中,`spec.containers[].resources.limits`字段的作用是?A.定义容器启动所需的最小资源。B.定义容器可以使用的最大资源量,超过此限制容器可能会被终止或重启。C.定义Pod调度到节点上所需的最小资源。D.定义整个命名空间的资源配额。答案:B二、多项选择题(共5题,每题3分,共15分,多选、错选、漏选均不得分)1.以下哪些是KubernetesService支持的服务发现方式?A.环境变量B.DNSC.CoreDNSD.负载均衡器IP答案:A,B2.关于KubernetesConfigMap的使用方式,以下哪些是正确的?A.通过环境变量注入到容器中。B.作为卷(Volume)挂载到容器内的目录下。C.在Pod的命令行参数中引用。D.直接存储数据库密码等敏感信息。答案:A,B,C3.以下哪些Kubernetes资源对象属于命名空间(Namespace)级别?A.NodeB.PersistentVolumeC.DeploymentD.Secret答案:C,D4.下列哪些操作可以触发KubernetesDeployment的滚动更新?A.修改Deployment的Pod模板(`.spec.template`),例如更新镜像标签。B.使用`kubectlscale`命令调整副本数。C.使用`kubectledit`命令直接编辑Deployment的YAML文件并保存。D.使用`kubectlsetimage`命令更新容器镜像。答案:A,C,D5.在Docker中,以下哪些命令或方式可以用于查看容器的日志?A.`dockerlogs<container_id>`B.`dockerattach<container_id>`C.进入容器后查看`/var/log`目录。D.配置日志驱动(LoggingDriver)将日志发送到外部系统。答案:A,B,D三、填空题(共10空,每空2分,共20分)1.Docker镜像仓库DockerHub的官方地址是______。答案:hub.docker2.在Kubernetes中,负责监控集群节点状态,并在节点故障时将节点标记为不可用的组件是______。答案:节点控制器(NodeController)3.Kubernetes中,最小的调度和管理单位是______。答案:Pod4.在Dockerfile中,用于声明容器运行时监听的端口的指令是______。答案:EXPOSE5.Kubernetes中,用于将外部流量通过HTTP/HTTPS路由到集群内部Service的资源对象是______。答案:Ingress6.使用`kubectl`命令将Pod的端口8080映射到本地机器的9090端口,命令是`kubectlport-forwardpod/<pod_name>______`。答案:9090:80807.在Kubernetes中,用于定义Pod对资源(如CPU、内存)请求(Request)和限制(Limit)的字段位于PodSpec的______部分。答案:resources8.Docker容器与宿主机之间进行文件拷贝的命令是`docker______`。答案:cp9.Kubernetes的`kube-proxy`组件默认使用______模式来实现Service的负载均衡。答案:iptables10.在Kubernetes中,一个`ReplicaSet`通过______来识别它应该管理哪些Pod。答案:标签选择器(LabelSelector)四、简答题(共5题,每题6分,共30分)1.简述Docker镜像(Image)和容器(Container)的区别与联系。答案:区别:镜像是静态的、分层的、只读的文件模板,包含了运行应用所需的代码、运行时环境、库和配置。容器是镜像的一个运行实例,它在镜像的只读层之上增加了一个可写的容器层,使得应用进程可以在一个隔离的环境中运行。镜像是构建和分发的单位,容器是运行的单位。联系:容器基于镜像创建。没有镜像,就无法启动容器。镜像定义了容器运行时的初始状态。多个容器可以基于同一个镜像创建,每个容器拥有独立的可写层和运行时状态。2.简述Kubernetes中Deployment、ReplicaSet和Pod三者之间的关系。答案:Deployment是更高层次的抽象,用于管理应用的无状态部署。它通过创建和管理ReplicaSet来实现对Pod副本数的声明式控制以及滚动更新和回滚功能。ReplicaSet是下一代ReplicationController,其作用是确保指定数量的、符合标签选择器的Pod副本始终处于运行状态。Pod是Kubernetes中运行应用实例的最小单位,包含一个或多个紧密关联的容器。因此,Deployment控制ReplicaSet,ReplicaSet控制Pod。用户通常直接操作Deployment,由Deployment自动创建和管理对应的ReplicaSet。3.说明Kubernetes中LivenessProbe(存活探针)和ReadinessProbe(就绪探针)的主要区别。答案:主要区别在于目的和失败后的处理方式。LivenessProbe(存活探针):用于检测容器应用是否仍在运行。如果探测失败,kubelet会认为容器不健康,并根据Pod的重启策略(RestartPolicy)杀死并重启容器。其目的是恢复故障的应用实例。ReadinessProbe(就绪探针):用于检测容器应用是否已经准备好接收外部流量(如HTTP请求)。如果探测失败,端点控制器(EndpointController)会将此Pod的IP地址从关联的Service的端点(Endpoint)列表中移除,意味着该Pod不会被Service的负载均衡器选中,直到探测成功。其目的是防止将流量转发到尚未准备好的Pod。4.列举三种Docker容器网络模式并简要说明其特点。答案:(1)bridge(桥接)模式:默认模式。Docker守护进程会创建一个名为`docker0`的虚拟网桥,并为每个容器分配一个虚拟网络接口和IP地址。容器通过NAT方式与外部网络通信。容器间可以通过IP地址相互访问。(2)host(主机)模式:容器不会虚拟出自己的网卡,而是直接使用宿主机的网络栈(IP地址和端口)。容器网络性能最好,但失去了网络隔离性,端口容易冲突。(3)none(无网络)模式:容器拥有自己的独立网络命名空间,但不进行任何网络配置。容器内部只有环回(loopback)接口,无法进行网络通信。用户需要手动配置网络。5.在Kubernetes中,什么是污点(Taint)和容忍度(Toleration)?请说明其作用。答案:污点(Taint)是应用于节点(Node)上的一个属性,它允许节点排斥一类特定的Pod(除非Pod明确声明可以容忍这些污点)。污点包含键(key)、值(value)和效果(effect,如`NoSchedule`、`PreferNoSchedule`、`NoExecute`)。容忍度(Toleration)是应用于Pod上的配置,允许(但不强制要求)Pod调度到带有匹配污点的节点上。作用:污点和容忍度共同工作,使节点能够控制哪些Pod可以被调度上来。典型的应用场景包括:将专用节点(如GPU节点)保留给特定Pod使用;将存在问题的节点(如磁盘故障、内存不足)标记为不调度新Pod;或者将Pod驱逐出运行异常的节点。五、应用题(共3题,第1题10分,第2题15分,第3题20分,共45分)1.计算分析题某Kubernetes集群有一个节点(Node-A),其资源总量为:CPU4核,内存8GiB。现有以下Pod调度请求:Pod-P1:请求(requests)CPU500m,内存1Gi;限制(limits)CPU1,内存2Gi。Pod-P2:请求CPU1500m,内存2Gi;限制CPU2,内存3Gi。Pod-P3:请求CPU1000m,内存4Gi;限制CPU1500m,内存4Gi。(1)从资源请求(Requests)的角度,Node-A最多可以同时调度运行上述Pod中的几个?请列出计算过程。(2)如果Pod-P1和Pod-P2已经运行在Node-A上,此时尝试调度Pod-P3,调度器(kube-scheduler)会根据哪个值进行决策?结果是什么?答案:(1)计算节点总资源及每个Pod请求资源:节点总请求资源上限:CPU4000m,内存8192Mi。Pod-P1请求:CPU500m,内存1024Mi。Pod-P2请求:CPU1500m,内存2048Mi。Pod-P3请求:CPU1000m,内存4096Mi。尝试组合:P1+P2:CPU2000m,内存3072Mi。剩余资源:CPU2000m,内存5120Mi。可容纳P3(CPU1000m,内存4096Mi)。故可同时运行P1,P2,P3。P1+P3:CPU1500m,内存5120Mi。剩余资源:CPU2500m,内存3072Mi。可容纳P2(CPU1500m,内存2048Mi)。故可同时运行P1,P2,P3。P2+P3:CPU2500m,内存6144Mi。剩余资源:CPU1500m,内存2048Mi。可容纳P1(CPU500m,内存1024Mi)。故可同时运行P1,P2,P3。因此,从资源请求角度,Node-A最多可以同时调度运行P1、P2、P3三个Pod。(2)调度器决策基于Pod的资源请求(Requests),而非限制(Limits)。当前已分配资源:P1请求(500m,1Gi)+P2请求(1500m,2Gi)=已用CPU2000m,内存3Gi。节点剩余可分配资源:CPU2000m,内存5Gi。Pod-P3的请求是CPU1000m,内存4Gi。节点剩余资源满足P3的请求。因此,调度器决策结果是可以将Pod-P3调度到Node-A上。2.故障排查分析题假设你管理的一个Kubernetes集群中,某个名为`app-frontend-7c79b4f8cc-abcde`的Pod状态为`CrashLoopBackOff`。请写出你进行故障排查的主要步骤和可能用到的命令。答案:主要排查步骤及命令:(1)查看Pod基本状态和事件:`kubectldescribepodapp-frontend-7c79b4f8cc-abcde-n<namespace>`。重点关注`Events`部分,查看是否有镜像拉取失败、调度失败、容器启动失败等信息。(2)查看容器日志:`kubectllogsapp-frontend-7c79b4f8cc-abcde-n<namespace>`。如果Pod内有多个容器,使用`-c<container_name>`指定容器。查看应用启动过程中的错误日志。(3)查看前一个容器的日志(如果容器反复重启):`kubectllogsapp-frontend-7c79b4f8cc-abcde-n<namespace>--previous`。(4)检查Pod定义和关联资源:`kubectlgetpodapp-frontend-7c79b4f8cc-abcde-n<namespace>-oyaml`。检查镜像名称/标签是否正确、资源限制是否过小、环境变量配置、存储卷挂载、探针配置等。(5)检查Deployment或其他控制器:`kubectldescribedeploymentapp-frontend-n<namespace>`,查看控制器状态和事件。(6)如果日志信息不足,考虑进入容器调试(如果容器能短暂运行):`kubectlexec-itapp-frontend-7c79b4f8cc-abcde-n<namespace>--/bin/sh`(或bash)。检查配置文件、依赖服务等。(7)检查节点资源:`kubectldescribenode<node_name>`,查看节点是否资源不足或存在污点。(8)检查镜像本身:尝试在本地或测试环境运行该镜像,确认镜像是否可正常启动。常见原因:应用启动错误(代码/配置)、资源不足(OOMKilled)、依赖服务不可用、镜像拉取失败、存储卷挂载失败、不合理的存活探针等。3.综合设计题公司计划将一个传统的三层Web应用(包含前端Web服务器、后端应用服务器和数据库)容器化并迁移到Kubernetes集群。请设计一个简要的Kubernetes部署方案,要求:(1)为每个组件(前端、后端、数据库)选择合适的Kubernetes工作负载资源(WorkloadResource)类型(如Deployment,StatefulSet等),并说明理由。(2)说明各组件之间如何实现服务发现与通信。(3)如何为前端Web服务配置外部访问(假设需要通过HTTPS从公网访问)?(4)如何管理后端应用连接数据库所需的密码等敏感信息?(5)如何保证数据库数据的持久化存储?答案:(1)工作负载资源选择:前端Web服务器:使用`Deployment`。前端通常是无状态服务,可以水平扩展,适合用Deployment管理多副本,并实现滚动更新。后端应用服务器:使用`Deployment`。后端应用通常也是无状态或可无状态化的服务(会话状态外置),同样适合用Deployment进行部署和伸缩。数据库:使用`StatefulSet`。数据库是有状态应用,需要稳定的网络标识(Pod名称)、持久化存储和有序的部署/扩缩容。StatefulSet能提供稳定的Pod名称(如`db-0`,`db-1`)和持久化存储卷模板(PersistentVolumeClaimTemplate),非常适合部署数据库主从或集群。(2)服务发现与通信:为每个组件创建对应的Kubernetes`Service`。为前端Deployment创建`Service`(如`frontend-svc`,类型可为ClusterIP或根据需求选择)。为后端Deployment创建`Service`(如`backend-svc`,类型ClusterIP)。为数据库StatefulSet创建`Service`(如`db-svc`,类型ClusterIP,用于集群内访问;可为StatefulSet创建HeadlessService用于Pod间直接发现)。前端Pod通过`backend-svc`的服务名(DNS名称)访问后端。后端Pod通过`db-svc`的服务名访问数据库。Kubernetes的DNS服务(如CoreDNS)会自动将服务名解析为对应的ClusterIP,然后通过kube-proxy实现负载均衡。(3)前端外部访问:采用`Ingress`资源配合`IngressController`(如NginxIngressController)实现。步骤:部署一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论