K8S那些常见高频面试问题

💡 原文中文,约9700字,阅读约需23分钟。
📝

内容提要

Kubernetes(k8s)集群内外网络互通可以通过NodePort、LoadBalancer类型的Service、Ingress配置、网络策略、DNS和网络代理等方式实现。Pod的创建过程包括定义配置文件、发送请求、调度、创建容器、分配IP和启动容器;终止过程则涉及关闭容器、发送终止信号和清理资源。Kubernetes支持水平、垂直和集群自动伸缩,提供多种故障检测机制和资源调度方式,以确保集群的高可用性和可靠性。

🔎

延伸解读

Pod创建流程的两种描述:视角差异

文章给出了Pod创建过程的两种描述:描述一从Pod定义、调度、容器创建到启动的步骤展开;描述二则从kubectl发送请求、API Server、etcd、Controller Manager、Scheduler、kubelet到Container Runtime的组件协作流程描述。两者并不矛盾,而是分别从操作步骤和系统组件交互两个视角阐述同一过程,读者可结合理解以形成完整认知。

Pod终止:优雅终止与强制终止的边界

Pod终止时,Kubernetes会先将其从Service中移除,然后向容器发送SIGTERM信号,等待其优雅终止。若容器在指定时间内未完成,则发送SIGKILL强制终止,最后清理资源。这一机制平衡了资源释放与数据安全,但具体等待时长取决于配置,文章未明确默认值,实际环境中需关注Pod的terminationGracePeriodSeconds设置。

自动伸缩方式的选择:并非互斥

文章介绍了水平自动伸缩(HPA)、垂直自动伸缩(VPA)、集群自动伸缩(Cluster Autoscaler)和自定义指标自动伸缩(CA)。它们针对不同维度:HPA调整Pod数量,VPA调整容器资源请求,Cluster Autoscaler调整节点数量,CA基于自定义指标。这些方式可根据应用需求组合使用,而非只能选其一,但需注意VPA与HPA同时使用可能产生冲突,文章未深入讨论此点。

Metrics Server与Prometheus:互补而非替代

Metrics Server主要提供CPU、内存等基础资源指标,供HPA等组件使用,与Kubernetes集成紧密;Prometheus则支持自定义指标、长期存储和灵活查询,适合深入监控和趋势分析。两者定位不同:Metrics Server满足自动扩展和基本监控,Prometheus提供更全面的可观测性。因此同时部署是为了兼顾基础与高级监控需求,而非功能重复。

❓

Q&A

Kubernetes集群内外网络互通的方式有哪些?

Kubernetes集群内外网络互通可以通过NodePort、LoadBalancer、Ingress、网络策略、DNS和网络代理等方式实现。

Pod的创建过程是怎样的?

Pod的创建过程包括定义配置文件、发送请求到API服务器、调度器分配节点、创建容器、分配IP地址和启动容器。

Kubernetes中Pod的终止过程包括哪些步骤?

Pod的终止过程包括从Service中删除Pod、关闭容器、发送SIGTERM信号、等待容器终止、发送SIGKILL信号和清理资源。

Kubernetes支持哪些自动伸缩方式?

Kubernetes支持水平自动伸缩、垂直自动伸缩、集群自动伸缩和自定义指标自动伸缩等方式。

Kubernetes中的故障检测机制有哪些?

Kubernetes中的故障检测机制包括存活探针、就绪探针和启动探针。

Kubernetes的资源调度方式有哪些?

Kubernetes的资源调度方式包括基于CPU和内存的静态和动态调度、节点标签调度、节点亲和性调度和调度器插件。

🏷️

标签

➡️

继续阅读