2장. CSIDriver [storage.k8s.io/v1]


설명
CSIDriver는 클러스터에 배포된 CSI(Container Storage Interface) 볼륨 드라이버에 대한 정보를 캡처합니다. Kubernetes 연결 분리 컨트롤러는 이 오브젝트를 사용하여 attach가 필요한지 여부를 확인합니다. kubelet은 이 오브젝트를 사용하여 마운트 시 Pod 정보를 전달해야 하는지 여부를 결정합니다. CSIDriver 오브젝트는 네임스페이스가 아닙니다.
유형
object
필수 항목
  • spec

2.1. 사양

속성유형설명

apiVersion

string

APIVersion은 버전이 지정된 이 오브젝트 표현의 스키마를 정의합니다. 서버는 인식된 스키마를 최신 내부 값으로 변환해야 하며, 인식되지 않는 값을 거부할 수 있습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

kind

string

kind는 이 오브젝트가 나타내는 REST 리소스에 해당하는 문자열 값입니다. 서버는 클라이언트에서 요청을 제출한 끝점에서 이를 유추할 수 있습니다. CamelCase로 업데이트할 수 없습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

메타데이터

ObjectMeta

표준 오브젝트 metadata. metadata.Name은 이 오브젝트가 참조하는 CSI 드라이버의 이름을 나타냅니다. 해당 드라이버의 CSI GetPluginName() 호출에서 반환한 이름과 같아야 합니다. 드라이버 이름은 63자 이상이어야 하며, 시작 후 대시(-), 점(.) 및 영숫자 사이의 영숫자([a-z0-9A-Z])로 끝나야 합니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

spec

object

CSIDriverSpec은 CSIDriver의 사양입니다.

2.1.1. .spec

설명
CSIDriverSpec은 CSIDriver의 사양입니다.
유형
object
속성유형설명

attachRequired

boolean

attachRequired는 이 CSI 볼륨 드라이버에 연결 작업이 필요함( CSI ControllerPublishVolume() 메서드를 구현함) 및 Kubernetes 연결 분리 컨트롤러에서 볼륨 연결 상태를 확인하는 attach 볼륨 인터페이스를 호출하고 볼륨이 마운트되기 전에 볼륨이 연결될 때까지 대기해야 함을 나타냅니다. CSI 외부 연결자는 CSI 볼륨 드라이버와 조정하고 연결 작업이 완료되면 볼륨 연결 상태를 업데이트합니다. CSIDriverRegistry 기능 게이트가 활성화되어 있고 값이 false로 지정되면 연결 작업을 건너뜁니다. 그렇지 않으면 연결 작업이 호출됩니다.

이 필드는 변경할 수 없습니다.

fsGroupPolicy

string

fsGroupPolicy는 기본 볼륨이 마운트되기 전에 볼륨의 소유권 및 권한 변경을 지원하는지 여부를 정의합니다. 자세한 내용은 특정 FSGroupPolicy 값을 참조하십시오.

이 필드는 Kubernetes < 1.29에서 변경할 수 없으며 이제 변경할 수 있습니다.

기본값은 ReadWriteOnceWithFSType으로, 각 볼륨을 검사하여 Kubernetes가 볼륨의 소유권 및 권한을 수정해야 하는지 결정합니다. 기본 정책에서는 fstype이 정의되고 볼륨의 액세스 모드에 ReadWriteOnce가 포함된 경우에만 정의된 fsGroup이 적용됩니다.

podInfoOnMount

boolean

podInfoOnMount는 이 CSI 볼륨 드라이버에 마운트 작업 중 podName, podUID 등과 같은 추가 Pod 정보가 필요함을 나타냅니다. false로 설정하면 마운트 시 Pod 정보가 전달되지 않습니다. 기본값은 false입니다.

CSI 드라이버는 드라이버 배포의 일부로 podInfoOnMount를 지정합니다. true인 경우 Kubelet은 CSI NodePublishVolume() 호출에서 VolumeContext로 Pod 정보를 전달합니다. CSI 드라이버는 VolumeContext로 전달된 정보를 구문 분석하고 검증합니다.

