Kubernetes

1基本概念

Node(节点)

集群里的服务器主机,物理机 / 虚拟机,K8s 把应用跑在 Node 上;一个集群由多个 Node 组成。

Ingress(入口)

集群外部访问入口,相当于 K8s 的七层负载均衡(Nginx/Traefik)。 根据域名、路径转发请求到后端 Service,暴露网站给外网。

Volumes(存储卷)

给 Pod 提供持久化存储。Pod 销毁后容器内数据会丢失,Volume 可以把数据独立保存,挂载到容器里。

Pod

K8s 最小调度单元,一个或多个容器的封装(通常 1 个业务容器)。所有应用都跑在 Pod 里;Pod 是临时的,随时会重建。

ConfigMap(cm)

非敏感配置文件,把配置项(yaml、环境变量)抽离出来,单独管理,挂载给 Pod。 比如应用的配置文件、参数,不用打包进镜像。

Deployment(deploy)

无状态应用控制器,管理 Pod 副本。负责创建、扩缩容、滚动更新、回滚。 适合 web 服务、微服务这类无状态业务。

Service(svc)

Pod 的固定访问入口。Pod IP 会动态变化,Service 提供稳定 IP,做四层负载均衡,把请求转发给一组 Pod。 集群内部服务互相访问靠 Service。

Secret

敏感配置,类似 ConfigMap,但专门存密码、密钥、token、证书,会做 base64 编码存储。

StatefulSet(sts)

有状态应用控制器。管理有状态 Pod(MySQL、Redis、Zookeeper)。 Pod 有固定名称、稳定网络标识、持久存储;有序部署、有序扩缩容。

2

3Kubernetes 是什么?有什么用?怎么用?

一句话开篇:Kubernetes 简称 K8s,是谷歌开源的容器编排平台,用来大规模统一管理容器化应用。

1. K8s 是什么

K8s 是容器编排系统。底层依托 Docker 这类容器引擎。 容器打包应用和依赖;K8s 负责调度、管理大量容器,屏蔽底层服务器差异,实现应用自动化部署、扩缩容、自愈。

2. 有什么用(核心能力,背这 5 点)

  1. 自愈:容器崩溃,K8s 自动重建 Pod;节点宕机,自动把 Pod 调度到健康节点。
  2. 弹性扩缩容 HPA:根据 CPU / 内存 / 自定义指标,自动增加或减少 Pod 实例数,应对流量波动(AI 服务高峰期扩实例很常用)。
  3. 服务发现与负载均衡 Service:Service 给一组 Pod 提供固定访问入口,内置负载均衡;Pod IP 会变,但 Service 地址不变。
  4. 滚动更新 + 回滚:发布新版本,逐步替换 Pod;一旦出问题,一键回滚到旧版本,不中断服务。
  5. 资源管理与调度:给容器分配 CPU、内存资源;调度器根据资源、标签策略,把 Pod 调度到合适服务器节点。

AI 岗位加分一句话:AI 模型服务、RAG 后端经常容器化,用 K8s 批量部署推理服务,动态扩缩实例。

3. 怎么用(实操流程,面试口述,不用太细)

  1. 先把应用打包成 Docker 镜像,推到镜像仓库(Harbor / 阿里云镜像仓库)。
  2. 编写 yaml 资源描述文件:定义 Pod、Deployment、Service、HPA 等资源,写明镜像、资源限制、端口、副本数。
  3. 使用kubectl命令行工具,kubectl apply -f xxx.yaml提交 yaml 到 K8s APIServer。
  4. K8s 控制器(Deployment 控制器)根据 yaml 创建 Pod,调度器分配节点。
  5. 通过 Service 访问服务;配置 HPA 实现自动扩缩容。
  6. 日常运维:kubectl get pods查看实例状态;kubectl logs看日志;版本更新直接改 yaml 重新 apply,滚动发布。

面试官高频追问(提前背)

