26.6. 원시 블록 장치 구성
로컬 볼륨 프로비저너를 사용하여 원시 블록 장치를 정적으로 프로비저닝할 수 있습니다. 이 기능은 기본적으로 비활성화되어 있으며 추가 구성이 필요합니다.
원시 블록 장치를 구성하려면 다음을 수행합니다.
모든 마스터에서
BlockVolume
기능 게이트를 활성화합니다. 모든 마스터(기본적으로/etc/origin/master/master-config.yaml )에서 마스터 구성 파일을 편집하거나 생성한 후apiServerArguments 및
섹션에controllerArguments
BlockVolume=true
를 추가합니다.apiServerArguments: feature-gates: - BlockVolume=true ... controllerArguments: feature-gates: - BlockVolume=true ...
노드 구성 ConfigMap을 편집하여 모든 노드에서 기능 게이트를 활성화합니다.
$ oc edit configmap node-config-compute --namespace openshift-node $ oc edit configmap node-config-master --namespace openshift-node $ oc edit configmap node-config-infra --namespace openshift-node
예를 들면 모든 ConfigMap에
kubeletArguments
의 기능 게이트 배열에BlockVolume=true
가 포함되어 있는지 확인합니다.노드 configmap feature-gates 설정
kubeletArguments: feature-gates: - RotateKubeletClientCertificate=true,RotateKubeletServerCertificate=true,BlockVolume=true
- 마스터를 다시 시작합니다. 구성이 변경되면 노드가 자동으로 다시 시작됩니다. 이 작업은 몇 분 정도 걸릴 수 있습니다.
26.6.1. 원시 블록 장치 준비
프로비저너를 시작하기 전에 Pod에서 사용할 수 있는 모든 원시 블록 장치를 /mnt/local-storage/<storage 클래스> 디렉터리 구조에 연결합니다. 예를 들어 /dev/dm-36 디렉토리를 사용할 수 있도록 하려면 다음을 수행합니다.
/mnt/local-storage 에 장치 스토리지 클래스의 디렉토리를 생성합니다.
$ mkdir -p /mnt/local-storage/block-devices
장치를 가리키는 심볼릭 링크를 만듭니다.
$ ln -s /dev/dm-36 dm-uuid-LVM-1234
참고가능한 이름 충돌을 방지하려면 심볼릭 링크의 이름과 /dev/disk/ by-uuid 또는 /dev/disk/by- id 디렉토리의 링크와 동일한 이름을 사용합니다.
프로비저너를 구성하는 ConfigMap을 생성하거나 업데이트합니다.
apiVersion: v1 kind: ConfigMap metadata: name: local-volume-config data: storageClassMap: | block-devices: 1 hostDir: /mnt/local-storage/block-devices 2 mountDir: /mnt/local-storage/block-devices 3
장치의
SELinux
레이블과 /mnt/local-storage/ 를 변경합니다.$ chcon -R unconfined_u:object_r:svirt_sandbox_file_t:s0 /mnt/local-storage/ $ chcon unconfined_u:object_r:svirt_sandbox_file_t:s0 /dev/dm-36
원시 블록 장치에 대한 스토리지 클래스를 생성합니다.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: block-devices provisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer
프로비저너에서 블록 장치 /dev/dm-36 을 사용할 준비가 되었으며 PV로 프로비저닝되었습니다.