当前位置: 首页 > news >正文

掌握 Kubernetes 和 AKS:热门面试问题和专家解答


1. 在 AKS(Azure Kubernetes 服务)中,集群、节点、Pod 和容器之间的关系和顺序是什么?


在 AKS(Azure Kubernetes 服务)中,集群、节点、Pod 和容器之间的关系和顺序如下:

  • 集群:AKS 中的集群是由 Kubernetes 管理的一组节点。集群提供底层基础架构的逻辑表示,并管理容器化应用程序的部署和扩展。
  • 节点:节点是运行容器化应用程序的工作器。AKS 中的每个节点都运行一个或多个 Pod,它们是 Kubernetes 中最小的可部署单元。
  • Pod:Pod 是 Kubernetes 中最小的可部署单元,代表集群中正在运行的进程的单个实例。一个 Pod 可以包含一个或多个容器,这些容器共享相同的网络命名空间,并可以通过进程间通信 (IPC) 相互通信。
  • 容器:容器是一个轻量级、独立的可执行软件包,包含运行应用程序所需的一切,包括代码、库和系统工具。一个 Pod 可以包含一个或多个容器,每个容器运行不同的进程。

总而言之,AKS 中的集群是底层基础架构的逻辑表示,其中包含一个或多个节点。每个节点运行一个或多个 Pod,每个 Pod 可以包含一个或多个容器。

2. 节点是否始终表示单台机器?


在 Kubernetes 和 AKS 的上下文中,节点通常指单台物理机或虚拟机。但是,需要注意的是,节点也可以指一组在调度时充当单个单元的机器。

Kubernetes 旨在实现高度可扩展,可以管理包含数千个节点的集群。在这种情况下,节点可以指一组作为单个单元协同工作以调度和运行容器的机器。这是通过使用专用软件(例如 kubelet)实现的,该软件在每个节点上运行并与 Kubernetes 主服务器通信以管理容器和 Pod。

总而言之,虽然 Kubernetes 和 AKS 中的节点通常指单台机器,但它也可以指一组机器,这些机器在调度时充当一个单元。

3. 容器如何通过进程间通信 (IPC) 相互通信?如果节点有多个容器,那么我们如何识别/引用特定容器?


容器通过进程间通信 (IPC) 机制相互通信,例如共享内存或套接字。在 Kubernetes 和 AKS 中,同一 Pod 内的容器共享相同的网络命名空间,并且可以使用标准的进程间通信机制通过 localhost 相互通信。

如果一个节点正在运行多个容器,则每个容器都由容器运行时生成的唯一名称或 ID 标识。在 Kubernetes 和 AKS 中,容器通常部署在 Pod 中,每个 Pod 都有唯一的名称和 IP 地址。要引用 Pod 中的特定容器,可以使用容器名称或 ID。例如,要访问名为“my-pod”的 Pod 中名为“my-container”的容器,您可以使用以下命令:

kubectl exec -it my-pod -c my-container bash

此命令将在“my-pod”Pod 中的“my-container”容器中启动交互式 Shell 会话。“-c”选项用于指定容器名称。

除了容器名称之外,Kubernetes 和 AKS 还支持标签和选择器,允许您根据容器的属性或特征对其进行分组。您可以使用标签和选择器来识别和引用单个 Pod 或多个 Pod 中的容器组。

4. 列出必须部署到容器的所有内容?所有容器之间是否有任何共同点?


必须部署到容器的内容取决于所部署应用程序或服务的具体要求。但是,容器镜像中通常包含一些常见元素:

  • 应用程序代码和依赖项:正在部署的应用程序的代码,以及运行应用程序所需的任何依赖项,例如库、框架和运行时环境。
  • 操作系统:轻量级操作系统,提供运行应用程序所需的基本系统资源。
  • 系统工具和实用程序:一组系统工具和实用程序,例如包管理器、文件系统实用程序和网络工具,用于管理容器并执行基本的系统级任务。
  • 配置文件:用于配置容器及其运行的应用程序的配置文件,例如环境变量、网络设置和日志设置。
  • 任何其他资产或数据:应用程序所需的任何其他资产或数据,例如静态文件、镜像或其他资源。
  • 虽然部署到容器的具体内容因部署的应用程序而异,但所有容器

5. 是否可以拥有混合云或多云集群/pod?如果可以,那么如何配置?


是的,在 Kubernetes(包括 AKS)中可以拥有混合云或多云集群/pod。混合云或多云设置允许您跨多个云提供商或本地数据中心分配工作负载,从而提供更高的灵活性和弹性。

要在 AKS 中配置混合云或多云设置,您可以按照以下步骤操作:

  • 在每个云提供商或本地数据中心设置集群:要创建混合云或多云设置,您需要在每个要使用的云提供商或数据中心设置 Kubernetes 集群。您可以使用 AKS 或其他 Kubernetes 管理工具来完成此操作。
  • 配置网络:为了允许集群相互通信,您需要在不同集群之间配置网络。这可以使用虚拟专用网络 (VPN) 或其他网络技术(例如服务网格)来实现。
  • 配置集群联邦:Kubernetes 提供了一项名为集群联邦的功能,允许您将多个集群作为一个实体进行管理。您可以使用集群联邦跨多个集群部署和管理应用程序,包括位于不同云提供商或数据中心的集群。
  • 部署应用程序:设置集群并配置网络和联邦后,您可以使用 Kubernetes 清单或其他部署工具跨不同集群部署应用程序。

6. 列出常用的 kubectl 命令以及开发人员常犯的错误?


