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

錯誤的

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 協定)的有限平行工作流程。

錯誤的

註 有關格式化 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