Kubernetes面试深度解析:组件、网络与持久化

需积分: 0 1 下载量 183 浏览量 更新于2024-06-26 收藏 2.3MB DOCX 举报
"面试总结(1)(1)(5).docx" 这篇面试总结涵盖了广泛的IT技术领域,特别是针对云计算和容器编排系统 Kubernetes (k8s) 的深入理解。以下是其中涉及的一些关键知识点: 1. **Kubernetes (k8s)**: 是一个开源的容器编排系统,用于自动化容器化应用的部署、扩展和管理。它使得在大规模集群上运行容器化的应用程序变得更加容易。 2. **k8s 的主要组件**: - **APIServer**: 是整个集群的控制中枢,处理所有的REST请求,提供API接口。 - **scheduler**: 负责Pod的调度,决定哪个Pod应该运行在哪个Node上。 - **Controller Manager**: 集群状态管理器,执行各种控制器,如ReplicaSet、Deployment等。 - **Etcd**: 集群的数据存储,保存了k8s的配置和状态信息。 - **Kubelet**: 监控Pod状态,确保Pod的运行符合定义。 - **kube-proxy**: 实现网络策略,进行网络路由和负载均衡。 - **Docker Engine**: 容器引擎,负责创建和管理容器。 3. **kubectl**: k8s的命令行工具,用于与k8s集群交互,部署、管理和调试应用程序。 4. **Kube-apiserver**: 提供k8s API,处理所有对集群状态的修改请求,是k8s的公共入口点。 5. **Kubernetes 控制器**: 包括ReplicationController、Deployment、StatefulSet、DaemonSet等,用于自动化管理Pod的生命周期。 6. **Service 类型**: 包括ClusterIP(集群内部访问)、NodePort(通过Node的端口暴露服务)、LoadBalancer(云服务商的负载均衡器暴露服务)和Headless(无集群IP的服务)。 7. **Ingress**: 提供外部访问k8s服务的方式,通过定义规则将HTTP/HTTPS流量路由到特定的Service。 8. **Flannel 和 Calico**: 都是用来实现k8s集群网络的解决方案。Flannel提供简单的网络连接,而Calico提供更高级的网络策略和隔离。 9. **Kubernetes 网络通信**: 每个Pod都有自己的IP,可以通过内部DNS和服务发现进行通信。Kubernetes使用网络插件实现Pod间以及Pod与外部世界的通信。 10. **Pod 健康检查**: 通过Liveness和Readiness Probe来检查容器的运行状况,决定是否重启容器或让新请求等待。 11. **Pod 状态**: 包括Pending、Running、Succeeded、Failed、Terminating等,反映了Pod的生命周期阶段。 12. **Pod 重启策略**: 可以设置为Always、OnFailure或Never,决定Pod在遇到问题时如何自动重启。 13. **节点亲和性(affinity)**: 通过设置规则,可以控制Pod倾向于或避免调度到某些节点。 14. **固定Pod到特定Node**: 使用Node Affinity或Taints/Tolerations机制可以将Pod绑定到特定的Node上。 15. **调度粘性**: 三种调度策略包括:硬亲和性、软亲和性和反亲和性,影响Pod的调度决策。 16. **持久化**: k8s支持Volume持久化,如使用PVC(Persistent Volume Claim)和PV(Persistent Volume)来保证数据不受Pod生命周期的影响。 17. **自动化部署**: 可以通过Jenkins、Ansible等持续集成/持续部署工具实现k8s环境的自动化。 18. **扩展k8s集群**: 添加新的Node节点,更新kubelet配置并加入集群。 19. **InitContainer**: 在主应用容器启动前运行,常用于预处理任务,如设置环境、下载数据等。 20. **pause容器**: 每个Pod包含一个不可见的pause容器,提供Pod的网络和存储上下文,使得Pod内的其他容器可以共享网络和存储资源。 这些知识点是k8s面试中常见的问题,掌握它们对于理解和操作k8s集群至关重要。此外,了解Linux、Docker、网络基础、MySQL、Redis等其他技术也是IT专业人士必备的技能。