尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Kubernetes面试核心知识点与实战排查指南

Kubernetes面试核心知识点与实战排查指南 1. Kubernetes面试核心知识点解析作为容器编排领域的事实标准Kubernetes已成为云计算岗位的必考项。我在最近三次技术面试中担任主考官时发现80%的候选人会在基础概念环节出现理解偏差。本文将拆解面试官最常考察的15个核心问题附带实际集群管理中的排查案例。2. 集群架构与核心组件2.1 控制平面组件协作机制etcd作为分布式键值存储实际生产环境建议采用独立集群部署非kubeadm默认的堆叠模式。当API Server收到Pod创建请求时写入etcd的/registry/pods命名空间触发Scheduler的Watch机制Controller Manager确保副本数符合Deployment定义去年我们遇到etcd性能瓶颈导致API响应延迟通过etcdctl检查发现是历史数据未压缩ETCDCTL_API3 etcdctl --endpointshttps://127.0.0.1:2379 \ --cacert/etc/kubernetes/pki/etcd/ca.crt \ --cert/etc/kubernetes/pki/etcd/server.crt \ --key/etc/kubernetes/pki/etcd/server.key \ compaction 100002.2 工作节点组件交互流程Kubelet与容器运行时如containerd通过CRI交互时存在版本兼容性问题。曾遇到v1.24移除dockershim后集群升级导致节点NotReady的情况。解决方案检查/var/lib/kubelet/kubeadm-flags.env中的--container-runtime-endpoint参数确认containerd的socket路径正确通常为unix:///run/containerd/containerd.sock3. 资源调度与Pod生命周期3.1 调度器核心算法解析当出现Pending状态的Pod时面试官期望你能解释完整的调度决策链Predicates阶段过滤不满足条件的节点NodeAffinity匹配检查资源请求检查cpu/memory端口冲突检查Priorities阶段打分最少请求资源节点优先LeastRequestedPriority镜像本地缓存优先ImageLocalityPriority3.2 Pod启动全流程排错这是面试高频故障场景建议用以下命令链排查kubectl describe pod [name] | grep -A 10 Events # 查看调度事件 kubectl get events --sort-by.metadata.creationTimestamp # 集群级事件审计 journalctl -u kubelet -n 50 --no-pager # 节点级日志4. 网络与存储方案4.1 CNI插件选型对比下表对比主流网络方案在面试中的考点特性CalicoFlannelCilium策略支持NetworkPolicy无支持L7策略性能IPIP模式损耗约10%VxLAN模式损耗约20%eBPF零拷贝适用场景需要安全策略的环境简单扁平网络服务网格集成4.2 PersistentVolume实践陷阱动态供给测试题常见坑点StorageClass的volumeBindingMode应设为WaitForFirstConsumer使用local卷时需要配置nodeAffinity注意AccessModes与实际存储能力的匹配如NFS支持RWX但hostPath仅支持RWO5. 安全与运维实战5.1 RBAC配置精要面试常考Role与ClusterRole的区别实际配置示例# 开发人员命名空间级权限 apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: dev name: pod-reader rules: - apiGroups: [] resources: [pods] verbs: [get, watch, list] # 集群管理员权限 apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: cluster-admin rules: - apiGroups: [] resources: [*] verbs: [*]5.2 证书轮换操作实录kubeadm集群证书过期是经典故障场景操作步骤检查过期时间openssl x509 -noout -dates -in /etc/kubernetes/pki/apiserver.crt执行轮换需确保所有控制平面节点时间同步kubeadm alpha certs renew all systemctl restart kubelet6. 高频故障排查手册6.1 NodeNotReady问题矩阵根据我们的SRE团队统计主要诱因及解决方案现象检查点修复方案Kubelet无响应systemctl status kubelet检查证书是否过期/配置错误容器运行时崩溃crictl ps重启runtime或升级CRI版本网络插件异常ip route show重新应用CNI配置文件6.2 集群升级避坑指南版本跨度较大时如1.18→1.22先升级kubectl客户端版本逐个升级控制平面节点确保etcd备份完成工作节点采用滚动升级策略关键检查项kubectl get --raw/readyz?verbose | jq . kubectl get cs # 1.19版本已弃用需改用上条命令7. 进阶考点解析7.1 自定义资源开发实践面试中高级岗位时可能涉及的CRD示例apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: myresources.stable.example.com spec: group: stable.example.com versions: - name: v1 served: true storage: true schema: openAPIV3Schema: type: object properties: spec: type: object properties: replicas: type: integer minimum: 1 maximum: 10 scope: Namespaced names: plural: myresources singular: myresource kind: MyResource7.2 性能调优关键指标生产环境监控要点PromQL示例# API延迟监控 histogram_quantile(0.99, sum(rate(apiserver_request_duration_seconds_bucket[5m])) by (le, verb)) # 调度器等待时间 kube_pod_scheduling_duration_seconds_bucket # etcd写入性能 histogram_quantile(0.95, rate(etcd_disk_wal_fsync_duration_seconds_bucket[5m]))8. 面试实战技巧8.1 问题拆解方法论当被问到Pod一直处于ContainerCreating状态怎么办时建议采用分层排查法网络层检查CNI插件日志通常位于/var/log/calico或/var/log/cilium存储层验证PVC是否Boundkubectl get pvc镜像层确认镜像拉取策略和权限特别是私有仓库运行时检查CRI日志journalctl -u containerd8.2 场景模拟应答策略对于如何设计高可用集群这类开放性问题可参考以下框架控制平面3节点etcd集群 负载均衡的API Server工作节点跨可用区部署 podAntiAffinity规则基础设施使用Cluster Autoscaler配置PodDisruptionBudget启用HPA基于自定义指标扩缩容
返回列表