以下是一些开发人员常用的 kubectl 命令以及常犯的错误:

  • kubectl get:此命令用于检索有关 Kubernetes 资源的信息。一个常见的错误是忘记指定资源类型,例如 Pod 或服务,这可能会导致错误消息或不正确的输出。
  • kubectl create:此命令用于创建新的 Kubernetes 资源,例如 Pod 或服务。一个常见的错误是未指定所有必需的参数或选项,例如镜像或容器名称,这可能会导致部署失败。
  • kubectl apply:此命令用于将更改应用于现有的 Kubernetes 资源。一个常见的错误是未指定正确的 YAML 文件或配置,这可能会导致部署不正确或失败。
  • kubectl logs:此命令用于查看 Kubernetes Pod 的日志。一个常见的错误是未指定正确的 Pod 名称或容器名称,这可能会导致错误消息或不正确的输出。
  • kubectl exec:此命令用于在正在运行的 Kubernetes 容器中执行命令。一个常见的错误是未指定正确的 Pod 名称或容器名称,这可能导致错误消息或在错误的容器中执行命令。
  • kubectl delete:此命令用于删除 Kubernetes 资源。一个常见的错误是未指定正确的资源类型或名称,这可能导致意外的资源删除。
  • kubectl describe:此命令用于查看 Kubernetes 资源的详细信息。一个常见的错误是未指定正确的资源类型或名称,这可能导致错误消息或不正确的输出。
  • kubectl rollout:此命令用于管理 Kubernetes 资源的滚动更新。一个常见的错误是未指定正确的部署或副本集,这可能导致更新失败或意外的更改。

7. 列出开发人员在 YAML 文件中最常见的语法错误?


以下是开发人员在 YAML 文件中可能遇到的一些常见语法错误:

  • 缩进错误:YAML 语法严重依赖于缩进,任何缩进错误都可能导致问题。常见错误包括空格或制表符数量错误,或者混合使用空格和制表符,这可能导致 YAML 文件解析失败。
  • 缺失或多余的引号:YAML 使用引号表示字符串,任何缺失或多余的引号都可能导致问题。常见错误包括忘记关闭引号或在需要双引号的地方使用单引号。
  • 缺失或多余的连字符:YAML 使用连字符表示列表或数组,任何缺失或多余的连字符都可能导致问题。常见错误包括忘记在列表项的开头添加连字符,或在不需要连字符的地方添加连字符。
  • 括号不匹配:YAML 使用括号来表示对象或字典,任何括号不匹配都可能导致问题。常见错误包括忘记闭合括号或在不需要的地方添加额外的括号。
  • 数据类型不正确:YAML 的数据类型非常严格,任何不正确的数据类型都可能导致问题。常见错误包括在需要布尔值的地方使用字符串,或在需要字符串的地方使用整数。
  • 拼写错误:YAML 区分大小写,任何拼写错误都可能导致问题。常见错误包括在需要小写字母的地方使用大写字母,或者关键字或值的拼写错误。
  • 使用无效字符:YAML 对文件中可以使用的字符有严格的规则,任何无效字符都可能导致问题。常见错误包括在不允许使用特殊字符的地方使用特殊字符,例如“&”符号或美元符号。

8. 当 API 请求到达 AKS 时,它是如何被验证、路由和处理的?请提供所有流程步骤:


当 API 请求到达 Azure Kubernetes 服务 (AKS) 时,它会经过一系列步骤进行验证、路由和处理。以下是一些概要步骤:

  • API 请求被发送到 AKS 入口控制器,该控制器负责将传入的请求路由到相应的服务。
  • 入口控制器检查请求是否与任何已定义的入口规则匹配。入口规则定义了特定服务的路径和主机。
  • 如果请求与入口规则匹配,入口控制器会将请求转发到相应的服务。如果请求与任何入口规则都不匹配,入口控制器将返回错误。
  • 然后,服务使用服务帐户或客户端证书对请求进行身份验证。身份验证过程会验证请求是否来自可信来源。
  • 如果请求通过身份验证,服务将通过执行相应的代码或命令来处理请求。
  • 服务向发出 API 请求的客户端返回响应。

9. 如何使用 Azure Cosmos DB 存储和管理基于 AKS 的应用程序的数据?

Azure Cosmos DB 是一项全球分布式多模型数据库服务,旨在为需要高可扩展性和低延迟的应用程序提供低延迟和高可用性。以下是如何使用 Azure Cosmos DB 存储和管理基于 AKS 的应用程序的数据:

  • 选择合适的 Cosmos DB API:Cosmos DB 支持多种 API,包括 SQL API、MongoDB API、Cassandra API、Gremlin API 和 Azure Table API。请选择最符合您应用程序需求的 API。
  • 创建 Cosmos DB 帐户:在 Azure 门户中,创建一个新的 Cosmos DB 帐户,并根据您的需求选择合适的 API 和其他设置。
  • 配置访问权限:使用 Cosmos DB 连接字符串(包含端点 URL 和授权密钥)配置对 Cosmos DB 帐户的访问权限。
  • 创建数据库和集合:在 Cosmos DB 中,为基于 AKS 的应用程序创建一个新的数据库和集合,用于存储和管理数据。您可以根据数据访问模式选择合适的分区键和索引策略。
  • 连接基于 AKS 的应用程序:在基于 AKS 的应用程序中,您可以使用合适的 API 和连接字符串连接到 Cosmos DB。然后,您可以使用 API 对数据库和集合执行 CRUD(创建、读取、更新、删除)操作。
  • 扩展和复制:Azure Cosmos DB 支持自动扩展和复制,因此您可以根据应用程序的需求轻松地进行扩展或缩减,并跨多个区域复制数据以实现高可用性和低延迟。
  • 通过使用 Azure Cosmos DB 存储和管理基于 AKS 的应用程序的数据,您可以利用其全球分布式架构、低延迟和高可扩展性,并确保您的应用程序拥有满足客户需求所需的资源。

10. 当 Kubernetes 中的主节点发生故障时会发生什么?当工作节点发生故障时会发生什么?


