27.12.2. FlexVolume 드라이버


FlexVolume 드라이버는 마스터와 노드 모두 클러스터의 모든 머신에 있는 잘 정의된 디렉터리에 있는 실행 파일입니다. flexVolume 을 소스로 사용하여 a PersistentVolume 에서 표시하는 볼륨을 연결, 분리, 마운트 또는 마운트해야 할 때마다 OpenShift Container Platform은 FlexVolume 드라이버를 호출합니다.

드라이버의 첫 번째 명령줄 인수는 항상 작업 이름입니다. 다른 매개 변수는 각 작업에 따라 다릅니다. 대부분의 작업에서는 JSON(JavaScript Object Notation) 문자열을 매개변수로 사용합니다. 이 매개변수는 전체 JSON 문자열이며 JSON 데이터가 있는 파일 이름은 아닙니다.

FlexVolume 드라이버에는 다음이 포함됩니다.

  • 모든 flexVolume.options.
  • fsTypereadwrite와 같은 kubernetes.io/ 접두사가 붙은 flexVolume의 일부 옵션.
  • 설정된 경우, kubernetes.io/secret/이 접두사로 사용되는 참조된 시크릿의 콘텐츠

FlexVolume 드라이버 JSON 입력 예

{
	"fooServer": "192.168.0.1:1234", 1
        "fooVolumeName": "bar",
	"kubernetes.io/fsType": "ext4", 2
	"kubernetes.io/readwrite": "ro", 3
	"kubernetes.io/secret/<key name>": "<key value>", 4
	"kubernetes.io/secret/<another key name>": "<another key value>",
}

1
flexVolume.options의 모든 옵션.
2
flexVolume.fsType의 값.
3
flexVolume.readOnly에 따른 Ro/rw.
4
flexVolume.secretRef에서 참조하는 시크릿의 모든 키 및 해당 값.

OpenShift Container Platform은 드라이버의 표준 출력에서 JSON 데이터를 예상합니다. 지정하지 않으면, 출력이 작업 결과를 설명합니다.

FlexVolume 드라이버 기본 출력

{
	"status": "<Success/Failure/Not supported>",
	"message": "<Reason for success/failure>"
}

드라이버의 종료 코드는 성공의 경우 0이고 오류의 경우 1이어야 합니다.

작업은 멱등이어야 합니다. 즉, 이미 연결된 볼륨의 첨부 또는 이미 마운트된 볼륨의 마운팅으로 인해 작업이 성공적으로 수행되어야 합니다.

FlexVolume 드라이버는 다음 두 가지 모드로 작동할 수 있습니다.

attach/detach 작업은 OpenShift Container Platform 마스터에서 노드에 볼륨을 연결하고 노드에서 볼륨을 분리하는 데 사용됩니다. 이는 노드가 어떠한 이유로도 응답하지 않을 때 유용합니다. 그런 다음 마스터는 노드의 모든 포드를 종료하고 해당 포드에서 모든 볼륨을 분리한 다음, 원래 노드에 연결할 수 없는 상태에서 애플리케이션을 다시 시작하도록 다른 노드에 볼륨을 연결할 수 있습니다.

중요

일부 스토리지 백엔드가 다른 시스템에서 볼륨의 마스터 시작 분리를 지원하는 것은 아닙니다.

27.12.2.1. 마스터 시작 attach/detach가 있는 FlexVolume 드라이버

마스터 제어 연결/분리를 지원하는 FlexVolume 드라이버는 다음 작업을 구현해야 합니다.

init

드라이버를 초기화합니다. 이는 마스터와 노드를 초기화하는 동안 호출됩니다.

  • 인수: 없음
  • 실행 위치: master, node
  • 예상 출력: 기본 JSON
getvolumename

볼륨의 고유 이름을 반환합니다. 후속 분리 호출에서 <volume-name> 으로 사용되므로 이 이름은 모든 마스터 및 노드 간에 일관성을 유지해야 합니다. <volume-name> 의 모든 / 문자는 자동으로 ~ 로 바뀝니다.

  • 인수: <json>
  • 실행 위치: master, node
  • 예상 출력: 기본 JSON + volumeName:

    {
    	"status": "Success",
    	"message": "",
    	"volumeName": "foo-volume-bar" 1
    }
    1
    스토리지 백엔드 foo 의 볼륨의 고유 이름입니다.
attach

JSON으로 표시된 볼륨을 지정된 노드에 연결합니다. 이 작업은 알려진 경우 노드의 장치 이름을 반환해야 합니다(실행 전에 스토리지 백엔드에서 할당한 경우). 장치를 알 수 없는 경우 이후 waitforattach 작업을 통해 노드에서 장치를 찾아야 합니다.

  • 인수: <json> <node-name>
  • 실행 위치: master
  • 예상 출력: 알려진 경우 기본 JSON + 장치:

    {
    	"status": "Success",
    	"message": "",
    	"device": "/dev/xvda" 1
    }
    1
    알려진 경우 노드의 장치 이름입니다.
waitforattach

볼륨이 노드에 완전히 연결되고 해당 장치가 표시될 때까지 기다립니다. 이전 연결 작업이 <device-name> 을 반환한 경우 입력 매개 변수로 제공됩니다. 그렇지 않으면 <device-name> 이 비어 있으며 작업에서 노드에서 장치를 찾아야 합니다.

  • 인수: <device-name> <json>
  • 실행 위치: 노드
  • 예상 출력: 기본 JSON + 장치

    {
    	"status": "Success",
    	"message": "",
    	"device": "/dev/xvda" 1
    }
    1
    노드의 장치 이름입니다.
분리

노드에서 지정된 볼륨을 분리합니다. <volume-name>getvolumename 작업에서 반환한 장치의 이름입니다. <volume-name> 의 모든 / 문자는 자동으로 ~ 로 바뀝니다.

  • 인수: <volume-name> <node-name>
  • 실행 위치: master
  • 예상 출력: 기본 JSON
isattached

볼륨이 노드에 연결되어 있는지 확인합니다.

  • 인수: <json> <node-name>
  • 실행 위치: master
  • 예상 출력: 기본 JSON + 연결

    {
    	"status": "Success",
    	"message": "",
    	"attached": true 1
    }
    1
    노드에 볼륨 연결 상태입니다.
mountdevice

볼륨의 장치를 디렉터리에 마운트합니다. <device-name> 은 이전 waitforattach 작업에서 반환한 장치의 이름입니다.

  • 인수: <mount-dir> <device-name> <json>
  • 실행 위치: 노드
  • 예상 출력: 기본 JSON
unmountdevice

디렉터리에서 볼륨의 장치를 마운트 해제합니다.

  • 인수: <mount-dir>
  • 실행 위치: 노드

다른 모든 작업은 {"status":를 사용하여 JSON을 반환해야 합니다: "지원되지 않음"} 코드 1 을 종료합니다.

참고

마스터 시작 연결/분리 작업은 기본적으로 활성화됩니다. 활성화하지 않으면 볼륨을 연결하거나 분리해야 하는 노드에 의해 attach/detach 작업이 시작됩니다. FlexVolume 드라이버 호출의 모든 매개변수와 구문은 두 경우 모두 동일합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.