100 个 Kubernetes 面试问题及答案
Kubernetes 简介
什么是 Kubernetes?
Kubernetes 是一个开源容器编排平台,可自动部署、扩展和管理容器化应用程序。
什么是容器?
容器是一个轻量级、独立的、可执行软件包,其中包含运行应用程序所需的一切,包括代码、运行时、系统工具、库和设置。
使用 Kubernetes 有什么好处?
Kubernetes 可自动执行应用程序部署、扩展和管理,从而轻松大规模部署和管理基于容器的应用程序。其他优势包括:
简化应用程序管理
提高扩展和可用性
轻松部署和回滚
提高资源利用率
提高可移植性和灵活性
什么是 Kubernetes 集群?
Kubernetes 集群是一组运行由 Kubernetes 控制平面管理的容器化应用程序的节点。
Kubernetes 中的节点是什么?
节点是 Kubernetes 中运行容器化应用程序的工作机器。
Kubernetes 中的 pod 是什么?
Pod 是 Kubernetes 中最小的可部署单元,代表容器中正在运行的进程的单个实例。Kubernetes
架构
什么是 Kubernetes 控制平面?
Kubernetes 控制平面是一组管理和编排 Kubernetes 集群的组件。它包括以下组件:
API 服务器
etcd
kube-scheduler
kube-controller-manager
cloud-controller-manager
Kubernetes 中的 API 服务器是什么?
API 服务器是 Kubernetes 控制平面的前端接口,用于公开 Kubernetes API。
Kubernetes 中的 etcd 是什么?
etcd 是一个分布式、可靠且高可用的键值存储,用于存储 Kubernetes 集群的配置数据。
什么是 Kubernetes 调度程序?
Kubernetes 调度程序负责根据可用资源和其他调度要求,调度 pod 在集群中的可用节点上运行。
什么是 kube-controller-manager?
kube-controller-manager 负责运行各种控制器进程,监视集群的状态并根据需要进行更改。
什么是云控制器管理器?
云控制器管理器负责管理与云提供商(例如 AWS、GCP 或 Azure)的集成。
什么是 Kubernetes 工作节点?
Kubernetes 工作节点是运行容器化应用程序和服务的物理机或虚拟机。它包括以下组件:
Kubelet
kube-proxy
容器运行时
Kubernetes 中的 kubelet 是什么?
kubelet 是一个运行在每个节点上的代理,与 Kubernetes API 服务器通信以管理容器生命周期。
Kubernetes 中的 kube-proxy 是什么?
kube-proxy 负责管理 Kubernetes 集群中 pod 和服务之间的网络路由。
Kubernetes 中的容器运行时是什么?
容器运行时负责启动和停止节点上的容器。示例包括 Docker、containerd 和 CRI-O。
为什么在 Kubernetes 中使用命名空间?
Kubernetes 中的命名空间用于在用户之间划分集群资源。它有助于多个用户分散项目或团队的环境,并提供资源范围。
Kubernetes 网络
什么是 Kubernetes 服务?
Kubernetes 服务是一个抽象层,它将一组 pod 公开为网络服务,允许它们相互通信并与集群外的其他服务通信。
什么是 Kubernetes DNS?
Kubernetes DNS 是一个为 Kubernetes 集群中的服务和 Pod 提供 DNS 解析的服务。
Kubernetes 中的 pod 网络是什么?
pod 网络是连接 Kubernetes 集群中的 pod 的网络覆盖。
什么是 Kubernetes CNI(容器网络接口)?
Kubernetes CNI 是一种规范,它定义了与容器网络插件集成的标准化接口。
在 Kubernetes 中部署应用程序
什么是 Kubernetes 部署?
Kubernetes 部署定义了 pod 副本组的期望状态,并管理 pod 副本更新的推出和回滚。
什么是 Kubernetes pod 模板?
Kubernetes pod 模板定义了 pod 所需的配置,包括容器镜像、环境变量和其他设置。
什么是 Kubernetes 副本集?
Kubernetes 副本集可确保在任何给定时间内运行指定数量的 pod 副本。
什么是 Kubernetes 状态集?
Kubernetes 有状态集管理一组有状态 pod(例如数据库或其他有状态应用程序)的部署、扩展和持续状态。
什么是 Kubernetes 守护进程集?
Kubernetes 守护进程集确保特定的 pod 在集群中的所有或部分节点上运行。
什么是 Kubernetes 作业?
Kubernetes 作业运行特定任务直至完成,例如运行批处理作业或执行数据处理任务。
Kubernetes 调度和扩展
什么是 Kubernetes 调度?
Kubernetes 调度是将正在运行的 pod 分配给集群中某个节点的过程。
什么是 Kubernetes 调度策略?
Kubernetes 调度策略是一组规则和标准,用于确定集群中的哪个节点应该运行特定的 pod。
什么是 Kubernetes 亲和性?
Kubernetes 亲和性是根据各种因素(例如特定数据卷的存在或特定节点的位置)确定 Pod 的优先调度的规则。
什么是 Kubernetes 反亲和性?
Kubernetes 反亲和性是根据应避免的因素来确定 pod 的首选调度的规则,例如在同一节点上运行一个 pod 的两个副本。
什么是 Kubernetes 水平 pod 自动扩缩 (HPA)?
Kubernetes HPA 根据当前的资源需求自动扩展 pod 的副本数量。
什么是 Kubernetes 垂直 Pod 自动扩缩 (VPA)?
Kubernetes VPA 根据当前资源使用情况自动调整 pod 的资源需求。
什么是 Kubernetes 集群自动扩缩?
Kubernetes 集群自动扩展功能会根据当前资源需求自动扩展集群中的节点数量。Kubernetes
中的监控和日志记录
什么是 Kubernetes 监控?
Kubernetes 监控是监控 Kubernetes 集群及其应用程序的健康和性能的过程。
什么是 Kubernetes 日志?
Kubernetes 日志记录是收集和分析 Kubernetes 集群中运行的应用程序和服务生成的日志的过程。
什么是 Kubernetes Prometheus?
Kubernetes Prometheus 是一个开源监控和警报工具包,可从 Kubernetes API 服务器收集指标和数据。
什么是 Kubernetes Grafana?
Kubernetes Grafana是一个开源数据可视化和分析工具,提供Kubernetes集群的实时监控和分析。
什么是 Kubernetes Fluentd?
Kubernetes Fluentd 是一个开源数据收集和转发工具,可以聚合日志并将其发送到中心位置进行分析和存储。
什么是 Kubernetes Kibana?
Kubernetes Kibana 是一个开源数据可视化和分析工具,提供对 Kubernetes 集群生成的日志和其他数据的实时分析。
Kubernetes 安全
什么是 Kubernetes RBAC(基于角色的访问控制)?
Kubernetes RBAC 是一种根据用户角色和权限控制 Kubernetes 资源访问的方法。
什么是 Kubernetes TLS(传输层安全性)?
Kubernetes TLS 是一种安全协议,用于保护 Kubernetes 集群内的客户端-服务器通信。
什么是 Kubernetes 网络策略?
Kubernetes 网络策略是控制 Kubernetes 集群内 Pod 和服务之间网络流量的规则。
什么是 Kubernetes pod 安全策略?
Kubernetes pod 安全策略是一组控制在 Kubernetes 集群中部署的 pod 的安全设置的策略。
Kubernetes 的秘密是什么?
Kubernetes 机密是一种安全的方式,用于存储 Kubernetes 集群中运行的应用程序使用的敏感信息,例如密码、API 密钥和其他身份验证令牌。
什么是 Kubernetes pod 安全上下文?
Kubernetes pod 安全上下文提供了一种基于每个 pod 设置安全相关属性的方法,例如用户和组 ID 以及文件权限。
Kubernetes 工具和 API
什么是 kubectl?
kubectl 是用于与 Kubernetes 集群交互的命令行工具。
什么是 Kubernetes API?
Kubernetes API 是一个用于管理和操作 Kubernetes 集群的 RESTful API。
什么是 Kubernetes Helm?
Kubernetes Helm 是 Kubernetes 的包管理器,可帮助您部署、管理和升级 Kubernetes 应用程序。
什么是 Kubernetes 仪表板?
Kubernetes Dashboard 是一个基于 Web 的用户界面,用于管理和监控 Kubernetes 集群。
Kubernetes 中的调试和故障排除
什么是 Kubernetes pod 就绪探测?
Kubernetes pod 就绪探测用于确定 pod 是否已准备好提供流量服务。
什么是 Kubernetes pod 活性探测?
Kubernetes pod 活跃度探测用于确定 pod 是否活跃且正在运行。
如何排除 Kubernetes pod 故障?
对 Kubernetes pod 进行故障排除包括检查日志、调查资源利用率以及检查 pod 状态和事件。
什么是 Kubernetes kubectl logs?
Kubernetes kubectl logs 是用于检索特定 pod 生成的日志的命令。
Kubernetes kubectl describe 是什么?
Kubernetes kubectl describe 是获取有关 Kubernetes 对象(例如 pod、复制控制器或服务)的详细信息的命令。Kubernetes
集群管理
什么是 Kubernetes 集群管理?
Kubernetes 集群管理涉及配置和维护 Kubernetes 控制平面、工作节点和网络设置。
什么是 Kubernetes API 服务器授权?
Kubernetes API 服务器授权控制谁可以访问 Kubernetes API 服务器并执行操作。
什么是 Kubernetes 集群备份和恢复?
Kubernetes 集群备份和恢复涉及备份和恢复存储在 Kubernetes 对象(例如 pod、服务和部署)中的配置和数据。
Kubernetes 如何进行滚动更新?
Kubernetes 通过逐步升级 pod 的副本来执行滚动更新,确保应用程序在更新期间保持可用且响应迅速。
Kubernetes 最佳实践
在 Kubernetes 中部署应用程序的最佳实践是什么?
在 Kubernetes 中部署应用程序的最佳实践包括:
使用声明式部署方法,例如 Deployments 或 Helm charts;
通过将服务部署在单独的命名空间中来分离服务之间的关注点;
使用活跃度和就绪度探测来确保应用程序的健康状况
;设置资源限制和请求以确保为应用程序提供足够的资源
Kubernetes 集群安全的最佳实践是什么?
Kubernetes 集群安全的最佳实践包括:
实施基于角色的访问控制 (RBAC)
使用网络策略控制集群内的流量
限制对集群组件和 API 服务器的外部访问
实施安全的节点访问以及集群中节点之间的通信
Kubernetes 性能优化有哪些最佳实践?
Kubernetes 性能优化的最佳实践包括:
设置资源限制和请求,以确保为应用程序提供足够的资源;
使用水平和垂直 Pod 自动缩放
;优化容器镜像的大小和性能
;监控和调整系统和应用程序性能;
使用 Kubernetes 进行开发
什么是 Kubernetes Operator?
Kubernetes Operator 是 Kubernetes API 的扩展,可以实现复杂应用程序或集群管理操作的自动化。
什么是 Kubernetes 自定义资源定义?
Kubernetes 自定义资源定义是一种使用特定于特定应用程序或框架的自定义资源和 API 来扩展 Kubernetes API 的方法。
什么是 Kubernetes CRD 控制器?
Kubernetes CRD 控制器用于定义自定义资源的行为及其与其他 Kubernetes 组件的交互。Kubernetes
网络
什么是 Kubernetes Istio?
Kubernetes Istio 是一个开源服务网格,为基于微服务的应用程序提供流量管理、可观察性和安全性。
什么是 Kubernetes 服务网格?
Kubernetes 服务网格是用于管理 Kubernetes 集群内服务到服务通信的专用基础设施层。
什么是 Kubernetes Ingress?
Kubernetes Ingress 是一个 API 对象,它定义了将入站流量引导至 Kubernetes 服务的规则。
什么是 Kubernetes 网关?
Kubernetes 网关是一个网络入口点,用于管理服务网格的传入和传出流量。
Kubernetes 运行时
什么是 Kubernetes containerd?
Kubernetes containerd 是 Kubernetes 的轻量级、非侵入式容器运行时。
什么是 Kubernetes CRI-O?
Kubernetes CRI-O 是专为 Kubernetes 设计的容器运行时,为 Kubernetes 环境提供轻量、快速的容器运行时。
什么是 Kubernetes KubeVirt?
Kubernetes KubeVirt 是 Kubernetes 的开源虚拟机运行时,允许用户与 Kubernetes 工作负载一起部署和管理虚拟机。
什么是 Kubernetes Kata Containers?
Kubernetes Kata Containers是Kubernetes的一个安全容器运行时选项,提供硬件实现的隔离,以确保容器之间的安全和隔离。
Kubernetes 云原生开发
什么是 Kubernetes 云原生开发?
Kubernetes 云原生开发是一种软件开发方法,可以最大限度地利用 Kubernetes 来构建、部署和管理云原生应用程序。
什么是 Kubernetes 软件开发工具包(SDK)?
Kubernetes 软件开发工具包 (SDK) 是一组工具和库,可帮助开发人员在 Kubernetes 上构建、部署和管理云原生应用程序。
什么是 Kubernetes Helm?
Kubernetes Helm 是 Kubernetes 的包管理器,为云原生应用程序提供模板和部署自动化。
杂项
Kubernetes 中的部署和状态集之间有什么区别?
部署用于无状态应用程序,而有状态集用于有状态应用程序,例如数据库或其他需要持久稳定存储的应用程序。
什么是 Kubernetes 配置管理?
Kubernetes 配置管理是 Kubernetes 集群中配置文件和设置的自动管理。
什么是 Kubernetes 容器编排?
Kubernetes 容器编排是在 Kubernetes 集群中部署、扩展和管理容器化应用程序的自动化过程。
什么是 Kubernetes 容器化?
Kubernetes 容器化是将应用程序及其所有依赖项打包到容器中进行部署和管理的过程。
什么是 Kubernetes 云部署?
Kubernetes 云部署是将 Kubernetes 集群部署在云平台(例如 AWS、Azure 或 GCP)上。
什么是 Kubernetes 本地部署?
Kubernetes 本地部署是将 Kubernetes 集群部署在私有或企业服务器和数据中心上。
结论
这些是一些最常见的 Kubernetes 面试问题,并附有详细答案。我们希望本文能帮助您准备 Kubernetes 面试。保持好奇心并继续学习!