40 道精选k8s 面试题👍(完结)
简述 ETCD 及其特点?
etcd 是 CoreOS 团队发起的开源项目,是一个管理配置信息和服务发现(service discovery)的项目,它的目标是构建一个高可用的分布式键值(key-value)数据库,基于 Go 语言实现。
- 简单:支持 REST 风格的 HTTP+JSON API
- 安全:支持 HTTPS 方式的访问
- 快速:支持并发 1k/s 的写操作
- 可靠:支持分布式结构,基于 Raft 的一致性算法,Raft 是一套通过选举主节点来实现分布式系统一致性的算法。
简述 ETCD 适应的场景?
etcd基于其优秀的特点,可广泛的应用于以下场景:
服务发现(Service Discovery):服务发现主要解决在同一个分布式集群中的进程或服务,要如何才能找到对方并建立连接。本质上来说,服务发现就是想要了解集群中是否有进程在监听 udp 或 tcp 端口,并且通过名字就可以查找和连接。
消息发布与订阅:在分布式系统中,最适用的一种组件间通信方式就是消息发布与订阅。即构建一个配置共享中心,数据提供者在这个配置中心发布消息,而消息使用者则订阅他们关心的主题,一旦主题有消息发布,就会实时通知订阅者。通过这种方式可以做到分布式系统配置的集中式管理与动态更新。应用中用到的一些配置信息放到 etcd 上进行集中管理。
负载均衡:在分布式系统中,为了保证服务的高可用以及数据的一致性,通常都会把数据和服务部署多份,以此达到对等服务,即使其中的某一个服务失效了,也不影响使用。etcd 本身分布式架构存储的信息访问支持负载均衡。etcd 集群化以后,每个 etcd 的核心节点都可以处理用户的请求。所以,把数据量小但是访问频繁的消息数据直接存储到 etcd 中也可以实现负载均衡的效果。
分布式通知与协调:与消息发布和订阅类似,都用到了 etcd 中的 Watcher 机制,通过注册与异步通知机制,实现分布式环境下不同系统之间的通知与协调,从而对数据变更做到实时处理。
分布式锁:因为 etcd 使用 Raft 算法保持了数据的强一致性,某次操作存储到集群中的值必然是全局一致的,所以很容易实现分布式锁。锁服务有两种使用方式,一是保持独占,二是控制时序。
集群监控与 Leader 竞选:通过 etcd 来进行监控实现起来非常简单并且实时性强。
简述什么是 Kubernetes?
Kubernetes是一个全新的基于容器技术的分布式系统支撑平台。是 Google 开源的容器集群管理系统(谷歌内部:Borg)。在 Docker 技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。并且具有完备的集群管理能力,多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、內建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力。
简述 Kubernetes 和 Docker 的关系?
Docker 提供容器的生命周期管理和,Docker 镜像构建运行时容器。它的主要优点是将将软件/应用程序运行所需的设置和依赖项打包到一个容器中,从而实现了可移植性等优点。
Kubernetes 用于关联和编排在多个主机上运行的容器。
简述 Kubernetes 中什么是 Minikube、Kubectl、Kubelet?
Minikube 是一种可以在本地轻松运行一个单节点 Kubernetes 群集的工具。
Kubectl 是一个命令行工具,可以使用该工具控制Kubernetes集群管理器,如检查群集资源,创建、删除和更新组件,查看应用程序。
Kubelet 是一个代理服务,它在每个节点上运行,并使从服务器与主服务器通信。
简述 Kubernetes 常见的部署方式?
常见的Kubernetes部署方式有:
- kubeadm:也是推荐的一种部署方式;
- 二进制:CentOS 搭建 K8S
- minikube:在本地轻松运行一个单节点 Kubernetes 群集的工具。
简述 Kubernetes 如何实现集群管理?
在集群管理方面,Kubernetes 将集群中的机器划分为一个 Master 节点和一群工作节点 Node。其中,在 Master 节点运行着集群管理相关的一组进程 kube-apiserver、kube-controller-manager 和 kube-scheduler,这些进程实现了整个集群的资源管理、Pod 调度、弹性伸缩、安全控制、系统监控和纠错等管理能力,并且都是全自动完成的。
简述 Kubernetes 的优势、适应场景及其特点?
Kubernetes作为一个完备的分布式系统支撑平台,其主要优势:
- 容器编排
- 轻量级
- 开源
- 弹性伸缩
- 负载均衡
Kubernetes常见场景:
- 快速部署应用
- 快速扩展应用
- 无缝对接新的应用功能
- 节省资源,优化硬件资源的使用
Kubernetes 相关特点:
- 可移植: 支持公有云、私有云、混合云、多重云(multi-cloud)。
- 可扩展: 模块化,、插件化、可挂载、可组合。
- 自动化: 自动部署、自动重启、自动复制、自动伸缩/扩展。
简述 Kubernetes 的缺点或当前的不足之处?
Kubernetes 当前存在的缺点(不足)如下:
- 安装过程和配置相对困难复杂。
- 管理服务相对繁琐。
- 运行和编译需要很多时间。
- 它比其他替代品更昂贵。
- 对于简单的应用程序来说,可能不需要涉及 Kubernetes 即可满足。
简述 Kubernetes 相关基础概念?
master:k8s 集群的管理节点,负责管理集群,提供集群的资源数据访问入口。拥有 Etcd 存储服务(可选),运行 Api Server 进程,Controller Manager 服务进程及 Scheduler 服务进程。
node(worker):Node(worker)是 Kubernetes 集群架构中运行 Pod 的服务节点,是 Kubernetes 集群操作的单元,用来承载被分配 Pod 的运行,是 Pod 运行的宿主机。运行 docker eninge 服务,守护进程 kunelet 及负载均衡器 kube-proxy。
pod:运行于 Node 节点上,若干相关容器的组合(Kubernetes 之 Pod 实现原理)。Pod 内包含的容器运行在同一宿主机上,使用相同的网络命名空间、IP 地址和端口,能够通过 localhost 进行通信。Pod 是Kurbernetes进行创建、调度和管理的最小单位,它提供了比容器更高层次的抽象,使得部署和管理更加灵活。一个 Pod 可以包含一个容器或者多个相关容器。
label:Kubernetes中的 Label 实质是一系列的 Key/Value 键值对,其中 key 与 value 可自定义。Label 可以附加到各种资源对象上,如 Node、Pod、Service、RC 等。一个资源对象可以定义任意数量的 Label,同一个 Label 也可以被添加到任意数量的资源对象上去。Kubernetes 通过 Label Selector(标签选择器)查询和筛选资源对象。
Replication Controller:Replication Controller 用来管理 Pod 的副本,保证集群中存在指定数量的 Pod 副本。集群中副本的数量大于指定数量,则会停止指定数量之外的多余容器数量。反之,则会启动少于指定数量个数的容器,保证数量不变。Replication Controller 是实现弹性伸缩、动态扩容和滚动升级的核心。
Deployment:Deployment 在内部使用了 RS 来实现目的,Deployment 相当于 RC 的一次升级,其最大的特色为可以随时获知当前 Pod 的部署进度。
HPA(Horizontal Pod Autoscaler):Pod 的横向自动扩容,也是 Kubernetes 的一种资源,通过追踪分析 RC 控制的所有 Pod 目标的负载变化情况,来确定是否需要针对性的调整 Pod 副本数量。
Service:Service(Kubernetes 之服务发现)定义了 Pod 的逻辑集合和访问该集合的策略,是真实服务的抽象。Service 提供了一个统一的服务访问入口以及服务代理和发现机制,关联多个相同 Label 的 Pod,用户不需要了解后台 Pod 是如何运行。
Volume:Volume 是 Pod 中能够被多个容器访问的共享目录,Kubernetes中的 Volume 是定义在 Pod 上,可以被一个或多个 Pod 中的容器挂载到某个目录下。
Namespace:Namespace 用于实现多租户的资源隔离,可将集群内部的资源对象分配到不同的 Namespace 中,形成逻辑上的不同项目、小组或用户组,便于不同的 Namespace 在共享使用整个集群的资源的同时还能被分别管理。
简述 Kubernetes 集群相关组件?
Kubernetes Master 控制组件,调度管理整个系统(集群),包含如下组件:
Kubernetes API Server:作为 Kubernetes 系统的入口,其封装了核心对象的增删改查操作,以 RESTful API 接口方式提供给外部客户和内部组件调用,集群内各个功能模块之间数据交互和通信的中心枢纽。
Kubernetes Scheduler:为新建立的 Pod 进行节点(node)选择(即分配机器),负责集群的资源调度。
Kubernetes Controller:负责执行各种控制器,目前已经提供了很多控制器来保证 Kubernetes 的正常运行。
Replication Controller:管理维护 Replication Controller,关联 Replication Controller 和 Pod,保证 Replication Controller 定义的副本数量与实际运行 Pod 数量一致。
Node Controller:管理维护 Node,定期检查 Node 的健康状态,标识出(失效|未失效)的 Node 节点。
Namespace Controller:管理维护 Namespace,定期清理无效的 Namespace,包括 Namesapce 下的 API 对象,比如 Pod、Service 等。
Service Controller:管理维护 Service,提供负载以及服务代理。
EndPoints Controller:管理维护 Endpoints,关联 Service 和 Pod,创建 Endpoints 为 Service 的后端,当 Pod 发生变化时,实时更新 Endpoints。
Service Account Controller:管理维护 Service Account,为每个...
未能定位到原文的划线
企业级Agent工作流编排项目PaiFlow
Vibe Coding版本的PaiAgent
派聪明RAG AI知识库Java版本+Go版本
微服务 PmHub、技术派、MYDB
求职派JobClaw(OpenClaw/Hermes架构
PaiCLI(类似Claude Code的Agent
派简历(代码已完成)
等实战项目。
1. 微信扫右侧的优惠券加入知识星球
2. 解锁星球的实战项目教程和源码: 项目源码+教程获取
真诚点赞 诚不我欺
回复