qidao123.com技术社区-IT企服评测·应用市场

标题: 面试宝典(纯享版)-- k8s篇 [打印本页]

作者: 美食家大橙子    时间: 2025-5-25 04:52
标题: 面试宝典(纯享版)-- k8s篇

目次


一、底子概念

1. 什么是 Kubernetes?它的焦点价值是什么?

答案
Kubernetes(K8s)是开源的容器编排平台,焦点能力包括:

2. Kubernetes 与 Docker Swarm 的对比

对比维度KubernetesDocker Swarm适用场景大规模生产环境、复杂应用架构小规模快速部署扩展性支持 CRD、Operator 深度定制原生功能有限,扩展依赖插件网络模型需配合 CNI 插件(如 Calico)内置 Overlay 网络存储管理PV/PVC/StorageClass 体系Volume 驱动简单社区生态CNCF 主导,云厂商广泛支持Docker 官方维护,生态较小 3. 为什么需要 Pod 而不是直接部署容器?

答案


二、架构与焦点组件

1. Master 节点焦点组件

组件职责API Server集群操作的唯一入口,RESTful API 处理,权限校验,数据持久化到 etcdetcd分布式键值存储,生存集群所有状态数据(如 Pod、Service 配置)Scheduler根据资源需求和束缚,将 Pod 调度到符合 NodeController Manager运行控制器逻辑(如 Node Controller、Deployment Controller) 2. Node 节点焦点组件

组件职责Kubelet管理 Pod 生命周期,与容器运行时(如 Docker)交互,上报节点状态Kube-proxy维护节点网络规则(如 iptables/IPVS),实现 Service 的负载均衡Container Runtime运行容器的底层软件(如 Docker、Containerd) 3. 哀求从 kubectl 到 APIServer 的流程


三、Pod 与工作负载

1. Pod 的生命周期状态

状态触发条件PendingPod 已被 APIServer 接受,但未调度或镜像下载中RunningPod 已绑定到 Node,至少一个容器正在运行Succeeded所有容器正常退出(退出码为 0)Failed至少一个容器异常退出(非零退出码)Unknown无法获取 Pod 状态(通常因 Node 失联) 2. Deployment vs StatefulSet

特性DeploymentStatefulSet适用场景无状态应用(如 Web 服务)有状态应用(如 MySQL、ZooKeeper)网络标识随机 Pod 名称与 IP稳定的 Pod 名称(如 web-0)和 DNS 记录存储暂时存储或共享 Volume持久化 Volume(每个 Pod 独立 PV)扩缩容次序无序次序扩缩(从索引 0 到 N-1) 3. 怎样包管应用高可用?

答案


四、服务与网络

1. Service 范例详解

范例用途ClusterIP集群内访问的虚拟 IP(默认范例)NodePort通过 NodeIPort 暴露服务(端口范围 30000-32767)LoadBalancer自动创建云厂商负载均衡器(如 AWS ALB)ExternalName将服务映射到外部 DNS(CNAME 记录) 2. Ingress 工作原理

答案

  1. apiVersion: networking.k8s.io/v1
  2.   kind: Ingress
  3.   metadata:
  4.     name: example-ingress
  5.   spec:
  6.     rules:
  7.     - host: foo.example.com
  8.       http:
  9.         paths:
  10.         - path: /bar
  11.           pathType: Prefix
  12.           backend:
  13.             service:
  14.               name: service1
  15.               port:
  16.                 number: 80
复制代码

3. 怎样实现跨定名空间服务访问?

答案
使用全限定域名(FQDN):<service-name>.<namespace>.svc.cluster.local。
示例:service1.default.svc.cluster.local。
五、存储管理

1. PV 生命周期管理

阶段** 形貌**AvailablePV 已创建,未绑定到 PVCBoundPV 已与 PVC 绑定ReleasedPVC 被删除,但 PV 仍保留数据(需手动清理)FailedPV 自动接纳失败 2. 动态卷配置示例

  1. apiVersion: storage.k8s.io/v1
  2. kind: StorageClass
  3. metadata:
  4.   name: fast
  5. provisioner: kubernetes.io/aws-ebs
  6. parameters:
  7.   type: gp3
  8. ---
  9. apiVersion: v1
  10. kind: PersistentVolumeClaim
  11. metadata:
  12.   name: mypvc
  13. spec:
  14.   storageClassName: fast
  15.   accessModes:
  16.     - ReadWriteOnce
  17.   resources:
  18.     requests:
  19.       storage: 100Gi
