Skip to main content
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

自定义Trident操作员安装

贡献者 netapp-aruldeepa

Trident操作符允许您使用属性自定义Trident安装。 `TridentOrchestrator`规格如果您想对安装进行超出以下范围的自定义: `TridentOrchestrator`如果论据允许,请考虑使用 `tridentctl`生成自定义 YAML 清单,并根据需要进行修改。

了解控制器 pod 和节点 pod

Trident以单个控制器 pod 的形式运行,集群中的每个工作节点上还有一个节点 pod。节点 pod 必须运行在您希望挂载Trident卷的任何主机上。

Kubernetes"节点选择器""容忍与污点"用于限制 pod 在特定或首选节点上运行。使用`ControllerPlugin`和 `NodePlugin`您可以指定约束和覆盖规则。

  • 控制器插件负责卷的配置和管理,例如快照和调整大小。

  • 节点插件负责将存储连接到节点。

配置选项

警告 spec.namespace`已在……中指定 `TridentOrchestrator`用于指定Trident安装所在的命名空间。 Trident安装后,此参数*无法更新*。尝试这样做会导致 `TridentOrchestrator`状态更改为 `Failed。 Trident不打算跨命名空间迁移。

此表详细说明 `TridentOrchestrator`属性。

参数 描述 默认

namespace

用于安装Trident 的命名空间

"default"

debug

启用Trident的调试功能

false

enableForceDetach

ontap-sanontap-san-economyontap-nas , 和 `ontap-nas-economy`仅有的。与 Kubernetes 非优雅节点关闭 (NGNS) 配合使用,使集群管理员能够在节点出现故障时安全地将挂载卷的工作负载迁移到新节点。

false

windows

设置为 `true`支持在Windows工作节点上安装。

false

cloudProvider

设置为 `"Azure"`在 AKS 集群上使用托管身份或云身份时。设置为 `"AWS"`在 EKS 集群上使用云身份时。设置为 `"GCP"`在 GKE 集群上使用云身份时。

""

cloudIdentity

在 AKS 集群上使用云标识时,请设置为工作负载标识(“azure.workload.identity/client-id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx”)。在 EKS 集群上使用云身份时,设置为 AWS IAM 角色(“'eks.amazonaws.com/role-arn: arn:aws:iam::123456:role/trident-role'”)。在 GKE 集群上使用云身份时,请设置为云身份(“'iam.gke.io/gcp-service-account: xxxx@mygcpproject.iam.gserviceaccount.com'”)。

""

IPv6

通过 IPv6 安装Trident

false

k8sTimeout

Kubernetes 操作超时。

备注 这 `k8sTimeout`该参数仅适用于Trident安装。

180sec

silenceAutosupport

不要自动向NetApp发送自动支持包

false

autosupportImage

自动支持遥测的容器镜像

"netapp/trident-autosupport:25.06"

autosupportProxy

用于发送自动支持遥测数据的代理地址/端口

"http://proxy.example.com:8888"

uninstall

用于卸载Trident 的标志

false

logFormat

Trident日志记录格式:[text,json]

"text"

tridentImage

安装Trident镜像

"netapp/trident:25.06"

imageRegistry

内部注册表路径,格式如下
<registry FQDN>[:port][/subpath]

"registry.k8s.io"

kubeletDir

主机上 kubelet 目录的路径

"/var/lib/kubelet"

wipeout

要彻底移除Trident,需要删除以下资源:

imagePullSecrets

从内部镜像仓库拉取镜像的秘诀

imagePullPolicy

设置Trident操作符的镜像拉取策略。有效值为:
`Always`始终提取图像。
`IfNotPresent`仅当节点上尚不存在该镜像时才拉取该镜像。
`Never`永远不要删除图像。

IfNotPresent

controllerPluginNodeSelector

Pod 的附加节点选择器。遵循与以下相同的格式 pod.spec.nodeSelector

无默认值;可选

controllerPluginTolerations

覆盖 Kubernetes 对 Pod 的容忍度。遵循与以下相同的格式: pod.spec.Tolerations

无默认值;可选

nodePluginNodeSelector

Pod 的附加节点选择器。遵循与以下相同的格式 pod.spec.nodeSelector

无默认值;可选

nodePluginTolerations

覆盖 Kubernetes 对 Pod 的容忍度。遵循与以下相同的格式: pod.spec.Tolerations

无默认值;可选

nodePrep

使Trident能够准备 Kubernetes 集群的节点,以使用指定的数据存储协议管理卷。现在, `iscsi`是唯一支持的值。

备注 从 OpenShift 4.19 开始,此功能支持的最低Trident版本为 25.06.1。

k8sAPIQPS

控制器与 Kubernetes API 服务器通信时使用的每秒查询数 (QPS) 限制。Burst 值根据 QPS 值自动设置。

100; 选修的

enableConcurrency