当 Kubernetes 中的主节点发生故障时,会发生以下情况:

  • Kubernetes 控制平面检测到主节点发生故障。
  • Kubernetes 控制平面从集群中的可用节点中选出一个新的主节点。
  • Kubernetes 控制平面更新集群状态,并将在故障主节点上运行的所有工作负载重新调度到新的主节点。
  • 如果故障主节点是唯一的 etcd 成员,则可能需要重新初始化 etcd 集群或从备份中恢复以恢复数据。


当 Kubernetes 中的工作节点发生故障时,会发生以下情况:

  • Kubernetes 控制平面检测到工作节点发生故障。
  • Kubernetes 控制平面从集群中移除故障的工作节点并更新集群状态。
  • Kubernetes 调度程序将故障工作节点上运行的所有工作负载重新调度到集群中的其他可用节点。
  • 如果发生故障的工作节点正在运行具有持久卷的有状态工作负载,Kubernetes 卷控制器将从故障节点分离卷,并将其重新附加到重新调度工作负载的新节点。
  • 如果发生故障的工作节点正在运行 DaemonSet 或 hostPath 卷,Kubernetes 控制器管理器将在另一个可用节点上重新调度工作负载。
  • 通过这种方式处理主节点和工作节点的故障,Kubernetes 可以确保集群保持高可用性,并确保工作负载持续运行而不中断。

11. 什么是 DaemonSet?请列举一些 DaemonSet 示例(日志记录除外)。


在 Kubernetes 中,DaemonSet 是一种工作负载,用于确保集群中每个节点上都运行一个 Pod 副本。以下是一些 DaemonSet 示例(日志记录除外):

  • 监控代理:DaemonSet 可用于在集群中的每个节点上部署监控代理,例如 Prometheus Node Exporter 或 Datadog Agent,用于收集指标并监控系统运行状况。
  • 网络:DaemonSet 可用于部署网络组件,例如 CNI(容器网络接口)插件或负载均衡器代理,用于管理所有节点的网络配置。
  • 安全:DaemonSet 可用于部署安全组件,例如防病毒代理或入侵检测系统,用于保护每个节点免受攻击。
  • 存储:DaemonSet 可用于部署存储组件,例如 CSI(容器存储接口)插件或存储代理,用于管理所有节点的存储并确保每个节点都可以访问持久卷。

总的来说,DaemonSets 是一个强大的工具,用于管理需要部署在集群中每个节点上的工作负载,提供一种可靠且可预测的方式来管理整个 Kubernetes 集群的基础架构组件。

12. 组织或分组节点的最佳方式有哪些?


在 Kubernetes 中,可以使用标签和选择器以不同的方式组织或分组节点。以下是一些常用的选项:

  • 可用区域:节点可以使用其运行所在的可用区域进行标记。这对于部署需要高可用性和容错能力的应用程序非常有用。
  • 角色:可以根据节点运行的工作负载类型为其标记不同的角色。例如,您可以将节点标记为数据库服务器、Web 服务器或工作节点。
  • 硬件规格:可以根据节点的硬件规格(例如 CPU、RAM、存储或 GPU)对节点进行标记。这对于部署需要特定硬件资源的应用程序非常有用。
  • 地理位置:可以根据节点的地理位置对节点进行标记。这对于部署需要地理分布的应用程序非常有用。

要根据这些标签对节点进行分组,可以使用选择器来识别符合特定条件的节点。例如,您可以创建一个 Kubernetes 部署或服务,仅选择标记为 Web 服务器的节点来运行特定的工作负载。

13. 我需要每年为某些特殊日期创建 N 个额外的节点。如何在 Kubernetes 中配置?这些日期每年都是固定的。我不想每年都重复同样的事情。


您可以创建一个 Kubernetes cron 作业来运行一个脚本,该脚本会在指定日期扩展节点数量。您可以安排该 cron 作业每年在同一时间运行,以确保在这些日期创建额外的节点。

以下是一个可用于扩展节点的脚本示例:

# set the number of nodes to scale up
node_count=5
# scale up the nodes
kubectl scale --replicas=$node_count deployment/node-deployment

 然后,您可以创建一个 Kubernetes cron 作业,在指定日期运行该脚本:

apiVersion: batch/v1beta1
kind: CronJob
metadata:name: node-scale-up
spec:schedule: "0 0 1 1 *" # run on 1st January every yearjobTemplate:spec:template:spec:containers:- name: node-scalerimage: <your-image>command: ["/bin/bash"]args: ["-c", "/path/to/script.sh"]restartPolicy: OnFailure

此 cron 作业将在每年 1 月 1 日运行该脚本,并根据指定的日期扩展节点数脚本。您可以修改计划字段,以匹配扩展节点所需的日期。

14. Kubernetes 中的 StatefulSet 是什么?


StatefulSet 是一个 Kubernetes 控制器,用于管理一组有状态 Pod 的部署和扩缩。与管理一组无状态 Pod 的 Deployment 不同,StatefulSet 旨在管理需要稳定网络身份、有序 Pod 初始化和终止以及持久存储的有状态应用程序。

StatefulSet 中的每个 Pod 都拥有基于其在集合中位置的唯一身份和网络主机名,这使得 Pod 能够在重新调度事件中保持其身份和状态。StatefulSet 控制器还确保 Pod 以可预测的顺序启动和停止,以维护 Pod 之间的任何依赖关系。

StatefulSet 通常用于管理有状态应用程序,例如数据库、消息传递系统和其他有状态服务。它们也用于管理需要严格排序和持久性保证的有状态工作负载,例如分布式系统和机器学习工作流。

总体而言,StatefulSets 提供了一种在 Kubernetes 中管理有状态应用程序的方法,这种方法比其他部署选项更可预测、更可靠,从而更容易在 Kubernetes 上操作复杂的有状态工作负载。

15. 请给出一些 StatefulSet 的实际应用示例。


