必须知道的75个Kubernets与Docker最常见问题

60 阅读17分钟

image.png

其他Kubernetes相关文章:

介绍

Kubernetes 已成为容器编排和管理的事实标准,为许多现代应用程序和服务提供支持。随着它的受欢迎程度不断增长,对 Kubernetes 技术人员的需求也在不断增长。在这篇博文中,我们将探讨 75 个最常见的 Kubernetes 问题和答案,涵盖从基本概念到高级技术的一系列主题。无论您是初学者还是专家,这些问题和答案都将帮助您更好地了解 Kubernetes 并磨练您的技能。

  1. 什么是 Kubernetes?Kubernetes,通常缩写为 K8s,是一个用于自动化部署、扩展和管理容器化应用程序的开源平台。它最初由 Google 开发,现在由云原生计算基金会 (CNCF) 维护。
  2. 什么是容器?容器是一个轻量级、独立且可执行的软件包,其中包含运行软件所需的一切,包括代码、运行时、系统工具、库和设置。
  3. Kubernetes 的主要组件有哪些?Kubernetes 的主要组件是控制平面、工作节点和 Kubernetes API。
  4. 什么是控制平面?控制平面是管理集群整体状态的一组组件,包括 API 服务器、etcd 数据存储、控制器管理器和 kube-scheduler。
  5. 什么是工作节点?工作节点是运行容器的机器。每个工作节点都运行容器运行时(例如 Docker)和 kubelet 代理,后者与控制平面进行通信。
  6. 什么是 Pod?Pod 是 Kubernetes 中最小、最简单的单元。它代表集群中正在运行的进程的单个实例,并且可以包含一个或多个容器。
  7. 什么是副本集?ReplicaSet 是 Pod 的更高级别抽象,可确保在任何给定时间运行指定数量的 Pod 副本。
  8. 什么是部署?Deployment 是 ReplicaSet 的更高级别抽象,为 Pod 和 ReplicaSet 提供声明性更新。它允许您执行应用程序的滚动更新、回滚和扩展。
  9. 什么是服务?服务是一种抽象,定义了一组逻辑 Pod 和访问它们的策略。它提供稳定的 IP 地址和 DNS 名称,允许客户端发现 Pod 并与 Pod 进行通信。
  10. 什么是 ConfigMap 和 Secret?ConfigMaps 和 Secrets 是分别用于存储非敏感和敏感配置数据的 Kubernetes 对象。它们将配置数据与容器映像解耦,使其更易于更新和管理。
  11. 什么是 Ingress?Ingress 是一个 API 对象,用于管理对集群中服务的外部访问(通常通过 HTTP)。它提供负载平衡、SSL 终止和基于名称的虚拟托管。
  12. 什么是 StatefulSet?StatefulSet 是用于管理有状态应用程序的 Kubernetes 对象,确保每个 Pod 具有唯一且稳定的主机名,例如 web-0、web-1 等。它们还提供有关 Pod 的排序和唯一性的保证。
  13. 什么是 DaemonSet?DaemonSet 是 Kubernetes 对象,可确保特定 Pod 的副本在集群中的所有(或部分)节点上运行,通常用于日志收集器或监控代理等系统级服务。
  14. 什么是 Kubernetes API?Kubernetes API 是与 Kubernetes 集群通信和管理的主要接口。它公开了一个用于创建、更新和删除 Kubernetes 对象的 RESTful 接口。
  15. 什么是 kubectl?Kubectl 是用于与 Kubernetes API 服务器交互的命令行工具,允许您管理 Kubernetes 资源。
  16. 什么是标签和选择器?标签是附加到 Kubernetes 对象的键值对,用于组织和选择对象子集。选择器是根据标签匹配对象的查询,使您能够过滤特定的对象组并对其执行操作。
  17. 什么是命名空间?命名空间是在多个用户或团队之间划分集群资源的一种方式。它们提供名称范围,允许您在不同的名称空间中拥有多个具有相同名称的对象。
  18. 什么是水平 Pod 自动缩放器 (HPA)?水平 Pod 自动缩放器 (HPA) 是一个 Kubernetes 组件,可根据观察到的 CPU 或自定义指标利用率自动缩放 Deployment 或 ReplicaSet 中的 Pod 数量。
  19. 什么是垂直 Pod 自动缩放器 (VPA)?垂直 Pod 自动缩放器 (VPA) 是一个 Kubernetes 组件,可根据 Pod 的实际资源使用情况自动调整分配给 Pod 的 CPU 和内存资源。
  20. 什么是Helm?Helm 是 Kubernetes 的包管理器,允许您使用 Helm 图表定义、安装和管理 Kubernetes 应用程序,Helm 图表是版本化的、预配置的应用程序包。
  21. 什么是自定义资源定义 (CRD)?自定义资源定义 (CRD) 允许您在 Kubernetes 中定义和管理自定义资源,通过根据您的特定用例定制的新 API 对象来扩展其功能。
  22. 什么是 Kubernetes Operator?Kubernetes Operator 是一种使用自定义资源和自定义控制器扩展 Kubernetes 功能的方法。操作员定义自定义资源并包含管理其生命周期的逻辑,通常对有关应用程序的特定领域知识进行编码。
  23. 什么是 RBAC(基于角色的访问控制)?RBAC 是 Kubernetes 中的一项安全功能,允许您根据用户角色定义和实施资源访问策略。它使用 Role 和 ClusterRole 对象来定义权限,并使用 RoleBinding 和 ClusterRoleBinding 对象将这些权限授予用户或组。
  24. 什么是持久卷 (PV) 和持久卷声明 (PVC)?持久卷(PV)是 Kubernetes 对集群中存储资源的抽象,而持久卷声明(PVC)是用户对存储资源的请求。PV 和 PVC 允许您独立于 Pod 及其生命周期来管理存储资源。
  25. 什么是 Kubernetes 网络策略?Kubernetes 网络策略是一项安全功能,允许您定义和实施集群内 Pod 通信的规则。它使您能够根据标签和选择器控制单个 Pod 或 Pod 组的入口和出口流量。
  26. 什么是 Kubernetes 集群?Kubernetes 集群是一组机器或节点,它们协同工作来管理和运行容器化应用程序。它由控制平面组件和工作节点组成,为部署、扩展和管理容器提供统一的平台。
  27. 什么是节点亲和性和反亲和性?节点亲和性和反亲和性是影响 Pod 如何调度到集群中节点上的规则。亲和性规则鼓励 Pod 被调度到具有特定特征的节点上,而反亲和性规则则不鼓励 Pod 被调度到具有特定特征的节点上。
  28. 什么是污染和宽容?污点是应用于节点的属性,表示该节点不应接受某些 Pod,而容忍是应用于 Pod 的属性,允许将它们调度到受污染的节点上。这种机制可以确保 Pod 不会被调度到不合适的节点上。
  29. 什么是就绪探针?就绪探测是一种诊断检查,用于确定容器是否准备好为流量提供服务。如果容器未通过就绪性探测,则 Pod 在通过检查之前不会接收来自 Service 的流量。
  30. 什么是活性探针?活性探针是一种诊断检查,用于确定容器是否正常运行。如果容器未通过活性探测,Kubernetes 将重新启动容器,尝试解决问题。
  31. 什么是 CronJob?CronJob 是一个 Kubernetes 对象,它允许您基于 cron 表达式按计划运行特定作业。它对于备份、报告生成或其他定期任务等任务很有用。
  32. 什么是Job?Job 是一个 Kubernetes 对象,代表运行一个或多个 Pod 来完成的有限任务。作业对于运行批处理或其他需要运行完成的任务非常有用,而不是连续运行的服务。
  33. 什么是滚动更新?滚动更新是一种增量更新 Deployment 或 StatefulSet 的 Pod 的部署策略,对应用程序可用性的影响最小。它会逐渐用新的 Pod 替换旧的 Pod,确保在更新过程中始终有指定数量的副本可用。
  34. 什么是Canary部署?Canary部署是一种部署策略,涉及将应用程序的新版本与稳定版本一起部署,将一小部分流量引导至新版本。这使您可以在逐步向所有用户推出新版本之前测试和验证新版本。
  35. 什么是蓝绿部署?蓝绿部署是一种部署策略,涉及运行两个具有相同配置的独立环境“蓝色”和“绿色”。部署新版本时,将新版本部署到非活动环境,经过测试验证后,将流量切换到新环境。
  36. 什么是 StatefulSet 无头服务?无头服务是没有 ClusterIP 的服务,用于由 StatefulSet 管理的有状态应用程序。它允许每个 Pod 拥有自己的 DNS 主机名,从而实现 Pod 到 Pod 的直接通信,而无需依赖单个 ClusterIP。
  37. 什么是 Kubernetes Federation?Kubernetes Federation 是一项允许您跨多个 Kubernetes 集群同步和管理资源的功能。它使您能够创建一个统一的控制平面来管理部署在多个集群中的应用程序。
  38. 什么是 Kubernetes StorageClass?StorageClass 是一个 Kubernetes 对象,它定义集群中可用的存储类型。它允许管理员定义具有不同性能和成本特征的不同存储类别,使用户能够请求满足其特定需求的存储。
  39. 什么是 Kubernetes 卷?Kubernetes 卷是 Pod 中的容器可以访问的目录。卷使数据能够在容器之间共享或在容器的生命周期之外保留数据。
  40. Kubernetes 中的容器资源管理是什么?Kubernetes 中的容器资源管理是指管理 Pod 内容器的 CPU、内存和其他资源分配的过程。通过设置资源请求和限制,您可以确保容器拥有实现最佳运行所需的资源,同时防止资源匮乏或过度分配。
  41. 什么是初始化容器?Init 容器是特殊用途的容器,在 Pod 中的主容器之前运行。它们通常用于执行设置任务,例如下载依赖项、配置环境或在主应用程序启动之前验证配置数据。
  42. 什么是 Kubernetes 服务帐户?服务帐户是一个 Kubernetes 对象,代表 Pod 中运行的进程的身份。服务帐户可用于提供访问 Kubernetes API 或集群内其他资源的身份验证和授权。
  43. 什么是 Kubernetes 入口控制器?Kubernetes Ingress Controller 是一个组件,它根据 Ingress 规则管理外部流量到集群内服务的路由。它监视 Ingress 资源并相应地更新底层负载均衡器或代理配置。
  44. 什么是 Pod 中断预算 (PDB)?Pod 中断预算 (PDB) 是一个 Kubernetes 对象,它限制可以从 ReplicaSet、Deployment 或 StatefulSet 中自愿驱逐的 Pod 数量,以确保维护操作(例如节点升级或扩展事件)期间的高可用性。
  45. 什么是 kube 代理?Kube-proxy 是一个网络代理,运行在 Kubernetes 集群中的每个节点上,负责维护网络规则并促进服务的服务发现和负载均衡。
  46. 什么是Kubelet?Kubelet 是一个运行在 Kubernetes 集群中每个工作节点上的代理,负责确保 Pod 内的容器运行且健康,并与控制平面进行通信。
  47. 什么是etcd?Etcd 是 Kubernetes 用来存储集群配置数据的分布式、一致的键值存储,充当控制平面组件的主要数据存储。
  48. 什么是 Kubernetes 注解?Kubernetes 注释是附加到对象的键值对,可用于存储任意的、非识别性的元数据。与标签不同,注释不用于选择对象,但可用于存储有关对象的附加信息,例如描述或时间戳。
  49. 什么是 Kubernetes 自愈系统?Kubernetes自我修复系统是指自动检测和解决集群内问题的内置机制,例如重新启动故障容器、在故障节点上重新调度Pod或根据资源使用情况扩展应用程序。
  50. 什么是 Kubernetes 持久存储?Kubernetes 持久存储是指可用于存储需要在容器或 Pod 生命周期之外保留的数据的各种存储解决方案。这包括持久卷、持久卷声明和存储类,使您能够以一致且高效的方式管理和配置存储资源。
  51. 什么是 Kubernetes 准入控制器?Kubernetes 准入控制器是一个在对象持久化阶段之前拦截对 Kubernetes API 服务器的请求的组件,使您能够根据自定义策略或业务逻辑验证或修改对象。
  52. 什么是 Kubernetes 自动缩放?Kubernetes Autoscaling 是指根据应用需求或集群利用率自动调整 Pod、节点或资源数量的过程。这包括水平 Pod 自动缩放器 (HPA)、垂直 Pod 自动缩放器 (VPA) 和集群自动缩放器 (CA)。
  53. 什么是 Kubernetes API 组?Kubernetes API 组是一起进行版本控制的相关 API 资源的集合。API 组允许添加新资源或版本而不影响现有资源,从而帮助组织和发展 Kubernetes API。
  54. 什么是 Kubernetes API 资源?Kubernetes API 资源是代表 Kubernetes 系统一部分的对象,例如 Pod、服务或部署。这些资源可以通过 Kubernetes API 创建、更新和删除。
  55. 什么是 Kubernetes API 版本?Kubernetes API 版本是一组相关资源的 API 的特定版本。它表示API的稳定性和支持级别,alpha、beta和stable版本代表不同的成熟度。
  56. 什么是 Kubernetes 控制循环?Kubernetes 控制循环是持续确保系统维持所需状态的基本机制。控制器监视当前状态并根据需要进行更改以实现所需状态,例如创建、更新或删除资源。
  57. 什么是 kube 调度程序?Kube-scheduler 是一个控制平面组件,负责根据各种因素(例如资源可用性、节点关联性以及污点和容忍度)将 Pod 分配给节点。
  58. 什么是 Kubernetes API 服务器?Kubernetes API Server 是 Kubernetes 控制平面的核心组件,用于公开 Kubernetes API。它处理 RESTful API 请求、验证它们并更新 etcd 中的相应对象。
  59. 什么是 Kubernetes 控制器管理器?Kubernetes Controller Manager 是一个控制平面组件,用于管理核心控制循环,包括复制控制器、端点控制器和命名空间控制器。
  60. 什么是容器网络接口(CNI)?容器网络接口 (CNI) 是用于在 Linux 容器中配置网络接口的规范和库集。Kubernetes 使用 CNI 兼容的插件来配置 Pod 网络。
  61. 什么是 Kubernetes Sidecar 模式?Kubernetes Sidecar 模式涉及在 Pod 内的主容器旁边部署一个附加容器。Sidecar 容器通常扩展或增强主容器的功能,例如日志转发、监控或数据处理。
  62. 什么是 Kubernetes 大使模式?Kubernetes 大使模式涉及部署一个容器,充当 Pod 内主容器的代理或适配器。这种模式简化了与外部系统的通信或提供统一的接口来访问不同的服务。
  63. 什么是 Kubernetes 适配器模式?Kubernetes 适配器模式涉及部署一个容器,该容器可转换或修改 Pod 内主容器的接口。这种模式使主容器能够与其他系统或 API 一起工作,而无需修改其代码。
  64. 什么是下行API?Downward API 是一种允许 Pod 将自身信息(例如 Pod 名称、命名空间和标签)公开为环境变量或文件的机制。
  65. 什么是 Kubernetes 节点选择器?NodeSelector 是 Pod 规范中的一个字段,允许您根据节点的标签指定应在其中调度 Pod 的节点的所需特征。
  66. 什么是 Kubernetes 容器运行时接口 (CRI)?Kubernetes 容器运行时接口 (CRI) 是一个插件接口,允许 Kubernetes 使用不同的容器运行时,例如 Docker、containerd 或 CRI-O,而无需修改 kubelet 代码。
  67. 什么是 Kubernetes DaemonSet?Kubernetes DaemonSet 是一种更高级别的抽象,可确保特定 Pod 在集群中的所有节点或部分节点上运行。DaemonSet 通常用于部署系统级服务,例如日志收集器、监控代理或网络代理。
  68. 什么是 Kubernetes ConfigMap?Kubernetes ConfigMap 是一个对象,允许您以键值对的形式存储非敏感配置数据,这些数据可以由 Pod 作为环境变量、命令行参数使用,或者作为卷中的文件安装。
  69. 什么是 Kubernetes Secret?Kubernetes Secret 是一个允许您存储敏感数据(例如凭证、令牌或密钥)的对象,这些数据可以由 Pod 作为环境变量使用或作为文件安装在卷中。
  70. 什么是 Kubernetes 对象管理模型?Kubernetes 对象管理模型是一种管理资源的声明式方法,您可以使用 YAML 或 JSON 清单定义系统所需的状态,控制平面通过协调循环来实现和维护该状态。
  71. 什么是 Kubernetes 垃圾收集?Kubernetes 垃圾收集是一种自动删除未使用或孤立资源(例如终止的 Pod、未使用的 ConfigMap 或已完成的作业)的机制,以释放系统资源并维护干净的集群。
  72. 什么是 Kubernetes 审计日志?Kubernetes 审核日志是 Kubernetes API 服务器中发生的事件的记录,提供有关请求、响应和元数据的详细信息。它可用于安全监控、故障排除或合规性目的。
  73. 什么是 Kubernetes 云控制器管理器?Kubernetes Cloud Controller Manager 是一个控制平面组件,嵌入了特定于云的控制逻辑,例如管理节点生命周期、配置存储卷或配置负载均衡器。它允许 Kubernetes 以一致且可扩展的方式与各种云提供商进行交互。
  74. 什么是 Kubernetes ReplicaSet?Kubernetes ReplicaSet 是一种更高级别的抽象,可确保在任何给定时间运行指定数量的 Pod 副本。它取代了旧的复制控制器,并由 Deployment 使用来管理 Pod 扩展和更新。
  75. 什么是 Kubernetes PodSecurityPolicy?Kubernetes PodSecurityPolicy 是集群级资源,定义了创建和更新 Pod 的安全约束。它允许您实施最佳实践,例如禁止特权容器、限制主机访问或限制特定卷类型的使用。

这 75 个问题和答案进一步扩展了您对 Kubernetes 及其众多组件和功能的理解。凭借 Kubernetes 概念的坚实基础,您将做好充分准备来处理复杂的容器编排任务并构建可靠、可扩展且安全的应用程序。