【Kubernetes】常见面试题汇总(一)

1.简述 etcd 及其特点?

(1)etcd 是Core0s 团队发起的开源项目,是一个管理配置信息和服务发现(service discovery)的项目,它的目标是构建一个高可用的分布式键值(keyvalue)数据库,基于 Go 语言实现。

(2)特点:

① 简单:支持 REST 风格的 HTTP+JSON API

② 安全:支持 HTTPS 方式的访问

③ 快速:支持并发 1k/s 的写操作

④ 可靠:支持分布式结构,基于 Raft的一致性算法,Raft是一套通过选举主节点来实现分布式系统一致性的算法。

2.简述 etcd 适应的场景?

etcd 基于其优秀的特点,可广泛的应用于以下场景:

① 服务发现(Service Discovery):

服务发现主要解决在同一个分布式集群中的进程或服务,要如何才能找到对方并建立连接。本质上来说,服务发现就是想解集群中是否有进程在监听 udp 或 tcp 端口,并且通过名字就可以查找和连接。

② 消息发布与订阅:

在分布式系统中,最适用的一种组件间通信方式就是消息发布与订阅。即构建一个配置共享中心,数据提供者在这个配置中心发布消息,而消息使用者则订阅他们关心的主题,一旦主题有消息发布,就会实时通知订阅通过这种方式可以做到分布式系统配置的集中式管理与动态更新。应用中用到的-些配置信息放到 etcd 上进行集中管理。

③ 负载均衡:

在分布式系统中,为了保证服务的高可用以及数据的一致性,通常都会把数据和服务部署多份,以此达到对等服务,即使其中的某一个服务失效了也不影响使用。etcd 本身分布式架构存储的信息访问支持负载均衡。etcd龙化以后,每个 etcd的核心节点都可以处理用户的请求。所以,把数据量小但是访问频繁的消息数据直接存储到 etcd 中也可以实现负载均衡的效果。

④ 分布式通知与协调:

与消息发布和订阅类似,都用到了etcd中的Watcher机制,通过注册与异步通知机制,实现分布式环境下不同系统之间的通知与协调从而对数据变更做到实时处理。

⑤ 分布式锁:

因为 etcd 使用 Raft 算法保持了数据的强一致性,某次操作存储到集群中的值必然是全局一致的,所以很容易实现分布式锁。锁服务有两种使用方式,一是保持独占,二是控制时序。

⑥ 集群监控与 Leader 竞选:

通过 etcd 来进行监控实现起来非常简单并且实时性强。

3.简述什么是Kubernetes?

- Kubernetes 是一个全新的基于容器技术的分布式系统支撑平台。是 Google 开源的容器集群管理系统(谷歌内部:Borg)。

- 在 Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。并且具有完备的集群管理能力,多层次的安全防护和准入机制ス租户应用支撑能力、透明的服务注册和发现机制、内建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力。

4.简述 Kubernetes和 Docker的关系?

- Docker 提供容器的生命周期管理和,Docker 镜像构建运行时容器。

- 它的主要优点是将将软件/应用程序运行所需的设置和依赖项打包到一个容器中,从而实现了可移植性等优点。

- Kubernetes 用于关联和编排在多个主机上运行的容器。
 

### YOLOv8 模型每层 GFLOPs 计算 对于YOLOv8模型而言,计算每一层GFLOPs(十亿浮点运算次数)有助于理解其计算复杂度效率。GFLOPs是一个衡量神经网络计算成本的重要指标。 #### 1. 基础卷积层 基础卷积操作通常由以下参数决定:输入通道数\(C_{in}\),输出通道数\(C_{out}\),核大小\(K\),步幅\(S\)以及填充\(P\)。假设输入张量尺寸为\((H,W,C_{in})\),则单个标准卷积层的FLOPs可表示为: \[ \text{FLOPs} = H'W'C_{out}(K^2 C_{in} + 1) \] 其中,加一是因为偏置项的存在;\(H'\) \(W'\) 是经过卷积后的高度宽度,取决于原始尺寸、步长等因素[^1]。 #### 2. PConv 特殊卷积模块 针对YOLOv8中的特殊设计——PConv部分卷积[PConv【CVPR2023】]^[],这种结构减少了不必要的计算开销并降低了内存占用。具体到GFLOPs方面,由于只处理感兴趣区域而非整个感受野范围内的像素值,因此理论上可以显著减少乘法累加(MACs)数量,从而降低整体计算负担[^2]。 #### 3. Concat 层的影响 当涉及到Concat连接不同层次特征图的操作时,比如文中提到的例子[-1, 6]代表将前一层与第六层的结果沿指定轴(这里是维度1即channel方向)拼接起来形成新的tensor,则此时不会增加额外的MACs数目,但是会改变后续层的数据规模进而影响它们各自的GFLOPs统计[^3]。 为了精确获取YOLOv8各层具体的GFLOPs数值,可以通过如下Python代码实现自动化测量: ```python from thop import profile import torch from ultralytics import YOLO model_path = r'/projects/ultralytics/ultralytics/cfg/models/v8/yolov8_PConv.yaml' device = 'cuda' if torch.cuda.is_available() else 'cpu' # 加载预训练好的YOLOv8模型 model = YOLO(model_path).to(device) input_tensor = torch.randn(1, 3, 640, 640).to(device) # 创建随机输入数据 macs, params = profile(model, inputs=(input_tensor,), verbose=False) print(f'Total MACs: {macs / 1e9:.2f} GMac') ``` 上述脚本利用`thop`库来评估给定模型在整个推理过程中的总MACs,并将其转换成GMacs单位显示出来。需要注意的是,这给出的是全局统计数据而不是分层详情。如果想要得到更详细的逐层信息,可能需要深入研究框架内部API或借助其他工具如TensorFlow Profiler等来进行更加细致化的分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值