以下是一些可以在 Kubernetes 中使用 StatefulSet 管理的有状态应用程序的实际应用示例:

  • 数据库:StatefulSet 可用于管理 MySQL、PostgreSQL、MongoDB 等有状态数据库。每个数据库实例都可以作为具有独立持久卷和网络标识的唯一 Pod 进行管理。
  • 流式传输平台:StatefulSet 可用于管理 Apache Kafka、Apache Pulsar 等流式传输平台。集群中的每个 Broker 或节点都可以作为具有独立持久卷和网络标识的唯一 Pod 进行管理。
  • 分布式系统:StatefulSet 可用于管理 Apache ZooKeeper、Apache Cassandra 等分布式系统。集群中的每个节点都可以作为具有独立持久卷和网络标识的唯一 Pod 进行管理。
  • 机器学习工作流:StatefulSet 可用于管理需要严格排序和持久性保证的机器学习工作流。工作流中的每个步骤都可以作为具有自己的持久卷和网络标识的唯一 pod 进行管理。

16. 什么是命名空间?请列举一些实际用例?它是可选的吗?


在 Kubernetes 中,命名空间是一种将集群资源划分为逻辑命名组的方法。它提供了名称范围,允许多个用户和团队共享集群而不会干扰彼此的资源。每个命名空间可以拥有自己的策略、资源配额和访问控制,这些可用于管理该命名空间内的资源。

命名空间的一些实际用例包括:

  • 资源隔离:命名空间可用于隔离不同团队或应用程序使用的资源,这有助于防止冲突并提高安全性。
  • 环境隔离:命名空间可用于隔离用于开发、测试和生产的资源,从而更轻松地管理和监控每个环境中的资源。
  • 资源配额:命名空间可以拥有自己的资源配额,可用于限制该命名空间内资源使用的 CPU、内存和存储空间。
  • 访问控制:命名空间可用于强制执行基于角色的访问控制 (RBAC) 策略,从而限制哪些用户可以访问该命名空间内的资源。
  • 多租户:命名空间可用于提供多租户环境,其中不同的团队或应用程序共享同一集群,但彼此隔离。

命名空间在 Kubernetes 中并非可选。Kubernetes 中的每个资源都与一个命名空间关联,如果未指定命名空间,则资源将在默认命名空间中创建。但是,对于小型集群或无需考虑资源管理的简单用例,命名空间并非必需。

17. Kubelet 作为 Kubernetes 中的节点服务组件,主要执行哪些操作?


Kubelet 是 Kubernetes 中的一个节点服务组件,负责管理节点上运行的容器。Kubelet 的一些主要操作包括:

  • 容器管理:Kubelet 负责管理节点上运行的容器的生命周期。它会根据需要启动、停止和重启容器,并确保容器正常运行。
  • 镜像管理:Kubelet 负责从容器注册表中提取容器镜像,并将其缓存在节点本地。它还会定期检查是否有更新的镜像,并在必要时提取更新的镜像。
  • 卷管理:Kubelet 负责管理节点上容器使用的卷。它会创建和挂载卷,并确保容器在必要时可以使用这些卷。
  • 健康监控:Kubelet 监控节点上运行的容器的健康状况,并将其状态报告给 Kubernetes 控制平面。如果容器的健康状况不佳,Kubelet 会采取适当的措施来重启该容器。
  • 节点状态报告:Kubelet 向 Kubernetes 控制平面报告节点状态,包括节点上运行的容器的状态、可用资源以及其他相关信息。
  • Pod 生命周期管理:Kubelet 负责管理节点上 Pod 的生命周期。它会根据需要启动和停止 Pod,并确保 Pod 中的容器正常运行。

总而言之,Kubelet 是 Kubernetes 节点的关键组件,负责管理节点上运行的容器和 Pod,并确保它们健康且正常运行。

18. 多容器 Pod 有哪些不同类型?


在 Kubernetes 中,Pod 是可创建、调度和管理的最小可部署单元。它是一个或多个容器的逻辑主机,Pod 中的所有容器共享相同的网络命名空间、IPC 命名空间和文件系统命名空间。Kubernetes 中有几种类型的多容器 Pod,包括:

  • Sidecar 容器:Sidecar 容器是一个辅助容器,与主容器在同一 Pod 中一起运行。它可以执行日志记录、监控或数据处理等任务。Sidecar 容器与主容器共享相同的网络命名空间,这使得它们可以通过本地环回接口相互通信。
  • Ambassador 容器:Ambassador 容器充当另一个 Pod 中运行的服务的代理。它可以将流量路由到该服务,并执行负载均衡、服务发现和其他功能。
  • Adapter 容器:Adapter 容器是在不同格式或协议之间转换数据的容器。它可用于将数据从一种格式转换为另一种格式,或在不同的 API 之间进行转换。
  • Init 容器:Init 容器是一种特殊类型的容器,在 Pod 中的主容器之前运行。它可用于执行初始化任务,例如下载数据、配置环境或等待其他服务可用。

这些不同类型的多容器 Pod 为 Kubernetes 工作负载提供了灵活性和模块化,使其能够根据特定需求进行定制。

 19. 如何以特定间隔自动更新 ACR 容器镜像以获取最新的容器镜像?


要以特定间隔自动更新 Azure 容器注册表 (ACR) 容器镜像以获取最新的容器镜像,您可以使用 Azure 容器实例 (ACI) 并设置计划任务。ACI 提供按需运行容器的服务,无需预置或管理任何基础架构。您可以使用 ACI 运行一个容器,该容器会定期检查 ACR 中是否有新的容器镜像,如果有新镜像可用,它会更新 Kubernetes 集群中的部署。