追问 1:Pod 是什么? 背诵:Pod 是 K8s 最小调度单元,一个 Pod 可以包含一个或多个容器,Pod 内容器共享网络、存储。 追问 2:Deployment 作用? 背诵:管理无状态应用,控制 Pod 副本数,支持滚动升级、回滚。 追问 3:Service 和 Pod 关系? 背诵:Pod 是临时的,销毁重建 IP 就变;Service 是抽象入口,后端关联一组 Pod,做负载均衡。

4kafka 是什么?有什么用?怎么用?

关键词:分布式消息队列,高吞吐,持久化,发布订阅 开篇一句话:Kafka 是 Apache 开源的分布式流式消息队列,基于发布订阅模型,特点高吞吐、可持久化、支持消息回溯。

1. Kafka 是什么

Kafka 集群由 Broker 组成;消息按主题 Topic 划分;Topic 拆分为多个 Partition(分区),分布在不同 Broker 上实现分布式。 核心角色:生产者 Producer 发消息、消费者 Consumer 拉消息;消息持久化在磁盘,不是内存队列。

2. 有什么用(4 个核心场景,背熟)

  1. 解耦:上下游系统不直接调用,生产者发消息到 Kafka,消费者异步消费。比如优惠券领券后,发消息异步写 DB、发通知,不阻塞主链路。
  2. 削峰填谷:突发高流量(大促、AI 批量任务),消息先存入队列,消费者匀速消费,保护下游数据库 / 模型推理服务不被打垮。
  3. 日志 / 事件采集:收集系统日志、埋点事件,做数据分析。AI 平台里常用来收集对话事件、模型调用日志。
  4. 消息回溯:可以重置 offset,重新消费历史消息,适合数据重跑、补偿任务。

岗位加分句:AI 全栈项目中,常用于异步任务分发,比如文档解析任务入队列,后端消费队列执行文件解析。

3. 怎么用(业务开发流程,口述版)

  1. 搭建 Kafka 集群,提前创建 Topic,指定分区数、副本数。
  2. Producer 生产者:业务代码引入 Kafka 客户端,把消息发送到指定 Topic;可以配置同步 / 异步发送,ACK 确认机制保证消息可靠。
  3. Consumer 消费者:编写消费程序,订阅 Topic;消费者属于消费组 Consumer Group,同一组内一个分区只能被一个消费者消费。消费完成后提交 offset,记录消费位置。
  4. 业务处理:拿到消息执行业务逻辑,比如异步落库、触发 AI 任务。
  5. 运维:监控堆积,消息堆积代表消费速度跟不上生产,需要扩容消费者。

高频追问(必背)

追问 1:分区 Partition 作用? 背诵:提升吞吐量,并行读写;分区是 Kafka 最小并行单元。副本实现高可用,Broker 挂了,副本顶上。

追问 2:offset 是什么? 背诵:消息在分区内的序号。consumer 靠 offset 记录读到哪条消息,提交 offset 标记消费位置。

追问 3:消息丢失场景? 背诵:生产者消息丢失(ack 配置不当);消费端先提交 offset,业务处理失败导致消息丢失。解决方案:合理设置 acks,业务处理成功之后再提交 offset。

追问 4:重复消费怎么处理? 背诵:Kafka 不保证只消费一次,至少一次。业务层做幂等,用业务唯一 id 判断,防止重复执行。

追问 5:消费组 Consumer Group? 背诵:同一个消费组,topic 的一个 partition 只能分配给组内一个 consumer;不同消费组互相独立,可以消费全量消息。

5jenkins 是什么?有什么用?怎么用?

开篇一句话:Jenkins 是开源的CI/CD 持续集成 & 持续交付工具,用来把代码编译、构建、测试、部署流程自动化。

1. Jenkins 是什么

Jenkins 是 Java 开发的开源自动化服务器。 核心思想:把重复的打包、编译、测试、部署工作交给程序自动跑,不用人工操作。 可以对接 Git/Gitlab、Maven/Gradle、Docker、K8s,插件生态非常丰富。

