3.0 KiB
3.0 KiB
Proxmox Kubernetes PVC
разворачиваем контроллер для создания Persistent Volume Claims из кластера talos в Proxmox
детально о плагине proxmox-csi-plugin
настройка со стороны Proxmox
в общем случае:
pveum role add CSI -privs "VM.Audit VM.Config.Disk Datastore.Allocate Datastore.AllocateSpace Datastore.Audit"
для ZFS
pveum role add CSI -privs "VM.Audit VM.Allocate VM.Clone VM.Config.CPU VM.Config.Disk VM.Config.HWType VM.Config.Memory VM.Config.Options VM.Migrate VM.PowerMgmt Datastore.Allocate Datastore.AllocateSpace Datastore.Audit"
создаем пользователя
pveum user add kubernetes-csi@pve
pveum aclmod / -user kubernetes-csi@pve -role CSI
pveum user token add kubernetes-csi@pve csi -privsep 0
настройка со стороны Kubernetes
- проставляем метки на ноды кластера:
kubectl label nodes worker-1 worker-2 worker-3 topology.kubernetes.io/region=Region1
kubectl label nodes worker-1 worker-2 worker-3 topology.kubernetes.io/zone=pve2-nsk
- неймспейс для CSI плагина:
kubectl create ns csi-proxmox
kubectl label ns csi-proxmox pod-security.kubernetes.io/enforce=privileged
- готовим конфиг для CSI плагина:
cat <<EOF | kubectl -n csi-proxmox create secret generic proxmox-csi-plugin --from-file=config.yaml=/dev/stdin
clusters:
- url: https://192.168.8.10:8006/api2/json
insecure: true
token_id: "kubernetes-csi@pve!csi"
token_secret: "<token>"
region: Region1
features:
provider: default
EOF
ставим CSI плагин:
kubectl apply -f https://raw.githubusercontent.com/sergelogvinov/proxmox-csi-plugin/main/docs/deploy/proxmox-csi-plugin-release.yml
сетапим storage class
cat <<EOF | kubectl apply -f -
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
annotations:
storageclass.kubernetes.io/is-default-class: "false"
name: proxmox-csi
allowVolumeExpansion: true
parameters:
csi.storage.k8s.io/fstype: ext4
storage: local-lvm
provisioner: csi.proxmox.sinextra.dev
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
EOF
деплоим тестовый PVC
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-pvc
spec:
storageClassName: proxmox-csi
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
EOF
деплоим тестовый под
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
containers:
- name: test-container
image: nginx
volumeMounts:
- name: test-volume
mountPath: /data
volumes:
- name: test-volume
persistentVolumeClaim:
claimName: test-pvc
EOF