以下是设置此过程的简要步骤:

  1. 创建一个容器镜像,用于检查 ACR 中镜像的新版本,并在有新镜像可用时更新 Kubernetes 部署。
  2. 创建一个 Azure 容器注册表 (ACR) 来存储您的容器镜像。
  3. 创建一个使用您在步骤 1 中创建的容器镜像的 Kubernetes 部署。
  4. 创建一个 Azure 容器实例 (ACI) 并设置计划任务,以便以特定间隔运行容器镜像。
  5. 更新计划任务,以便按所需的间隔运行容器镜像。

设置此过程后,容器镜像将自动检查 ACR 中镜像的新版本,并在有新镜像可用时更新 Kubernetes 部署。

以下示例展示了如何创建带有计划任务的 ACI,以运行用于检查 ACR 中镜像新版本的容器:

az container create --resource-group <resource-group-name> --name <aci-name> --image <acr-name>.azurecr.io/<image-name> --registry-username <acr-username> --registry-password <acr-password> --command-line "/bin/bash -c 'while true; do kubectl set image deployment/<deployment-name> <container-name>=<acr-name>.azurecr.io/<image-name>:latest; sleep <interval>; done'" --schedule "*/<interval-in-minutes> * * * *"

将 <resource-group-name> 替换为资源组的名称,将 <aci-name> 替换为 ACI 实例的名称,将 <acr-name> 替换为 ACR 注册表的名称,将 <image-name> 替换为容器映像的名称,将 <acr-username> 替换为 ACR 注册表的用户名,将 <acr-password> 替换为 ACR 注册表的密码,将 <deployment-name> 替换为 Kubernetes 部署的名称,将 <container-name> 替换为 Kubernetes 部署中容器的名称,并将 <interval-in-minutes> 替换为所需的间隔(分钟)。

20. AKS 如何使用 Azure 磁盘存储类和pv,pvc,列出主要的步骤

创建自定义存储类

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: managed-premium-custom
provisioner: kubernetes.io/azure-disk
reclaimPolicy: Retain
allowVolumeExpansion: true
parameters:storageAccountType: Premium_LRSkind: Managed
kubectl apply -f storage-class.yaml

创建持久卷声明和持久卷 

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: azure-managed-disk
spec:accessModes:- ReadWriteOncestorageClassName: managed-premium-customresources:requests:storage: 10Gi
kubectl apply -f Azure-pvc.yaml

 将持久卷附加到 AKS

apiVersion: v1
kind: Pod
metadata:name: nginx
spec:containers:- name: nginx-frontendimage: nginxvolumeMounts:- mountPath: "/mnt/Azure"name: volumevolumes:- name: volumepersistentVolumeClaim:claimName: azure-managed-disk

相关文章:

掌握 Kubernetes 和 AKS:热门面试问题和专家解答

1. 在 AKS&#xff08;Azure Kubernetes 服务&#xff09;中&#xff0c;集群、节点、Pod 和容器之间的关系和顺序是什么&#xff1f; 在 AKS&#xff08;Azure Kubernetes 服务&#xff09;中&#xff0c;集群、节点、Pod 和容器之间的关系和顺序如下&#xff1a; 集群&#…...

C++面向对象设计类的核心知识详解总述(1)

C 中的类是面向对象编程&#xff08;OOP&#xff09;的核心&#xff0c;用于封装数据和操作这些数据的函数。 下面将系统讲解 C 中类的核心知识点&#xff08;包含语法 概念 示例&#xff09;&#xff1a; 一、类的基本结构 class MyClass { public:// 构造函数MyClass();//…...

【大模型系列篇】Qwen3思考预算及思考模式切换实现原理探索

我们之前一期有介绍过阿里发布并开源的Qwen3大语言模型&#xff0c;无缝集成思考模式、多语言和MCP智能体&#xff1a;《Qwen3开源全新一代大语言模型来了&#xff0c;深入思考&#xff0c;更快行动》&#xff0c;感兴趣的小伙伴可以跳转阅读。 而在本次开源的 Qwen3 的更新中…...

PPT 制作难题迎刃而解,影刀 RPA 开启自动化创作时代

前言 影刀cto说过这么一句话&#xff1a;不迷信AI&#xff0c;也不忽视AI&#xff0c;我们要打造以AI驱动的RPA&#xff0c;AI对当前社会的影响真的不亚于一场战争的爆发 RPA&#xff08;机器人流程自动化&#xff09;作为一种已被广泛应用的技术&#xff0c;能基于预设规则自…...

Node.js面试题

一、什么是Node.js&#xff1f; Node.js 是一个开源的跨平台 JavaScript 运行时环境&#xff0c;允许开发者在服务器端运行 JavaScript 代码。它基于 Chrome 的 V8 JavaScript 引擎构建&#xff0c;能够高效地处理 I/O 操作&#xff0c;适合构建高性能的网络应用。 异步非阻塞&…...

C# NX二次开发:投影曲线和偏置曲线UFUN函数详解

大家好&#xff0c;今天要讲的是关于投影曲线和偏置曲线相关的函数。 &#xff08;1&#xff09;UF_CURVE_create_proj_curves1&#xff1a;这个函数的定义为创建投影曲线。 Defined in: uf_curve.h Overview Creates projection curves. Objects to project may be poi…...

从明文裸奔到密钥长城:HTTPS加密全链路攻防与CA信任锚点构建

前言&#xff1a;本文将从HTTP的隐患出发&#xff0c;深入剖析HTTPS如何通过加密算法、数字证书与信任链机制重塑网络通信的安全边界。我们将探讨协议的证书颁发机构&#xff08;CA&#xff09;的信任逻辑&#xff0c;以及HTTPS在性能与安全之间的平衡艺术。将帮助您更从容地应…...

C# WPF 颜色拾取器

x:Name=Color Picker 语言:C# WPF 下载:https://download.csdn.net/download/polloo2012/90780640 主界面 颜色库 关于我们 颜色拾取器是一种能够帮助用户获取颜色信息,并进行颜色选择、识别和调整的工具,以下将从其常见类型、使用场景及部分软件工具这几个维度展开介绍…...