2. 有什么用(4 个核心作用,面试背)

  1. 持续集成 CI:开发提交代码到 Git 后,自动拉取代码、编译、单元测试。代码一合并立刻做校验,尽早发现编译、单元测试 bug。
  2. 持续交付 CD:构建 Jar 包 / Docker 镜像,推送到镜像仓库;
  3. 自动部署:把应用部署到测试、预发、K8s 环境;AI 项目可以自动打包 Agent 推理服务镜像;
  4. 定时任务、脚本执行:也可以执行定时脚本,比如数据同步、日志清理。

岗位加分(AI 系统研发):Agent、LLM 推理服务,代码提交后 Jenkins 自动构建镜像,部署到 K8s,实现服务版本快速迭代发布。

3. 怎么用(业务开发视角,口述流程,不用记运维细节)

  1. 部署 Jenkins 服务,安装需要插件:Git、Maven、Docker、Kubernetes 流水线插件。
  2. 创建任务(Job/Pipeline 流水线),配置代码仓库地址(Git 地址),设置触发条件:代码提交触发、定时触发、手动点击构建。
  3. 编写流水线脚本Jenkinsfile(可以放在项目 git 仓库内,代码即流水线),流水线一般分阶段:
    • 拉取代码:从 Git 拉最新代码
    • 编译构建:Maven/Gradle 编译 Java,或者打包 Python 项目
    • 单元测试:跑单元测试,失败直接终止流水线
    • 构建镜像:打包 Docker 镜像,推到镜像仓库
    • 部署:调用 kubectl 把镜像部署到 K8s,或者远程脚本部署服务器
  4. 开发提交 git 代码,触发 Jenkins 流水线自动执行;
  5. 在 Jenkins 页面看构建日志,排查构建、部署失败问题。

高频面试官追问(必背)

追问 1:自由风格项目 和 Pipeline 流水线区别?

背诵: 自由风格:页面上点选配置,配置存在 Jenkins 服务器,不好版本管理; Pipeline 流水线:使用 Jenkinsfile 写脚本,存放在 Git 仓库,流水线跟着项目走,可读、可版本管理,企业主流用法。

追问 2:CI 和 CD 分别是什么?

背诵: CI 持续集成:频繁把多人代码合并到主干,自动编译测试; CD 分两层:持续交付(产出可部署包)、持续部署(自动部署到环境)。

追问 3:Jenkins 部署 AI 服务大概流程?

背诵: 代码提交 → Jenkins 拉代码 → 打包项目 → build Docker 镜像 → push 镜像仓库 → 调用 K8s 更新 Deployment,完成 Agent / 推理服务发布。

追问 4:Jenkins 的缺点?

背诵: 本身资源消耗大;旧版本有安全漏洞,需要做好权限;大量任务时需要做 agent 分布式构建,减轻 master 压力。

补充和 K8s 关联记忆:K8s 负责运行容器;Jenkins 负责自动化构建 + 发布,二者经常搭配使用。

相关推荐
码上上班2 小时前
基于 K3s 的微服务容器化与 GitOps 持续交付平台
微服务·云原生·架构
ab1237682 小时前
Docker Compose 完整详解
运维·docker·容器
吴声子夜歌3 小时前
Docker入门与实战——容器实战思考
docker·容器
张洛闻Eren3 小时前
Ansible【第二课】:实施 Ansible Playbook
linux·运维·服务器·云原生·kubernetes·k8s·ansible
江湖有缘3 小时前
Docker实战 | 使用Docker部署Foxel私有云盘服务
docker·容器·eureka
吴声子夜歌3 小时前
Docker入门与实战——核心实现技术
运维·docker·容器
做运维的阿瑞3 小时前
Terraform 入门实战:安装与实施
云原生·云计算·terraform
东城绝神4 小时前
《Kubernetes部署篇:基于x86_64+aarch64架构CPU+containerd一键离线部署容器版K8S1.36.4高可用集群》
容器·架构·kubernetes
吴声子夜歌4 小时前
Docker入门与实战——配置私有仓库
运维·docker·容器