BeeGFS CSI 드라이버 배포
Kubernetes 환경에서 BeeGFS CSI 드라이버를 배포하기 위한 지침입니다.
에어갭 배치
Air-Gapped(오프라인) 배포를 수행하려면 Kubernetes YAML 구성 파일과 필요한 컨테이너 이미지를 모두 인터넷 접속이 가능한 시스템에 미리 다운로드해야 합니다. 그런 다음 이러한 파일을 CSI 드라이버가 설치될 대상 노드로 전송해야 합니다.
드라이버 및 이미지 검색
공기 간격이 있는 환경에서 BeeGFS CSI 드라이버를 배포하려면 다음 단계를 수행하세요.
-
인터넷 접속이 가능한 시스템에 BeeGFS CSI 드라이버 GitHub 저장소를 복제합니다.
git clone https://github.com/ThinkParQ/beegfs-csi-driver.git -
아래 나열된 이미지에서 최신 이미지 버전 태그를 수집하여 기록합니다. 각 이미지의 공식 레지스트리나 GitHub 릴리스를 방문하여 최신 버전 태그를 확인할 수 있습니다.
이미지 이름 레지스트리 URL/참조 beegfs-csi-드라이버
https://github.com/ThinkParQ/beegfs-csi-driver/pkgs/container/beegfs-csi-driver
csi-프로비저너
https://github.com/kubernetes-csi/external-provisioner/releases
csi-리사이저
라이브니스 프로브
csi-노드-드라이버-등록자
https://github.com/kubernetes-csi/node-driver-registrar/releases
-
containerd를 사용하여 각 이미지를 시스템으로 가져오고 다음을 교체해야 합니다.
<latest-tag>각 이미지에 대한 실제 최신 태그 포함:ctr -n k8s.io images pull ghcr.io/thinkparq/beegfs-csi-driver:<latest-tag> ctr -n k8s.io images pull registry.k8s.io/sig-storage/csi-provisioner:<latest-tag> ctr -n k8s.io images pull registry.k8s.io/sig-storage/csi-resizer:<latest-tag> ctr -n k8s.io images pull registry.k8s.io/sig-storage/livenessprobe:<latest-tag> ctr -n k8s.io images pull registry.k8s.io/sig-storage/csi-node-driver-registrar:<latest-tag> -
가져온 각 이미지는 별도로 내보내야 합니다.
.tar파일. 이 작업은 이미지를 Air-Gapped 환경으로 전송하고 대상 시스템의 containerd로 가져오는 데 필요합니다. 예를 들어:ctr -n k8s.io images export beegfs-csi-driver_<latest-tag>.tar ghcr.io/thinkparq/beegfs-csi-driver:<latest-tag> ctr -n k8s.io images export csi-provisioner_<latest-tag>.tar registry.k8s.io/sig-storage/csi-provisioner:<latest-tag> ctr -n k8s.io images export csi-resizer_<latest-tag>.tar registry.k8s.io/sig-storage/csi-resizer:<latest-tag> ctr -n k8s.io images export livenessprobe_<latest-tag>.tar registry.k8s.io/sig-storage/livenessprobe:<latest-tag> ctr -n k8s.io images export csi-node-driver-registrar_<latest-tag>.tar registry.k8s.io/sig-storage/csi-node-driver-registrar:<latest-tag>필요한 모든 이미지에 대해 이 내보내기 명령을 반복하고, 이미지 이름과 태그를 적절하게 바꿉니다.
-
BeeGFS CSI 드라이버 저장소와 모든 내보내기를 복사합니다.
.tar선호하는 방법을 사용하여 Air-Gapped 환경으로 파일을 전송합니다. 이 설정의 경우 다음을 저장하세요.beegfs-csi-driver파일을/home/<User>/beegfs-csi-driver그리고 이미지에/home/<User>/beegfs-csi-images.
필요한 이미지 가져오기
-
로 이동합니다
/home/<User>/beegfs-csi-images이미지가 저장된 디렉토리를 만들고 containerd를 사용하여 각 이미지를 가져옵니다. 예를 들어:ctr -n k8s.io images import beegfs-csi-driver_<latest-tag>.tar ctr -n k8s.io images import csi-provisioner_<latest-tag>.tar ctr -n k8s.io images import csi-resizer_<latest-tag>.tar ctr -n k8s.io images import livenessprobe_<latest-tag>.tar ctr -n k8s.io images import csi-node-driver-registrar_<latest-tag>.tar -
다음 명령을 실행하여 이미지가 containerd에 로드되었는지 확인하세요.
crictl images
CSI 드라이버 오버레이 구성 및 배포
-
로 이동합니다
/home/<User>/beegfs-csi-driver예배 규칙서. -
기본적으로 오버레이 구성은 온라인 배포를 위해 설계되었습니다. 에어갭 배치를 수행하려면 오버레이 구성을 수정해야 합니다. "기본" 오버레이 폴더를 새 오버레이로 복사합니다.
beegfs-overlay:cp -r deploy/k8s/overlays/default deploy/k8s/overlays/beegfs-overlay -
편집하다
deploy/k8s/overlays/beegfs-overlay/kustomization.yaml파일. 주석을 해제하고 업데이트하세요images다운로드한 정확한 태그가 포함된 섹션:- name: ghcr.io/thinkparq/beegfs-csi-driver newTag: <latest-tag> # digest: sha256:eb7ff01259e6770d0103f219e11b7ff334c9d9102a29ea0af95a3c0d7aec1ae3 - name: k8s.gcr.io/sig-storage/csi-provisioner newName: registry.k8s.io/sig-storage/csi-provisioner newTag: <latest-tag> - name: k8s.gcr.io/sig-storage/csi-resizer newName: registry.k8s.io/sig-storage/csi-resizer newTag: <latest-tag> - name: k8s.gcr.io/sig-storage/livenessprobe newName: registry.k8s.io/sig-storage/livenessprobe newTag: <latest-tag> - name: k8s.gcr.io/sig-storage/csi-node-driver-registrar newName: registry.k8s.io/sig-storage/csi-node-driver-registrar newTag: <latest-tag> -
이미지 풀 정책을 변경하여 Kubernetes가 로컬로 로드된 이미지를 사용하도록 설정합니다.
Always에게Never. 라는 이름의 파일을 만듭니다.image-pull-policy.yaml당신의deploy/k8s/overlays/beegfs-overlay/다음 내용이 있는 디렉토리:# Patch for controller kind: StatefulSet apiVersion: apps/v1 metadata: name: csi-beegfs-controller spec: template: spec: containers: - name: beegfs imagePullPolicy: Never - name: csi-provisioner imagePullPolicy: Never - name: csi-resizer imagePullPolicy: Never # Patch for node kind: DaemonSet apiVersion: apps/v1 metadata: name: csi-beegfs-node spec: template: spec: containers: - name: beegfs imagePullPolicy: Never - name: node-driver-registrar imagePullPolicy: Never - name: liveness-probe imagePullPolicy: Never환경 imagePullPolicy: NeverKubernetes가 containerd에 로드된 이미지를 사용하고 외부 레지스트리에서 가져오려고 시도하지 않도록 보장합니다. -
열려 있는
deploy/k8s/overlays/beegfs-overlay/kustomization.yaml다음 섹션을 추가합니다.patchesStrategicMerge: - image-pull-policy.yaml그만큼 patchesStrategicMerge섹션을 사용하면 사용자 정의 패치(예: 변경)를 적용할 수 있습니다.imagePullPolicy기본 Kubernetes 매니페스트 위에. 경로를 확인하세요image-pull-policy.yaml당신의 것과 관련하여 정확합니다kustomization.yaml파일.
BeeGFS CSI 드라이버 설치
-
사용자 정의 오버레이를 사용하여 BeeGFS CSI 드라이버를 설치하세요. 이 단계에서는 로컬로 가져온 이미지 사용 및 업데이트된 이미지 풀 정책을 포함한 모든 구성 변경 사항이 적용됩니다.
복제된 BeeGFS CSI 드라이버 저장소의 루트에서 다음을 실행합니다.
kubectl apply -k deploy/k8s/overlays/beegfs-overlay -
로 진행하세요예제 애플리케이션 배포 BeeGFS CSI 드라이버 설정을 배포하고 검증하기 위한 섹션입니다.
온라인 배포
Kubernetes 노드가 인터넷에 접속할 수 있는 경우 컨테이너 이미지를 수동으로 다운로드하거나 전송하지 않고도 BeeGFS CSI 드라이버를 직접 배포할 수 있습니다. 포드가 배포되면 자동으로 Image-Hub에서 이미지를 다운로드하고 필요한 서비스를 시작합니다.
드라이버 저장소 검색
-
BeeGFS CSI 드라이버 GitHub 저장소를 로컬 시스템에 복제합니다.
git clone https://github.com/ThinkParQ/beegfs-csi-driver.git
드라이버 구성
-
복제된 저장소 디렉토리로 이동하고 필요한 경우 기본 오버레이 디렉토리의 구성 파일을 업데이트합니다.
ls deploy/k8s/overlays/default/다음과 같은 파일이 표시됩니다.
csi-beegfs-config.yaml csi-beegfs-connauth.yaml kustomization.yaml namespace.yaml patches/
-
BeeGFS 클라이언트 구성 파일의 이름이 지정되지 않은 경우
/etc/beegfs/beegfs-client.conf, 구성 파일을 가리키는 정확한 이름으로 심볼릭 링크를 만듭니다.ln -s /path/to/your/beegfs-client.conf /etc/beegfs/beegfs-client.confCSI 드라이버에는 구성 파일이 다음 위치에 있어야 합니다. /etc/beegfs/beegfs-client.conf그리고 그 정확한 이름을 가지게 되었습니다. -
저장 클래스, 비밀 또는 연결 인증과 같은 설정을 사용자 정의해야 하는 경우 관련 파일을 편집하세요.
deploy/k8s/overlays/default/배치 전.
BeeGFS CSI 드라이버 설치
-
다음을 사용하여 기본 오버레이를 설치하세요.
kubectl. 이렇게 하면 해당 레지스트리에서 필요한 이미지를 자동으로 가져와서 모든 필수 Kubernetes 리소스가 생성됩니다.kubectl apply -k deploy/k8s/overlays/default -
리소스가 생성되었고 포드가 실행 중인지 확인하세요.
kubectl get pods -n beegfs-csi -
출력 예:
namespace/beegfs-csi created serviceaccount/csi-beegfs-controller-sa created serviceaccount/csi-beegfs-node-sa created role.rbac.authorization.k8s.io/csi-beegfs-privileged-scc-role created clusterrole.rbac.authorization.k8s.io/csi-beegfs-provisioner-role created rolebinding.rbac.authorization.k8s.io/csi-beegfs-privileged-scc-binding created clusterrolebinding.rbac.authorization.k8s.io/csi-beegfs-provisioner-binding created configmap/csi-beegfs-config-kkc8fg68fh created secret/csi-beegfs-connauth-b8kbm2mmm2 created statefulset.apps/csi-beegfs-controller created daemonset.apps/csi-beegfs-node created csidriver.storage.k8s.io/beegfs.csi.netapp.com created
사용 kubectl apply -k오버레이(디렉토리 포함)의 경우kustomization.yaml파일). 사용kubectl apply -f일반 YAML 매니페스트 또는 매니페스트 디렉토리의 경우. -
로 진행하세요예제 애플리케이션 배포 BeeGFS CSI 드라이버 설정을 검증하는 섹션입니다.
예제 애플리케이션 배포
BeeGFS CSI 드라이버(에어갭 또는 온라인)를 설치한 후 예제 애플리케이션을 배포하여 설정을 검증할 수 있습니다. 이 예제에는 StorageClass, PersistentVolumeClaim(PVC) 및 BeeGFS CSI 드라이버를 사용하는 Pod가 포함됩니다.
배포 전:
-
BeeGFS 관리 노드의 IP 주소를 가져옵니다.
비지에프에스 7.4
beegfs-check-servers비지에프에스 8
beegfs health network예상 출력:
Management ========== mgmt [ID: 1]: reachable at 192.1.18.1:8008 (protocol: TCP)
-
관리 노드 IP를 업데이트하세요.
examples/k8s/dyn/dyn-sc.yaml. -
값을 업데이트합니다
volDirBasePath. 여러 클러스터가 동일한 BeeGFS 경로에서 볼륨을 동적으로 프로비저닝하는 것을 방지하려면 이 값을 고유한 값(예: k8s 클러스터 이름)으로 설정합니다.StorageClass 스니펫 예:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-beegfs-dyn-sc provisioner: beegfs.csi.netapp.com parameters: sysMgmtdHost: 192.1.18.1 volDirBasePath: user_id_k8s reclaimPolicy: Delete volumeBindingMode: Immediate allowVolumeExpansion: true
배포
-
예제 애플리케이션 파일을 배포합니다.
kubectl apply -f examples/k8s/dyn예상 출력:
pod/csi-beegfs-dyn-app created persistentvolumeclaim/csi-beegfs-dyn-pvc created storageclass.storage.k8s.io/csi-beegfs-dyn-sc created
-
예제 Pod와 PVC가 실행 중이고 바인딩되었는지 확인하세요.
kubectl get pod csi-beegfs-dyn-app kubectl get pvc csi-beegfs-dyn-pvc
|
|
예시 애플리케이션 배포 단계는 Air-Gapped 배포와 Online 배포 모두에서 동일합니다. 관리 노드 IP를 업데이트했는지 확인하십시오. volDirBasePath 배포하기 전에 StorageClass 매니페스트에 추가합니다.
|