MySQL关于锁的面试题

目录 1.了解过 MySQL 死锁问题吗&#xff1f; 2.什么是线程死锁&#xff1f;死锁相关面试题 2.1 什么是死锁&#xff1a; 2.2 形成死锁的四个必要条件是什么&#xff1f; 2.3 如何避免线程死锁&#xff1f; 3. MySQL 怎么排查死锁问题&#xff1f; 4.Java线上死锁问题如…...

亚远景-ASPICE vs ISO 21434:汽车软件开发标准的深度对比

ASPICE&#xff08;Automotive SPICE&#xff09;和ISO 21434是汽车软件开发领域的两大核心标准&#xff0c;分别聚焦于过程质量与网络安全。以下从核心目标、覆盖范围、实施重点、协同关系及行业价值五个维度进行深度对比分析&#xff1a; 一、核心目标对比 ASPICE&#xff1…...

第5讲、Transformer 编码器(Encoder)处理过程详解

&#x1f50d; Transformer 编码器&#xff08;Encoder&#xff09;处理过程详解 Transformer Encoder 是一个由 N 层&#xff08;一般为 6 层&#xff09;堆叠而成的模块结构。每一层的本质是两个核心子模块&#xff1a; 多头自注意力&#xff08;Multi-Head Self-Attention…...

Flutter Drawer 详解

目录 一、引言 二、Drawer 的基本用法 三、主要属性 四、常见问题与解决方案 4.1 手势冲突处理 4.2 多级导航管理 4.3 响应式布局适配 五、最佳实践建议 5.1 性能优化 5.2 无障碍支持 5.3 跨平台适配 六、结论 相关推荐 一、引言 在移动应用开发中&#xff0c;侧边…...

游戏引擎学习第263天:添加调试帧滑块

运行游戏&#xff0c;开始今天的开发工作。 我们继续游戏代码基础上进行重构&#xff0c;目标是实现更多的性能分析界面功能&#xff0c;尤其是调试用的用户界面。 目前运行游戏并打开性能分析窗口后&#xff0c;发现界面功能上还有不少缺陷。现在的界面可以向下钻取查看具体…...

Hadoop客户端环境准备

hadoop集群我们配置好了&#xff0c;要与它进行交互&#xff0c;我们还需要准备hadoop的客户端。要分成两步&#xff1a;下载hadoop包、配置环境变量。 1. 找到资料包路径下的Windows依赖文件夹&#xff0c;拷贝hadoop-3.1.0到非中文路径&#xff08;比如d:\hadoop-3.1.0&#…...

当“信任”遇上“安全”:如何用Curtain Logtrace记录文件操作活动 守护团队与数据的双重底线?

你是否也有过这样的担忧&#xff1f; 团队成员在处理敏感数据时是否遵守了公司规范&#xff1f; 某份被篡改或外泄的文档&#xff0c;到底发生了什么&#xff1f; 为了数据安全而频繁加密、限制下载&#xff0c;却反过来打击了员工的工作积极性…… 如何在不伤害团队信任的…...

如何进行室内VR全景拍摄?

如何进行室内VR全景拍摄&#xff1f; 室内VR全景拍摄作为先进的视觉技术&#xff0c;能够为用户提供沉浸式的空间体验。本文介绍如何进行室内VR全景拍摄&#xff0c;并阐述众趣科技在这一领域的技术支持和服务优势。 室内VR全景拍摄基础 1. 室内VR全景拍摄概述 室内VR全景拍…...

一文走进GpuGeek | conda常用命令

conda 常用命令 查看conda版本 conda --version 查看conda信息 conda info 更新conda自身到最新版本&#xff0c;同时也会更新其它包 conda update conda conda更新指定包&#xff0c;这里更新通过conda安装的zlib包 conda update zlib 列出所有虚拟环境 conda env li…...

Consumer Group的作用是什么?Rebalance的触发条件有哪些? (实现消费者负载均衡;消费者加入/离开、订阅Topic变化等)

好的&#xff0c;我现在需要回答用户关于Kafka Consumer Group和Rebalance的问题。首先&#xff0c;用户问的是Consumer Group的作用以及Rebalance的触发条件。根据之前的对话历史&#xff0c;用户已经了解了Kafka的基本组件、消息保留策略、顺序性保证等&#xff0c;现在的问题…...

【计算机视觉】OpenCV实战项目:Long-Exposure:基于深度学习的长时间曝光合成技术

Long-Exposure&#xff1a;基于深度学习的长时间曝光合成技术 项目概述与技术背景项目核心功能技术原理 环境配置与安装硬件要求建议详细安装步骤可选组件安装 实战应用指南1. 基础使用&#xff1a;视频转长曝光2. 高级模式&#xff1a;自定义光轨合成3. 批量处理模式 技术实现…...

CentOS 7 安装OpenJDK 17 JRE

CentOS 7 自带的java 版本为&#xff1a;java version "1.8.0_311"&#xff0c; 有些软件的运行需要更高的java版本。CentOS 7 自带的默认仓库里 没有 OpenJDK 17&#xff0c;但是 Adoptium 项目&#xff08;前身 AdoptOpenJDK&#xff09;提供了稳定的 OpenJDK 17 版…...

C++从入门到实战(十三)C++函数模板与类模板初阶讲解

C从入门到实战&#xff08;十三&#xff09;C函数模板与类模板初阶讲解 前言一、为什么需要模板1. 函数重载的问题2. 泛型编程和模板的作用 二、函数模板2.1 函数模板格式2.2 函数模板的原理2.3 函数模板的实例化&#xff08;1&#xff09;隐式实例化&#xff1a;&#xff08;2…...

CentOS服务器中如何解决内存泄漏问题?

