Kubernetes
进阶预计进阶 2-3 个月星团 云与基础设施
岗位需求
4 核心 · 1 加分
在职岗位将其列为技能要求
核心岗位薪资带
15k-55k
核心要求岗位的月薪区间
需求趋势
上升 3稳定 1收缩 0
核心要求岗位的趋势分布
面试题库
高频真题 · 参考答案随题展开1. Pod 为什么是 Kubernetes 的最小调度单位?
Pod 是一組共享网络与存储的容器集合:同 Pod 容器共享网络命名空间(同 IP 与端口空间,可用 localhost 互访)、可共享 volume、共享 IPC,生命周期一致。把多个强耦合容器放一个 Pod(sidecar 代理、日志收集、init 容器做初始化)是设计模式而非默认——多数场景一 Pod 一主容器。为什么最小单位是 Pod 不是容器:调度、伸缩与重启的粒度对齐「应用实例」,多容器原子共置(必须同节点)无法用独立容器表达;基础设施容器(注入的 sidecar)与应用容器共存需要统一边界。Pod 是易逝的(牛不是宠物),IP 会变,重建后本地盘清空,因此上层用 Deployment 管副本、Service 管稳定访问点、持久卷管数据。能讲共享命名空间与共置语义即达标。
2. Deployment 的滚动更新机制是怎样的?
Deployment 管理 ReplicaSet,ReplicaSet 保证副本数。更新镜像触发滚动更新:创建新 RS,按 maxSurge(超出期望副本数的上限,默认百分之二十五)与 maxUnavailable(不可用副本上限)逐步扩新 RS、缩旧 RS,直到新版本全部就绪。就绪判定靠 readinessProbe——未就绪 Pod 不进 Service 端点,保证不把流量打到启动中的实例;livenessProbe 失败重启容器自愈卡死进程;startupProbe 保护慢启动应用。strategy 支持 RollingUpdate 与 Recreate(先全删再建,会有停机)。回滚 kubectl rollout undo 回到历史 RS。常见坑:没配探针导致滚动更新期间 502;新版本起不来时卡住(progressDeadlineSeconds 判定失败);与 HPA 同时用时注意 RS 历史膨胀。能讲 maxSurge 与 maxUnavailable 的数学关系加探针配合即满分。
3. Service 有哪些类型?kube-proxy 如何工作?
Service 提供稳定的虚拟 IP 与负载均衡,通过 label selector 关联 Pod。类型:ClusterIP 集群内虚拟 IP(默认);NodePort 每节点开端口(30000 到 32767)外部可达,是 ClusterIP 的超集;LoadBalancer 依赖云厂商分配外部负载均衡器(底层仍是 NodePort);ExternalName 是 DNS 别名;无 selector 的 Service 配 Endpoints 可指向集群外服务。kube-proxy 三种模式:iptables(默认)按随机选主的 NAT 规则转发,规则数多时性能线性下降;ipvs 内核哈希表适合大规模服务;userspace 旧方案已淘汰。DNS 上 Service 名解析到 ClusterIP,Headless Service(clusterIP 为 None)直接解析 Pod IP 列表,配合 StatefulSet 做有状态稳定标识;CoreDNS 支持域内发现。EndpointSlice 分片维护后端地址应对大服务。能讲三种类型递进关系与 iptables 转发路径即完整。
4. ConfigMap 与 Secret 如何使用?有哪些注意事项?
两者都是配置载体:ConfigMap 存非敏感配置(明文),Secret 存敏感数据(默认 base64 编码非加密,类型如 opaque、tls、dockerconfigjson)。注入方式:环境变量(envFrom 整表或 valueFrom 单键,简单但改配置需重启 Pod);volume 挂载文件(默认每十分钟左右热更新,配合 reload 机制或 reloader 生效);镜像拉取凭证 imagePullSecrets。注意点:Secret 的 base64 不是加密,安全要靠 RBAC 限制读取、etcd 加密配置(encryption at rest)、外部密钥管理(Vault、云 KMS、External Secrets Operator)与 git 中不落明文(sealsecret 加密提交);键名需合法(字母数字加点横线);subPath 挂载不热更新;大配置超过 1MB 限制应拆分或改用配置中心。环境变量注入的风险是进程环境可能被打进日志与崩溃转储。能讲两种注入方式差异与 Secret 真实安全边界即优秀。
5. requests 与 limits 如何影响调度与 QoS?OOMKilled 怎么排查?
requests 是调度依据(节点资源按 requests 分配,超卖物理量);limits 是运行上限:内存超 limit 立即被 cgroup OOMKill(退出码 137),CPU 超 limit 被 throttle(限流不死,延迟上升)。QoS 等级由设置决定:Burstable(部分设置)、BestEffort(全不设)、Guaranteed(requests 等于 limits 且 CPU 内存都设)。资源紧张驱逐时 BestEffort 先被驱逐,Guaranteed 最稳,生产核心服务建议 Guaranteed 或高 requests。OOMKilled 排查:先看退出码与 lastState 区分 OOM 与程序崩溃;内存 limit 是否低于实际峰值(观察容器内存监控与 JVM 堆外内存、页缓存归属);是否存在内存泄漏(内存曲线持续上涨);Go 与 JVM 要正确设置容器感知(GOMAXPROCS 与 UseContainerSupport,JVM 10 加自动感知);缓冲区、缓存、大对象序列化的堆外占用常是元凶。能讲 QoS 三级与 heap 加非 heap 视角即满分。
官方文档
2 条权威中文手册,概念、任务与教程三层导航清晰
官方概念总览,Pod 到调度的语义以它为准
推荐教程
1 条官方中文入门教程,模块化练习部署与探查
推荐课程
1 条免费 Kubernetes 与云原生互动环境,继承 Katacoda 风格
上手实践
2 条手工从零搭一套集群,吃透各组件的最佳练习
免费在线集群环境,无本地资源也能实操
难度档决定星等与难度分权重(入门 1 / 进阶 2 / 精通 3);学习资源由编辑部遴选并持续维护, 经验心得欢迎在上方「知识分享」区署名分享。