podInfoOnMount가 true로 설정된 경우 다음 VolumeContext가 전달됩니다. 이 목록이 증가할 수 있지만 접두사가 사용됩니다. "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는 이 필드를 지원하지 않으므로 이러한 클러스터에 배포되는 경우 드라이버는 하나의 모드만 지원할 수 있으며 배포는 예를 들어 드라이버의 명령행 매개 변수를 통해 어떤 모드인지 결정합니다.

이 필드는 Kubernetes < 1.29에서 변경할 수 없으며 이제 변경할 수 있습니다.

requiresRepublish

boolean

requiresRepublish는 마운트된 볼륨에서 가능한 변경 사항을 반영하기 위해 CSI 드라이버에서 NodePublishVolume 이 주기적으로 호출되도록 하는 것을 나타냅니다. 이 필드의 기본값은 false입니다.

참고: 초기 NodePublishVolume 호출이 성공한 후 NodePublishVolume에 대한 후속 호출은 볼륨의 콘텐츠만 업데이트해야 합니다. 실행 중인 컨테이너에서 새 마운트 지점을 볼 수 없습니다.

seLinuxMount

boolean

seLinuxMount는 CSI 드라이버가 "-o context" 마운트 옵션을 지원하는지 여부를 지정합니다.

"true"인 경우 CSI 드라이버는 다른 -o 컨텍스트 옵션을 사용하여 이 CSI 드라이버에서 제공하는 모든 볼륨을 별도로 마운트할 수 있는지 확인해야 합니다. 이는 블록 장치에서 또는 독립 공유 볼륨으로 볼륨을 파일 시스템으로 제공하는 스토리지 백엔드에 일반적으로 사용됩니다. Kubernetes는 SELinux 컨텍스트를 명시적으로 설정한 Pod에 사용되는 ReadWriteOncePod 볼륨을 마운트할 때 "-o context=xyz" 마운트 옵션을 사용하여 NodeStage / NodePublish를 호출합니다. 나중에 다른 볼륨 AccessModes로 확장될 수 있습니다. 어떠한 경우에도 Kubernetes는 볼륨이 단일 SELinux 컨텍스트로만 마운트되도록 합니다.

"false"인 경우 Kubernetes는 특수 SELinux 마운트 옵션을 드라이버에 전달하지 않습니다. 이는 더 큰 공유 파일 시스템의 하위 디렉터리를 나타내는 볼륨에 일반적으로 사용됩니다.

기본값은 "false"입니다.

storageCapacity

boolean

StorageCapacity는 CSI 볼륨 드라이버가 Pod 예약이 true로 설정된 경우 용량 정보를 사용하여 CSIStorageCapacity 오브젝트를 생성하여 드라이버 배포에서 보고할 스토리지 용량을 고려하려고 함을 나타냅니다.

드라이버를 배포할 때 검사를 즉시 활성화할 수 있습니다. 이 경우 최신 바인딩으로 새 볼륨을 프로비저닝하면 드라이버 배포가 적합한 CSIStorageCapacity 오브젝트가 게시될 때까지 일시 중지됩니다.

또는 설정되지 않은 필드 또는 false를 사용하여 드라이버를 배포할 수 있으며 나중에 스토리지 용량 정보가 게시되면 전환될 수 있습니다.

이 필드는 Kubernetes Cryostat 1.22에서 변경할 수 없으며 이제 변경할 수 있습니다.

tokenRequests

array

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을 주기적으로 트리거할 수 있습니다.

tokenRequests[]

object

TokenRequest에는 서비스 계정 토큰의 매개변수가 포함되어 있습니다.

volumeLifecycleModes

배열(문자열)

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
필수 항목
  • 대상
속성유형설명

대상

string

audience는 "TokenRequestSpec"의 토큰 대상입니다. 기본적으로 kube apiserver의 대상입니다.

expirationSeconds

integer

expirationSeconds는 "TokenRequestSpec"의 토큰 유효 기간입니다. "TokenRequestSpec"의 기본값인 "ExpirationSeconds"가 동일합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.