iSCSI nettverksdisker
iSCSI – Server
Krav til server
Vi anbefaler Ubuntu 24.04.
Vi anbefaler en server med to disker, én OS-disk og én datadisk. Datadisken bør så settes opp med LVM.
sudo fdisk /dev/vdb
Tast: g, n, enter, enter, enter, w
Legg til disken som disk for LVM:
sudo pvcreate /dev/vdb1
Lag en volume group:
vgcreate datadisk /dev/vdb1
Du kan nå se hvor mye ledig disk du har med:
sudo vgs
Installasjon
iSCSI server er tilgjengelig via Ubuntu sine pakke-systemer. Denne installerer pakken «Linux iSCSI Target»
sudo apt update sudo apt install tgt
Sette opp ny nettverksdisk
Lag en ny disk ved å bruke LVM
sudo lvcreate -L 2G -n disk1 datadisk
Sett opp deling via iSCSI
sudo vi /etc/tgt/conf.d/iscsi.conf
Legg til følgende konfig. Her kan du sette dato, domene og disknavn.
<target iqn.2025-03.deploi.test:disk1> backing-store /dev/datadisk/disk1 initiator-address <IP> incominguser iscsi-user <brukernavn> outgoinguser iscsi-target <passord> </target>
Deretter må vi aktivere den nye konfigurasjonen. Denne kommandoen vil ikke endre på eksisterende delte systemer som kjører:
sudo tgt-admin --execute
Du kan se informasjon om de delte diskene med følgede kommando:
sudo tgt-admin -s
iSCSI – Klient
Bruke nettverksdisk på Linux
Installer iSCSI klient:
sudo apt install open-iscsi
Finn disker eksponert av serveren:
sudo iscsiadm -m discovery -t st -p <serverIP>
Legg til i:
sudo vi /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2025-03.deploi.test:disk1
Rediger instillingsfilen:
vi /etc/iscsi/nodes/iqn.2025-03.deploi.test:disk1/<mappe>/default
Endre eller legg til følgende konfigurasjon
node.session.auth.authmethod = CHAP node.session.auth.username = iscsi-user node.session.auth.password = <brukernavn> node.session.auth.username_in = iscsi-target node.session.auth.password_in = <passord> node.startup = automatic
Aktiver disk med følgende kommando
sudo iscsiadm -m node --loginall=automatic
Du kan nå se diskene med
sudo iscsiadm -m session -o show
og
lsblk
Ønsker du å sette opp filsystem på disken, kan du gjøre følgende:
sudo fdisk /dev/<disknavn>
Tast: g, n, enter, enter, enter, w
Sett så opp filsystem:
sudo mkfs.ext4 /dev/<navn>1
Du kan nå mounte disken ved å legge til følgende i /etc/fstab:
vi /etc/fstab
/dev/<disknavn>1 /mnt ext4 _netdev 0 0
Bruke nettverksdisk på Kubernetes
Lag iSCSI disk, feks disk2, og formater den som ext4.
sudo mkfs.ext4 /dev/mapper/datadisk-disk2
Initiator address må være alle nodene i clusteret som skal kunne aksessere disken. Ha én linje per node, feks:
initiator-address 192.168.10.8 initiator-address 192.168.10.9
Lag en PV ved å bruke følgende YAML.
Du kan se korrekt lun-nummer ved å kjøre
sudo tgt-admin -s
Det er mest sansynlig 1, men det sees med denne kommandoen. Du må dele samme LUN som ble formatert som ext4 over.
______________________________________
apiVersion: v1 kind: PersistentVolume metadata: name: iscsi-pv spec: capacity: storage: 2Gi accessModes: - ReadWriteOnce iscsi: targetPortal: 192.168.10.6:3260 iqn: iqn.2025-03.deploi.test:disk2 lun: 1 fsType: 'ext4' readOnly: false chapAuthDiscovery: true chapAuthSession: true secretRef: name: chap-secret --- apiVersion: v1 kind: Secret metadata: name: chap-secret type: "kubernetes.io/iscsi-chap" stringData: node.session.auth.username: iscsi-user node.session.auth.password: testuser node.session.auth.username_in: iscsi-target node.session.auth.password_in: testpass
______________________________________
Du kan nå bruke disken i en pod via følgede PVC:
______________________________________
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: test-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 2Gi volumeName: "iscsi-pv"
______________________________________
Og følgende test-pod:
______________________________________
apiVersion: v1 kind: Pod metadata: name: test-pod spec: containers: - name: web-server image: nginx volumeMounts: - name: test-disk mountPath: /usr/share/nginx/html resources: limits: cpu: 100m memory: 200Mi volumes: - name: test-disk persistentVolumeClaim: claimName: test-pvc readOnly: false
______________________________________
Feilsøking
For å feilsøke eventuelle problemer, kan det være nyttig å skjekke følgende:
Er iSCSI session på plass på noden som har podden?
sudo iscsiadm -m session -o show
Hvis ikke, er det mest sansynlig autentiseringsfeil eller at portal eller disk-navn er feil.
Hvis den er tilgjengelig, kan det være feil formattering av disk eller feil lun-nummer.
Du kan se korrekte detailjer på disk-serveren ved å kjøre:
sudo tgt-admin -s