复制代码

六、安全与 RBAC

1. ServiceAccount 的作用

答案
为 Pod 中的进程提供身份标识,用于与 APIServer 交互。每个定名空间默认有一个 default ServiceAccount。
2. RBAC 配置示例

  1. # 创建 Role(限定在 default 命名空间)
  2. apiVersion: rbac.authorization.k8s.io/v1
  3. kind: Role
  4. metadata:
  5.   namespace: default
  6.   name: pod-reader
  7. rules:
  8. - apiGroups: [""]
  9.   resources: ["pods"]
  10.   verbs: ["get", "watch", "list"]
  11. # 绑定 Role 到用户
  12. apiVersion: rbac.authorization.k8s.io/v1
  13. kind: RoleBinding
  14. metadata:
  15.   name: read-pods
  16.   namespace: default
  17. subjects:
  18. - kind: User
  19.   name: alice
  20.   apiGroup: rbac.authorization.k8s.io
  21. roleRef:
  22.   kind: Role
  23.   name: pod-reader
  24.   apiGroup: rbac.authorization.k8s.io
复制代码

七、运维与监控

1. 怎样优雅升级集群?

答案

2. Prometheus 监控指标范例

范例形貌示例Counter只增不减的累积值HTTP 哀求总数Gauge可增减的瞬时值当前内存使用量Histogram采样观测值分布(如相应时间)哀求延长分布(P50/P90/P99)Summary客户端盘算的百分位数(与 Histogram 类似,但盘算方式不同) 八、高级特性

1. CustomResourceDefinition (CRD)

答案
答应用户自界说资源范例,扩展 Kubernetes API。
示例:界说一个 CronTab 资源:
  1. apiVersion: apiextensions.k8s.io/v1
  2. kind: CustomResourceDefinition
  3. metadata:
  4.   name: crontabs.stable.example.com
  5. spec:
  6.   group: stable.example.com
  7.   versions:
  8.     - name: v1
  9.       served: true
  10.       storage: true
  11.       schema: {...}
  12.   scope: Namespaced
  13.   names:
  14.     plural: crontabs
  15.     singular: crontab
  16.     kind: CronTab
复制代码
2. Horizontal Pod Autoscaler (HPA)

答案
根据 CPU/内存或自界说指标自动扩缩 Pod 数量。
配置示例:
  1. apiVersion: autoscaling/v2
  2. kind: HorizontalPodAutoscaler
  3. metadata:
  4.   name: myapp-hpa
  5. spec:
  6.   scaleTargetRef:
  7.     apiVersion: apps/v1
  8.     kind: Deployment
  9.     name: myapp
  10.   minReplicas: 2
  11.   maxReplicas: 10
  12.   metrics:
  13.   - type: Resource
  14.     resource:
  15.       name: cpu
  16.       target:
  17.         type: Utilization
  18.         averageUtilization: 50
复制代码

九、故障排查

1. Pod 处于 CrashLoopBackOff 状态的可能缘故原由及办理方案

答案
缘故原由现象办理方案容器启动命令错误容器启动后立即退出(Exit Code ≠ 0)查抄容器日记:kubectl logs <pod-name> -c <container-name>资源配额不足事件显示 OutOfMemory 或 CPUThrottling调整 Pod 的 resources.limits 或增加节点资源存储卷挂载失败事件显示 FailedMount查抄 PVC/PV 绑定状态:kubectl get pvc,验证存储后端可用性依赖服务不可用日记显示连接超时(如数据库)验证 Service/DNS 配置:kubectl exec -it <pod-name> -- nslookup <service> 2. 怎样诊断网络不通问题?

排查步调
十、开放设计题

1. 设计一个混合云 Kubernetes 集群方案

焦点设计点:


2. 怎样实现零宕机升级 Kubernetes 集群?

实行步调:



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4