K8S面试深度解析:从基础到进阶

需积分: 50 15 下载量 116 浏览量 更新于2024-08-05 收藏 947KB PDF 举报
"K8S面试大通关.pdf" 在本文档中,作者JackTian是一位经验丰富的运维工程师,同时也是多个知名技术平台的博主和专家,专注于分享IT领域的知识,特别是Kubernetes(K8S)相关的技术内容。他提供了一些K8S面试常问问题的答案,帮助读者准备K8S面试。 1. **K8S是什么?** Kubernetes,简称K8S,是一个开源的容器编排系统,用于自动化容器化应用程序的部署、扩展和管理。它允许在多台主机上协调运行容器化的应用,并提供了一组高级功能,如服务发现、负载均衡、自动扩缩容等。 2. **K8S架构的组成** 包括Master节点和Node节点。Master节点负责整个集群的管理和调度,包括API Server、Controller Manager、Scheduler等组件。Node节点是实际运行Pod的机器,包含Kubelet、Container Runtime Interface (CRI) 和其他必要的服务。 3. **容器与主机部署应用的区别** 容器化应用轻量级,具有可移植性,隔离性,以及快速启动和停止的能力,而主机部署通常涉及更复杂的依赖关系和环境配置。 4. **Pod资源对象的健康监测机制** K8S使用Probe机制,包括Liveness Probe和Readiness Probe,来检查Pod中的容器是否正常运行。Liveness Probe确保容器没有挂死,Readiness Probe判断容器是否准备好接收流量。 5. **滚动更新的控制** 滚动更新通过替换Pod的实例,逐步升级应用版本,保持服务可用性。可以设置更新策略,如最大不可用Pod数量、批次大小等。 6. **K8S中镜像的下载策略** 镜像拉取策略有Always、IfNotPresent和Never三种,分别对应总是拉取最新镜像、只在本地没有时拉取、永不拉取。 7. **image的状态** 包括Pending、Running、Succeeded、Failed等,表示镜像拉取和启动的状态。 8. **Pod的重启策略** 包括Always、OnFailure和Never,决定Pod内的容器何时以及是否应该重启。 9. **Service的作用** Service是K8S中定义微服务的抽象,提供稳定的服务发现和负载均衡,将流量路由到一组Pod。 10. **版本回滚的命令** 可以使用`kubectl rollout undo deployment/<DEPLOYMENT_NAME>`命令进行版本回滚。 11. **标签与标签选择器的作用** 标签是用于标识和组织资源的对象,标签选择器用于匹配具有特定标签的资源,实现动态调度和管理。 12. **常用的标签分类** 可以根据应用、环境、版本等维度定义标签,如`app=my-app`, `env=prod`, `version=v1`。 13. **查看标签的方式** 包括`kubectl get pods --show-labels`, `kubectl describe <RESOURCE_TYPE>/<NAME>`, `kubectl get <RESOURCE_TYPE> -L <LABEL_KEY>`等。 14. **添加、修改、删除标签的命令** 添加:`kubectl label <RESOURCE_TYPE>/<NAME> <LABEL_KEY>=<LABEL_VALUE>`, 修改:`kubectl label <RESOURCE_TYPE>/<NAME> <LABEL_KEY>=<NEW_LABEL_VALUE> --overwrite`, 删除:`kubectl label <RESOURCE_TYPE>/<NAME> <LABEL_KEY>-'`. 15. **DaemonSet资源对象的特性** DaemonSet确保每个Node上都运行一个或多个副本,常用于运行守护进程,如日志收集、监控等。 16. **Job资源对象** Job用于管理批处理任务,确保至少有一个 Pod 成功完成任务,支持并发和重试策略。 17. **Pod的生命周期状态** 包括Pending、Running、Succeeded、Failed、Unknown等,反映了Pod从创建到结束的不同阶段。 18. **创建Pod的流程** 包括Pod规格定义、调度、Pod创建及容器启动。 19. **删除Pod的影响** Pod会被终止,其上的容器停止运行,但存储在持久卷中的数据通常保留。 20. **K8S的Service** 是K8S内部的网络抽象,提供Pod间的通信,并对外暴露服务。 21. **服务注册** K8S使用DNS域名或IP地址实现服务注册,Pod通过Service DNS名称找到其他服务。 22. **集群外流量访问Pod** 可通过Ingress资源设置规则,将外部请求路由到Service。 23. **数据持久化方式** 包括: - EmptyDir:临时存储,与Pod生命周期同步。 - Hostpath:直接使用主机目录,非集群通用。 - PersistentVolume (PV):集群级别的持久化存储,与Pod解耦,支持多种存储类型。 以上内容涵盖了K8S面试中常见的技术问题,对理解K8S核心概念和操作至关重要。