Tridentオペレータのインストールをカスタマイズ
Trident オペレータを使用すると、 TridentOrchestrator spec の属性を使用して Trident のインストールをカスタマイズできます。 TridentOrchestrator 引数で許可される範囲を超えてインストールをカスタマイズする場合は、 tridentctl を使用して、必要に応じて変更できるカスタム YAML マニフェストを生成することを検討してください。
コントローラポッドとノードポッドについて
Tridentは、クラスター内の各ワーカー ノード上で単一のコントローラー ポッドとノード ポッドとして実行されます。ノード ポッドは、Tridentボリュームをマウントする可能性のあるホスト上で実行されている必要があります。
Kubernetes"ノードセレクター"および"tolerations と taints"は、ポッドを特定のノードまたは優先ノードで実行するように制限するために使用されます。`ControllerPlugin`および `NodePlugin`を使用して、制約とオーバーライドを指定できます。
-
コントローラー プラグインは、スナップショットやサイズ変更などのボリュームのプロビジョニングと管理を処理します。
-
ノード プラグインは、ストレージをノードに接続する処理を行います。
構成オプション
|
|
`spec.namespace`は `TridentOrchestrator`で指定され、Tridentがインストールされている名前空間を示します。このパラメータは*Tridentのインストール後は更新できません*。更新しようとすると、 `TridentOrchestrator`のステータスが `Failed`に変更されます。Tridentは名前空間間で移行することを意図していません。 |
この表には `TridentOrchestrator`属性の詳細が記載されています。
| パラメータ | 概要 | デフォルト | ||||
|---|---|---|---|---|---|---|
|
Tridentをインストールする名前空間 |
|
||||
|
Tridentのデバッグを有効にする |
|
||||
|
|
|
||||
|
`true`に設定すると、Windows ワーカー ノードへのインストールが有効になります。 |
|
||||
|
`"Azure"`に設定します(AKS クラスターでマネージド ID またはクラウド ID を使用する場合)。 `"AWS"`に設定します(EKS クラスターでクラウド ID を使用する場合)。 `"GCP"`に設定します(GKE クラスターでクラウド ID を使用する場合)。 |
|
||||
|
AKSクラスタでクラウドIDを使用する場合は、ワークロードID("azure.workload.identity/client-id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx")に設定します。EKSクラスタでクラウドIDを使用する場合は、AWS IAMロール("'eks.amazonaws.com/role-arn: arn:aws:iam::123456:role/trident-role'")に設定します。GKEクラスタでクラウドIDを使用する場合は、クラウドID("'iam.gke.io/gcp-service-account: xxxx@mygcpproject.iam.gserviceaccount.com'")に設定します。 |
|
||||
|
IPv6経由でTridentをインストール |
false |
||||
|
Kubernetes 操作のタイムアウト。
|
|
||||
|
AutoSupport バンドルを NetApp に自動的に送信しない |
|
||||
|
Autosupport Telemetryのコンテナイメージ |
|
||||
|
Autosupport テレメトリを送信するためのプロキシのアドレス/ポート |
|
||||
|
Tridentをアンインストールするために使用するフラグ |
|
||||
|
Tridentで使用するログ形式 [text,json] |
|
||||
|
インストールする Trident イメージ |
|
||||
|
内部レジストリへのパス。形式は |
|
||||
|
ホスト上の kubelet ディレクトリへのパス |
|
||||
|
Tridentを完全に削除するために削除するリソースのリスト |
|||||
|
内部レジストリからイメージをプルするためのシークレット |
|||||
|
Trident オペレータのイメージプルポリシーを設定します。有効な値は次のとおりです: |
|
||||
|
ポッドの追加ノードセレクター。 `pod.spec.nodeSelector`と同じ形式に従います。 |
デフォルトなし;オプション |
||||
|
ポッドの Kubernetes 許容値をオーバーライドします。 `pod.spec.Tolerations`と同じ形式に従います。 |
デフォルトなし;オプション |
||||
|
ポッドの追加ノードセレクター。 `pod.spec.nodeSelector`と同じ形式に従います。 |
デフォルトなし;オプション |
||||
|
ポッドの Kubernetes 許容値をオーバーライドします。 `pod.spec.Tolerations`と同じ形式に従います。 |
デフォルトなし;オプション |
||||
|
Tridentが、指定されたデータストレージ プロトコルを使用してボリュームを管理するために、Kubernetesクラスタのノードを準備できるようにします。現在、 `iscsi`がサポートされている唯一の値です。
|
|||||
|
Kubernetes API サーバーと通信するときにコントローラーが使用する 1 秒あたりのクエリ数(QPS)の制限。バースト値は QPS 値に基づいて自動的に設定されます。 |
|
||||
|
スループットを向上させるために、Tridentコントローラーの同時操作を可能にします。
|
false |
||||
|
Trident コントローラーとノード ポッドの Kubernetes リソース制限とリクエストを設定します。Kubernetes でのリソース割り当てを管理するために、各コンテナとサイドカーの CPU とメモリを設定できます。 リソース要求と制限の設定の詳細については、"Pod と Container のリソース管理"を参照してください。
|
|
||||
|
Prometheus メトリック エンドポイントに対して HTTPS を有効にします。 |
false |
||||
|
Trident コントローラのホスト ネットワークを有効にします。これは、マルチホーム ネットワークでフロントエンド トラフィックとバックエンド トラフィックを分離する場合に便利です。 |
false |
|
|
ポッドパラメータのフォーマットの詳細については、"Pod をノードに割り当てる"を参照してください。 |
サンプル構成
構成オプションの属性を使用して `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 クラスタ上の管理対象 ID
この例では、AKS クラスターでマネージド ID を有効にするために Trident をインストールします。
apiVersion: trident.netapp.io/v1
kind: TridentOrchestrator
metadata:
name: trident
spec:
debug: true
namespace: trident
cloudProvider: "Azure"
AKS クラスタ上のクラウド ID
この例では、AKS クラスター上のクラウド ID で使用するために 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 クラスタのクラウド ID
この例では、AKS クラスター上のクラウド ID で使用するために 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 のクラウド ID
この例では、GKE クラスタ上のクラウド ID で使用するために 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
TridentコントローラーとTrident Linuxノードポッド用のKubernetesリソースリクエストと制限の設定
この例では、TridentコントローラーとTrident Linuxノードポッドに対するKubernetesリソースリクエストと制限を設定します。
|
|
免責事項:この例で示されている要求値と制限値は、デモンストレーションのみを目的としています。環境とワークロードの要件に基づいてこれらの値を調整してください。 |
apiVersion: trident.netapp.io/v1
kind: TridentOrchestrator
metadata:
name: trident
spec:
debug: true
namespace: trident
imagePullSecrets:
- thisisasecret
resources:
controller:
trident-main:
requests:
cpu: 10m
memory: 80Mi
limits:
cpu: 200m
memory: 256Mi
# sidecars
csi-provisioner:
requests:
cpu: 2m
memory: 20Mi
limits:
cpu: 100m
memory: 64Mi
csi-attacher:
requests:
cpu: 2m
memory: 20Mi
limits:
cpu: 100m
memory: 64Mi
csi-resizer:
requests:
cpu: 3m
memory: 20Mi
limits:
cpu: 100m
memory: 64Mi
csi-snapshotter:
requests:
cpu: 2m
memory: 20Mi
limits:
cpu: 100m
memory: 64Mi
trident-autosupport:
requests:
cpu: 1m
memory: 30Mi
limits:
cpu: 50m
memory: 128Mi
node:
linux:
trident-main:
requests:
cpu: 10m
memory: 60Mi
limits:
cpu: 200m
memory: 256Mi
# sidecars
node-driver-registrar:
requests:
cpu: 1m
memory: 10Mi
limits:
cpu: 50m
memory: 32Mi
Kubernetes のリソースリクエストと制限の設定(Trident コントローラーと Trident Windows および Linux ノードポッド)
この例では、TridentコントローラーとTrident WindowsおよびLinuxノードポッドのKubernetesリソースリクエストと制限を設定します。
|
|
免責事項:この例で示されている要求値と制限値は、デモンストレーションのみを目的としています。環境とワークロードの要件に基づいてこれらの値を調整してください。 |
apiVersion: trident.netapp.io/v1
kind: TridentOrchestrator
metadata:
name: trident
spec:
debug: true
namespace: trident
imagePullSecrets:
- thisisasecret
windows: true
resources:
controller:
trident-main:
requests:
cpu: 10m
memory: 80Mi
limits:
cpu: 200m
memory: 256Mi
# sidecars
csi-provisioner:
requests:
cpu: 2m
memory: 20Mi
limits:
cpu: 100m
memory: 64Mi
csi-attacher:
requests:
cpu: 2m
memory: 20Mi
limits:
cpu: 100m
memory: 64Mi
csi-resizer:
requests:
cpu: 3m
memory: 20Mi
limits:
cpu: 100m
memory: 64Mi
csi-snapshotter:
requests:
cpu: 2m
memory: 20Mi
limits:
cpu: 100m
memory: 64Mi
trident-autosupport:
requests:
cpu: 1m
memory: 30Mi
limits:
cpu: 50m
memory: 128Mi
node:
linux:
trident-main:
requests:
cpu: 10m
memory: 60Mi
limits:
cpu: 200m
memory: 256Mi
# sidecars
node-driver-registrar:
requests:
cpu: 1m
memory: 10Mi
limits:
cpu: 50m
memory: 32Mi
windows:
trident-main:
requests:
cpu: 6m
memory: 40Mi
limits:
cpu: 200m
memory: 128Mi
# sidecars
node-driver-registrar:
requests:
cpu: 6m
memory: 40Mi
limits:
cpu: 100m
memory: 128Mi
liveness-probe:
requests:
cpu: 2m
memory: 40Mi
limits:
cpu: 50m
memory: 64Mi