支持并发Trident控制器操作以提高吞吐量。

备注 技术预览:此功能在NetApp Trident 25.06 中处于实验阶段,目前支持使用ONTAP-SAN 驱动程序(iSCSI 和 FCP 协议)的有限并行工作流程。

false

备注 有关格式化 pod 参数的更多信息,请参阅"将 Pod 分配给节点"

强制分离的详细信息

强制分离功能可用 ontap-sanontap-san-economyontap-nas , 和 `ontap-nas-economy`仅有的。在启用强制分离之前,必须在 Kubernetes 集群上启用非正常节点关闭 (NGNS)。Kubernetes 1.28 及以上版本默认启用 NGNS。更多信息,请参阅"Kubernetes:节点非优雅关闭"

备注 使用时 `ontap-nas`或者 `ontap-nas-economy`驱动程序,您需要设置 `autoExportPolicy`后端配置中的参数 `true`以便Trident可以使用托管导出策略限制对应用了污点的 Kubernetes 节点的访问。
警告 由于Trident依赖于 Kubernetes NGNS,请勿移除 `out-of-service`将来自不健康节点的污点保留到所有无法容忍的工作负载重新调度为止。鲁莽地应用或移除污点可能会危及后端数据保护。

当 Kubernetes 集群管理员应用了 `node.kubernetes.io/out-of-service=nodeshutdown:NoExecute`节点受到污染 `enableForceDetach`设置为 `true`Trident将确定节点状态并:

  1. 停止对挂载到该节点的卷的后端 I/O 访问。

  2. 将Trident节点对象标记为 dirty(不适合新出版物)

    备注 Trident控制器将拒绝新的发布卷请求,直到节点重新获得资格(在被标记为已激活之后)。 dirty`由Trident节点 pod 执行。任何使用已挂载 PVC 调度的工作负载(即使集群节点运行状况良好且已准备就绪)在Trident验证节点之前都不会被接受。 `clean (适用于新出版物)。

当节点健康状况恢复且污点被移除后, Trident将:

  1. 识别并清理节点上过期的已发布路径。

  2. 如果节点位于 `cleanable`状态(已移除服务中断污点,节点处于) `Ready`如果状态)并且所有过期的、已发布的路径都已清理, Trident将重新接纳该节点。 `clean`并允许将新发布的卷添加到节点。

示例配置

您可以使用以下属性配置选项在定义时 `TridentOrchestrator`自定义您的安装。

基本自定义配置

这个示例是在运行以下命令后创建的: `cat deploy/crds/tridentorchestrator_cr_imagepullsecrets.yaml`该命令代表一个基本的自定义安装:

apiVersion: trident.netapp.io/v1
kind: TridentOrchestrator
metadata:
  name: trident
spec:
  debug: true
  namespace: trident
  imagePullSecrets:
  - thisisasecret
节点选择器

此示例使用节点选择器安装Trident 。

apiVersion: trident.netapp.io/v1
kind: TridentOrchestrator
metadata:
  name: trident
spec:
  debug: true
  namespace: trident
  controllerPluginNodeSelector:
    nodetype: master
  nodePluginNodeSelector:
    storage: netapp
Windows 工作节点

这个示例是在运行以下命令后创建的: `cat deploy/crds/tridentorchestrator_cr.yaml`该命令在 Windows 工作节点上安装Trident 。

apiVersion: trident.netapp.io/v1
kind: TridentOrchestrator
metadata:
  name: trident
spec:
  debug: true
  namespace: trident
  windows: true
AKS 集群上的托管身份

本示例安装Trident以在 AKS 集群上启用托管身份。

apiVersion: trident.netapp.io/v1
kind: TridentOrchestrator
metadata:
  name: trident
spec:
  debug: true
  namespace: trident
  cloudProvider: "Azure"
AKS 集群上的云身份

本示例在 AKS 集群上安装Trident以用于云身份。

apiVersion: trident.netapp.io/v1
kind: TridentOrchestrator
metadata:
  name: trident
spec:
  debug: true
  namespace: trident
  cloudProvider: "Azure"
  cloudIdentity: 'azure.workload.identity/client-id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx'
EKS 集群上的云身份

本示例在 AKS 集群上安装Trident以用于云身份。

apiVersion: trident.netapp.io/v1
kind: TridentOrchestrator
metadata:
  name: trident
spec:
  debug: true
  namespace: trident
  cloudProvider: "AWS"
  cloudIdentity: "'eks.amazonaws.com/role-arn: arn:aws:iam::123456:role/trident-role'"
GKE 的云身份

本示例在 GKE 集群上安装Trident以用于云身份。

apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: backend-tbc-gcp-gcnv
spec:
  version: 1
  storageDriverName: google-cloud-netapp-volumes
  projectNumber: '012345678901'
  network: gcnv-network
  location: us-west2
  serviceLevel: Premium
  storagePool: pool-premium1