内存泄漏并不是“爆炸性内存飙升”&#xff0c;而是程序申请了内存但没有释放&#xff0c;造成系统可用内存逐渐减少&#xff0c;直到用光。 表现形式&#xff1a; 系统空闲内存越来越少;swap频繁被占用;某些服务响应变慢甚至挂掉;重启服务后内存才释放。 内存泄漏的根源在哪…...

【Java项目脚手架系列】第三篇:Spring MVC基础项目脚手架

【Java项目脚手架系列】第三篇&#xff1a;Spring MVC基础项目脚手架 前言 在前面的文章中&#xff0c;我们介绍了Maven基础项目脚手架和JavaWeb基础项目脚手架。今天&#xff0c;我们将介绍Spring MVC项目脚手架&#xff0c;这是一个用于快速搭建Web应用的框架。 什么是Spr…...

chili3d调试笔记12 deepwiki viewport svg雪碧图 camera three.ts

xiangechen/chili3d | DeepWiki viewport阅读 &#x1f9e0;deep 我要把模型投影成dxf导出有什么办法 引用lookat 截图是如何实现的 明天接着搞 ---------------------------------------------------------------- 截图没什么用 搞个工程图模块可能才行 一个文件一行 忘…...

tinyrenderer笔记(Shader)

tinyrenderer个人代码仓库&#xff1a;tinyrenderer个人练习代码 前言 现在我们将所有的渲染代码都放在了 main.cpp 中&#xff0c;然而在 OpenGL 渲染管线中&#xff0c;渲染的核心逻辑是位于 shader 中的&#xff0c;下面是 OpenGL 的渲染管线&#xff1a; 蓝色是我们可以自…...

【奔跑吧!Linux 内核(第二版)】第1章:Linux 系统基础知识

笨叔 陈悦. 奔跑吧 Linux 内核&#xff08;第2版&#xff09; [M]. 北京: 人民邮电出版社, 2020. 文章目录 Linux 系统的发展历史Linux 发行版Red Hat LinuxDebian LinuxSuSE Linux优麒麟 Linux Linux 内核介绍宏内核和微内核Linux 内核概貌 Linux 系统的发展历史 Linux 系统诞…...

​Spring + Shiro 整合的核心要点及详细实现说明

在 Spring 项目中集成 Apache Shiro 可以实现轻量级的安全控制&#xff08;认证、授权、会话管理等&#xff09;。以下是 ​Spring Shiro 整合的核心要点及详细实现说明&#xff1a; 一、Spring 与 Shiro 整合的核心组件 ​组件​​作用​ShiroFilterFactoryBean创建 Shiro 过…...

已经写好论文的AI率降低

视频演示 https://www.bilibili.com/video/BV1v4VpzgEdc 提示词 你是我专门请来的“降维写作助手”&#xff0c;专门干一件事&#xff1a;把 AI 写得太“像 AI”的文字改得更像人写的。我们主要是处理论文、创作类内容&#xff0c;目标就是&#xff1a;不让检测工具一眼识破…...

AI教你学VUE——Deepseek版

一、基础阶段&#xff1a;打好Web开发基础 HTML/CSS基础 学习HTML标签语义化、CSS布局&#xff08;Flex/Grid&#xff09;、响应式设计&#xff08;媒体查询、REM/VW单位&#xff09;。资源推荐&#xff1a; MDN Web文档&#xff08;免费&#xff09;&#xff1a;HTML | CSS实战…...

卷积神经网络基础(五)

6.3 Softmax-with-Loss 层 我们最后介绍输出层的softmax函数&#xff0c;之前我们知道softmax函数会将输入值正规化之后再输出。在手写数字识别的例子中&#xff0c;softmax层的输出如下&#xff1a; 输入图像通过Affi ne层和ReLU层进行转换&#xff0c;10个输入通过Softmax层…...

Go语言——string、数组、切片以及map

一、string、数组、切片代码 package mainimport "fmt"// 定义结构体 type student struct {id intname stringage intscore float32 }func main() {// 使用var声明切片var slice1 []intslice1 append(slice1, 1)slice1 append(slice1, 2)slice1 append(sl…...

线性回归有截距

In [ ]: ∑ i 1 m ( y i − x i T w ) 2 \sum _{i1}^{m}(y_{i}-x_{i}^{T}w)^{2} i1∑m​(yi​−xiT​w)2 w ^ ( X T X ) − 1 X T y \hat {w}(X^{T}X)^{-1}X^{T}y w^(XTX)−1XTy In [ ]: 1 &#xff03;如果有截距&#xff0c;求解时&#xff0c;需要梯度下降法求解w 和b …...

【基础】Python包管理工具uv使用全教程

一、uv简介 uv 是由 Astral&#xff08;前身为 Basis&#xff09;团队开发的 Python 包安装器和解析器&#xff0c;完全使用 Rust 语言编写。与传统 Python 工具不同&#xff0c;uv 将多个工具的功能整合到一个高性能的解决方案中&#xff0c;旨在提供更现代、更高效的 Python…...

事务(transaction)-上

事务概述 食物是一个最小的工作单元。在数据库当中&#xff0c;事务表示一件完整的事儿。一个业务的完成可能需要多条DML语句共同配合才能完成&#xff0c;例如转账业务&#xff0c;需要执行两条DML语句&#xff0c;先更新张三账户的余额&#xff0c;再更新李四账户的余额&…...

Python训练打卡Day17

无监督算法中的聚类 知识点 聚类的指标聚类常见算法&#xff1a;kmeans聚类、dbscan聚类、层次聚类三种算法对应的流程 实际在论文中聚类的策略不一定是针对所有特征&#xff0c;可以针对其中几个可以解释的特征进行聚类&#xff0c;得到聚类后的类别&#xff0c;这样后续进行解…...

【爬虫】码上爬第6题-倚天剑

