2장. CSIDriver [storage.k8s.io/v1]
- 설명
- CSIDriver는 클러스터에 배포된 CSI(Container Storage Interface) 볼륨 드라이버에 대한 정보를 캡처합니다. Kubernetes 연결 분리 컨트롤러는 이 오브젝트를 사용하여 attach가 필요한지 여부를 확인합니다. kubelet은 이 오브젝트를 사용하여 마운트 시 Pod 정보를 전달해야 하는지 여부를 결정합니다. CSIDriver 오브젝트는 네임스페이스가 아닙니다.
- 유형
-
object
- 필수 항목
-
spec
-
2.1. 사양
속성 | 유형 | 설명 |
---|---|---|
|
| APIVersion은 버전이 지정된 이 오브젝트 표현의 스키마를 정의합니다. 서버는 인식된 스키마를 최신 내부 값으로 변환해야 하며, 인식되지 않는 값을 거부할 수 있습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
|
| kind는 이 오브젝트가 나타내는 REST 리소스에 해당하는 문자열 값입니다. 서버는 클라이언트에서 요청을 제출한 끝점에서 이를 유추할 수 있습니다. CamelCase로 업데이트할 수 없습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
| 표준 오브젝트 metadata. metadata.Name은 이 오브젝트가 참조하는 CSI 드라이버의 이름을 나타냅니다. 해당 드라이버의 CSI GetPluginName() 호출에서 반환한 이름과 같아야 합니다. 드라이버 이름은 63자 이상이어야 하며, 시작 후 대시(-), 점(.) 및 영숫자 사이의 영숫자([a-z0-9A-Z])로 끝나야 합니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata | |
|
| CSIDriverSpec은 CSIDriver의 사양입니다. |
2.1.1. .spec
- 설명
- CSIDriverSpec은 CSIDriver의 사양입니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| attachRequired는 이 CSI 볼륨 드라이버에 연결 작업이 필요함( CSI ControllerPublishVolume() 메서드를 구현함) 및 Kubernetes 연결 분리 컨트롤러에서 볼륨 연결 상태를 확인하는 attach 볼륨 인터페이스를 호출하고 볼륨이 마운트되기 전에 볼륨이 연결될 때까지 대기해야 함을 나타냅니다. CSI 외부 연결자는 CSI 볼륨 드라이버와 조정하고 연결 작업이 완료되면 볼륨 연결 상태를 업데이트합니다. CSIDriverRegistry 기능 게이트가 활성화되어 있고 값이 false로 지정되면 연결 작업을 건너뜁니다. 그렇지 않으면 연결 작업이 호출됩니다. 이 필드는 변경할 수 없습니다. |
|
| 기본 볼륨이 마운트되기 전에 볼륨의 소유권 및 권한 변경을 지원하는지 여부를 정의합니다. 자세한 내용은 특정 FSGroupPolicy 값을 참조하십시오. 이 필드는 변경할 수 없습니다. 기본값은 ReadWriteOnceWithFSType으로, 각 볼륨을 검사하여 Kubernetes가 볼륨의 소유권 및 권한을 수정해야 하는지 결정합니다. 기본 정책에서는 fstype이 정의되고 볼륨의 액세스 모드에 ReadWriteOnce가 포함된 경우에만 정의된 fsGroup이 적용됩니다. |
|
| true로 설정하면 podInfoOnMount가 이 CSI 볼륨 드라이버에 마운트 작업 중 podName, podUID 등과 같은 추가 Pod 정보가 필요함을 나타냅니다. false로 설정하면 마운트 시 Pod 정보가 전달되지 않습니다. 기본값은 false입니다. CSI 드라이버는 드라이버 배포의 일부로 podInfoOnMount를 지정합니다. true인 경우 Kubelet은 CSI NodePublishVolume() 호출에서 VolumeContext로 Pod 정보를 전달합니다. CSI 드라이버는 VolumeContext로 전달된 정보를 구문 분석하고 검증합니다. podInfoOnMount가 true로 설정된 경우 다음 VolumeConext가 전달됩니다. 이 목록이 증가할 수 있지만 접두사가 사용됩니다. "csi.storage.k8s.io/pod.name": pod.Name "csi.storage.k8s.io/pod.namespace": pod.Namespace "csi.storage.k8s.io/pod.uid": string(pod.UID) "csi.storage.k8s.io/ephemeral": "csi.storage.k8s.io/ephemeral": CSIVolume에 의해 정의된 경우 "true" "CSI.storage.k8s.io/ephemeral"은 Kubernetes 1.16의 새로운 기능입니다. "Persistent" 및 "Ephemeral" VolumeLifecycleMode를 모두 지원하는 드라이버에만 필요합니다. 다른 드라이버는 Pod 정보를 비활성화 상태로 두거나 이 필드를 무시할 수 있습니다. Kubernetes 1.15는 이 필드를 지원하지 않으므로 이러한 클러스터에 배포되는 경우 드라이버는 하나의 모드만 지원할 수 있으며 배포는 예를 들어 드라이버의 명령행 매개 변수를 통해 어떤 모드인지 결정합니다. 이 필드는 변경할 수 없습니다. |
|
|
RequiresRepublish는 마운트된 볼륨에서 가능한 변경 사항을 반영하기 위해 CSI 드라이버에서 참고: 초기 NodePublishVolume 호출이 성공한 후 NodePublishVolume에 대한 후속 호출은 볼륨의 콘텐츠만 업데이트해야 합니다. 실행 중인 컨테이너에서 새 마운트 지점을 볼 수 없습니다. |
|
| SELinuxMount는 CSI 드라이버가 "-o context" 마운트 옵션을 지원하는지 여부를 지정합니다.
"true"인 경우 CSI 드라이버는 다른 "false"인 경우 Kubernetes는 특수 SELinux 마운트 옵션을 드라이버에 전달하지 않습니다. 이는 더 큰 공유 파일 시스템의 하위 디렉터리를 나타내는 볼륨에 일반적으로 사용됩니다. 기본값은 "false"입니다. |
|
| true로 설정하면 storageCapacity CSI 볼륨 드라이버가 CSI 볼륨 드라이버가 용량 정보를 사용하여 CSIStorageCapacity 오브젝트를 생성하여 드라이버 배포에서 보고할 스토리지 용량을 고려하려고 함을 나타냅니다. 드라이버를 배포할 때 검사를 즉시 활성화할 수 있습니다. 이 경우 최신 바인딩으로 새 볼륨을 프로비저닝하면 드라이버 배포가 적합한 CSIStorageCapacity 오브젝트가 게시될 때까지 일시 중지됩니다. 또는 설정되지 않은 필드 또는 false를 사용하여 드라이버를 배포할 수 있으며 나중에 스토리지 용량 정보가 게시되면 전환될 수 있습니다. 이 필드는 Kubernetes Cryostat 1.22에서 변경할 수 없으며 이제 변경할 수 있습니다. |
|
| TokenRequests는 CSI 드라이버에 필요한 인증을 수행하기 위해 볼륨을 마운트하는 Pod의 서비스 계정 토큰이 필요함을 나타냅니다. kubelet은 CSI NodePublishVolume 호출에서 VolumeContext에 토큰을 전달합니다. CSI 드라이버는 다음 VolumeContext를 구문 분석하고 검증해야 합니다. "csi.storage.k8s.io/serviceAccount.tokens": { "<audience>": { "token": <token>, "expirationTimestamp": <expiration timestamp in RFC3339>, }, … } 참고: 각 TokenRequest의 Audience는 달라야 하며 대부분의 토큰은 빈 문자열입니다. 만료 후 새 토큰을 수신하려면 RequiresRepublish를 사용하여 NodePublishVolume을 주기적으로 트리거할 수 있습니다. |
|
| TokenRequest에는 서비스 계정 토큰의 매개변수가 포함되어 있습니다. |
|
| volumeLifecycleModes는 이 CSI 볼륨 드라이버가 지원하는 볼륨 유형을 정의합니다. 목록이 비어 있는 경우 기본값은 "Persistent"입니다. 이는 CSI 사양에 의해 정의되고 일반적인 PV/PVC 메커니즘을 통해 Kubernetes에 구현되는 사용량입니다. 다른 모드는 "임시"입니다. 이 모드에서 볼륨은 CSIVolumeSource를 사용하여 Pod 사양 내부에서 인라인으로 정의되고 해당 Pod의 라이프사이클과 연결되어 있습니다. 드라이버는 이러한 볼륨에 대한 NodePublishVolume 호출만 받기 때문에 이를 알고 있어야 합니다. 이 모드 구현에 대한 자세한 내용은 https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html 드라이버가 이러한 모드 중 하나 이상을 지원할 수 있으며 나중에 더 많은 모드가 추가될 수 있습니다. 이 필드는 베타입니다. 이 필드는 변경할 수 없습니다. |
2.1.2. .spec.tokenRequests
- 설명
TokenRequests는 CSI 드라이버에 필요한 인증을 수행하기 위해 볼륨을 마운트하는 Pod의 서비스 계정 토큰이 필요함을 나타냅니다. kubelet은 CSI NodePublishVolume 호출에서 VolumeContext에 토큰을 전달합니다. CSI 드라이버는 다음 VolumeContext를 구문 분석하고 검증해야 합니다. "csi.storage.k8s.io/serviceAccount.tokens": { "<audience>": { "token": <token>, "expirationTimestamp": <expiration timestamp in RFC3339>, }, … }
참고: 각 TokenRequest의 Audience는 달라야 하며 대부분의 토큰은 빈 문자열입니다. 만료 후 새 토큰을 수신하려면 RequiresRepublish를 사용하여 NodePublishVolume을 주기적으로 트리거할 수 있습니다.
- 유형
-
array
2.1.3. .spec.tokenRequests[]
- 설명
- TokenRequest에는 서비스 계정 토큰의 매개변수가 포함되어 있습니다.
- 유형
-
object
- 필수 항목
-
대상
-
속성 | 유형 | 설명 |
---|---|---|
|
| audience는 "TokenRequestSpec"의 토큰 대상입니다. 기본적으로 kube apiserver의 대상입니다. |
|
| ExpirationSeconds는 "TokenRequestSpec"의 토큰 유효 기간입니다. "TokenRequestSpec"의 기본값인 "ExpirationSeconds"가 동일합니다. |