Trident 운영자 설치를 사용자 지정합니다
Trident 연산자를 사용하면 사양의 속성을 사용하여 Trident 설치를 사용자 정의할 수 TridentOrchestrator
있습니다. 허용되는 인수를 넘어 설치를 사용자 지정하려면 TridentOrchestrator
을 사용하여 tridentctl
사용자 지정 YAML 매니페스트를 생성하여 필요에 따라 수정할 수 있습니다.
컨트롤러 Pod 및 노드 포드 이해
Trident는 단일 컨트롤러 Pod와 클러스터의 각 작업자 노드에서 노드 Pod로 실행됩니다. 노드 포드는 Trident 볼륨을 마운트하려는 호스트에서 실행되고 있어야 합니다.
쿠버네티스 "노드 선택기" 및 "관용과 오해" 포드를 특정 노드 또는 기본 노드에서 실행하도록 제한하는 데 사용됩니다. ControllerPlugin과 을 사용합니다 `NodePlugin`구속 조건과 덮어쓰기를 지정할 수 있습니다.
-
컨트롤러 플러그인은 스냅샷 및 크기 조정과 같은 볼륨 프로비저닝 및 관리를 처리합니다.
-
노드 플러그인은 스토리지에 노드를 연결하는 작업을 처리합니다.
구성 옵션
spec.namespace Trident가 설치된 네임스페이스를 나타내기 위해 에 TridentOrchestrator 지정됩니다. 이 매개 변수 * 는 Trident 설치 후 업데이트할 수 없습니다 *. 이렇게 하면 TridentOrchestrator 상태가 로 `Failed`변경됩니다. Trident는 네임스페이스 간에 마이그레이션되지 않습니다.
|
이 표에 자세히 나와 있습니다 TridentOrchestrator
속성.
매개 변수 | 설명 | 기본값 |
---|---|---|
|
Trident를 설치할 네임스페이스입니다 |
|
"버그" |
Trident에 대해 디버깅을 활성화합니다 |
거짓입니다 |
|
|
거짓입니다 |
|
를 로 설정합니다 |
거짓입니다 |
|
를 로 설정합니다 |
|
|
AKS 클러스터에서 클라우드 ID를 사용할 때 워크로드 ID("Azure.workload.identity/client-id: xxxxxxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxx")로 설정합니다. EKS 클러스터에서 클라우드 ID를 사용할 때 AWS IAM 역할(" eks.amazonaws.com/role-arn: arn:AWS:IAM::123456:role/Trident-role")로 설정합니다. |
|
|
IPv6를 통해 Trident를 설치합니다 |
거짓 |
|
Kubernetes 작업 시간이 초과되었습니다 |
|
|
AutoSupport 번들을 NetApp로 보내지 마십시오 |
거짓입니다 |
자동 지원 이미지 |
AutoSupport 텔레메트리 컨테이너 이미지입니다 |
|
자동 지원 프록시 |
AutoSupport를 보내는 프록시의 주소/포트입니다 |
|
"제거"를 선택합니다 |
Trident를 제거하는 데 사용되는 플래그입니다 |
거짓입니다 |
|
사용할 Trident 로깅 형식 [text, json] |
|
트리덴티이미지 |
설치할 Trident 이미지 |
|
'imageRegistry'입니다 |
형식의 내부 레지스트리 경로입니다 |
|
쿠벨레트디렉토리 |
호스트의 kubelet 디렉토리에 대한 경로입니다 |
|
|
Trident의 전체 제거를 수행하기 위해 삭제할 리소스 목록입니다 |
|
'imagePullSecrets' |
내부 레지스트리에서 이미지를 가져올 수 있는 비밀 |
|
|
Trident 운영자의 이미지 풀 정책을 설정합니다. 유효한 값은 다음과 같습니다. |
|
'controllerPluginNodeSelector' |
Pod용 추가 노드 선택기 는 와 동일한 형식을 따릅니다 |
기본값 없음, 선택 사항 |
'컨트롤러 PluginTolerations' |
Pod에 대한 Kubernetes 허용 설정을 재정의합니다. 는 와 동일한 형식을 따릅니다 |
기본값 없음, 선택 사항 |
노드플러거노드 선택기 |
Pod용 추가 노드 선택기 는 와 동일한 형식을 따릅니다 |
기본값 없음, 선택 사항 |
노드 PluginTolerations |
Pod에 대한 Kubernetes 허용 설정을 재정의합니다. 는 와 동일한 형식을 따릅니다 |
기본값 없음, 선택 사항 |
|
Trident가 Kubernetes 클러스터의 노드를 준비하여 지정된 데이터 스토리지 프로토콜을 사용하여 볼륨을 관리할 수 있도록 합니다. * 현재 |
POD 매개 변수 포맷에 대한 자세한 내용은 을 참조하십시오 "노드에 Pod 할당". |
강제 분리에 대한 세부 정보
강제 분리는, ontap-san-economy
onatp-nas-economy
에서만 사용할 수 ontap-san
있습니다. 강제 분리를 활성화하기 전에 Kubernetes 클러스터에서 비정상 노드 종료(ngns)를 활성화해야 합니다. 자세한 내용은 을 "Kubernetes: 노드 정상 종료 아님"참조하십시오.
드라이버를 사용할 때는 ontap-nas-economy Trident이 관리형 엑스포트 정책을 사용하여 적용된 태그로 인해 Kubernetes 노드에서 액세스를 제한할 수 있도록 백엔드 구성에서 매개 변수를 로 true 설정해야 autoExportPolicy 합니다.
|
Trident는 Kubernetes ngns를 사용하기 때문에 허용할 수 없는 모든 워크로드의 일정이 재조정될 때까지 비정상 노드에서 테인트를 제거하지 마십시오 out-of-service . 무모하게 타트를 적용하거나 제거하면 백엔드 데이터 보호가 위태롭게 될 수 있습니다.
|
Kubernetes 클러스터 관리자가 노드에 태그를 enableForceDetach
적용하고 node.kubernetes.io/out-of-service=nodeshutdown:NoExecute
로 설정하면 true
Trident이 노드 상태와 다음을 확인합니다.
-
해당 노드에 마운트된 볼륨에 대한 백엔드 입출력 액세스를 중단합니다.
-
Trident 노드 개체를 로
dirty
표시합니다(새 발행물에 안전하지 않음).Trident 컨트롤러는 Trident 노드 포드에 의해 노드가 다시 검증될 때까지(로 표시된 후) 새로운 게시 볼륨 요청을 거부합니다 dirty
. Trident가 노드를 확인할 수 있을 때까지(새 발행물에 안전함) 마운트된 PVC로 예약된 모든 작업 부하(클러스터 노드가 정상 및 준비 상태임 이후에도)는 수락되지clean
않습니다.
노드 상태가 복원되고 정점이 제거되면 Trident는 다음을 수행합니다.
-
노드에서 오래된 게시된 경로를 식별하고 제거합니다.
-
노드가 상태(서비스 중단 시간이 제거되고 노드가 상태)이고 모든 오래되고
Ready
게시된 경로가 정리된 경우cleanable
, 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 작업자 노드
이 예제에서는 Windows 작업자 노드에 Trident를 설치합니다.
cat deploy/crds/tridentorchestrator_cr.yaml 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