堆栈入手&#xff1a; 全部复制的话&#xff0c;注意修改一些必要在地方&#xff1a; 通过s函数来获取请求头的加密参数 通过xxxxoooo来获取解密后的数据 js代码关键点&#xff1a; python代码我推荐使用这个网站&#xff1a; Convert curl commands to code 根据生成的代码…...

自定义SpringBoot Starter-笔记

SpringBoot Starter的介绍参考&#xff1a; Spring Boot Starter简介-笔记-CSDN博客。这里介绍如何自定义一个springBoot Starter。 1. 项目结构 创建一个 Maven 项目&#xff0c;结构如下&#xff1a; custom-spring-boot-starter-demo/ ├── custom-hello-jdk/ # jdk模…...

一周学会Pandas2 Python数据处理与分析-Pandas2数据类型转换操作

锋哥原创的Pandas2 Python数据处理与分析 视频教程&#xff1a; 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili Pandas 提供了灵活的方法来处理数据类型转换&#xff0c;以下是常见操作及代码示例&#xff1a; 1. 查看数据类型 …...

Java中常见的问题

1. SSO中的Cookie/Token生成与安全传递 生成Cookie/Token&#xff1a; Cookie&#xff1a;服务器通过Set-Cookie响应头生成&#xff0c;包含用户ID、过期时间等&#xff0c;需设置HttpOnly和Secure属性防止XSS和中间人攻击。Token&#xff08;如JWT&#xff09;&#xff1a;使…...

【JEECG】BasicTable内嵌Table表格错位

功能说明&#xff1a; 解决代码生成后&#xff0c;本地内嵌Table表格样式错位。 优化前&#xff1a; 优化后&#xff1a; 解决方法&#xff1a; 对应的List.vue页面增加css样式调整。 <style lang"less" scoped>//内嵌表格margin边距覆盖:deep(.ant-table-…...

人工智能 计算智能模糊逻辑讲解

引言 在计算智能&#xff08;Computational Intelligence&#xff09;领域&#xff0c;模糊逻辑&#xff08;Fuzzy Logic&#xff09;作为一种处理不确定性与模糊性信息的数学工具&#xff0c;自 1965 年由洛夫特扎德&#xff08;Lotfi Zadeh&#xff09;提出以来&#xff0c;…...

基于SSM实现的健身房系统功能实现一

一、前言介绍&#xff1a; 1.1 项目摘要 随着社会的快速发展和人们健康意识的不断提升&#xff0c;健身行业也在迅速扩展。越来越多的人加入到健身行列&#xff0c;健身房的数量也在不断增加。这种趋势使得健身房的管理变得越来越复杂&#xff0c;传统的手工或部分自动化的管…...

spring详解-循环依赖的解决

Spring循环依赖 重点提示&#xff1a; 本文都快写完了&#xff0c;发现“丈夫” 的英文是husband… 在“②有AOP循环依赖” 改过来了&#xff0c;前面用到的位置太多了就没改。我是说怎么idea的hansband英文下面怎么有波浪线。各位能够理解意思就行&#xff0c;英文拼写不要过…...

【大模型面试每日一题】Day 10:混合精度训练如何加速大模型训练?可能出现什么问题?如何解决?

【大模型面试每日一题】Day 10&#xff1a;混合精度训练如何加速大模型训练&#xff1f;可能出现什么问题&#xff1f;如何解决&#xff1f; &#x1f4cc; 题目重现 &#x1f31f;&#x1f31f; 面试官&#xff1a;混合精度训练如何加速大模型训练&#xff1f;可能出现什么问…...

[学习]RTKLib详解:rtkcmn.c与rtkpos.c

文章目录 Part A、Rrtkcmn.c一、总体功能二、关键API列表三、核心算法实现四、函数功能与参数说明1. uniqnav2. lsq3. filter4. matmul5. satazel6. ionmapf7. geodist8. timeadd9. dgetrf_ / dgetri_&#xff08;LAPACK接口&#xff09; 五、工作流程说明4.1 模块在RTKLib中的…...

cookie/session的关系

什么是cookie&#xff0c;session 我们平时去医院看病时&#xff0c;从进医院那一刻&#xff0c;我们最开始要做的就是挂号&#xff08;需要我们填写表格&#xff0c;记录一些核心信息&#xff0c;医生会把这些信息录入电脑&#xff0c;并给我办一个就诊卡&#xff0c;卡里面只…...

Linux(十四)进程间通信(IPC),管道

一、进程间通信 &#xff08;一&#xff09;系统介绍进程间通信 进程间通信&#xff08;IPC&#xff09;介绍 小编插入的这篇文章详细介绍了进程间通信的一些内容&#xff0c;大家可以一起学习。 &#xff08;二&#xff09;进程间通信的方法 1、管道 2、信号量 3、共享…...

Nmap 工具的详细使用教程

Nmap&#xff08;Network Mapper&#xff09;是一款开源且功能强大的网络扫描和安全审计工具。它被广泛用于网络发现、端口扫描、操作系统检测、服务版本探测以及漏洞扫描等。 官方链接: Nmap 官方网站: https://nmap.org/Nmap 官方文档 (英文): https://nmap.org/book/man.h…...

Vue 自定义指令输入校验过滤

/*** 过滤字符串* param {*} filterCharRule* param {*} newVal* returns*/ function filterCharForValue(filterCharRule, newVal) {if(!filterCharRule || !newVal) returnconst isArray filterCharRule instanceof Arrayconst isRegExp filterCharRule instanceof RegExpi…...

OpenGl实战笔记(2)基于qt5.15.2+mingw64+opengl实现纹理贴图

一、作用原理 1、作用&#xff1a;将一张图片&#xff08;纹理&#xff09;映射到几何体表面&#xff0c;提升视觉真实感&#xff0c;不增加几何复杂度。 2、原理&#xff1a;加载图片为纹理 → 上传到 GPU&#xff1b;为顶点设置纹理坐标&#xff08;如 0~1 范围&#xff09;&…...