本文详述了安装配置minio DirectPV CSI storage class的步骤和截图,为安装Kasten k10做好准备。
在master20 上进行下列操作:
安装git:
apt-get install git
git --version

安装 krew:
(
set -x; cd "$(mktemp -d)" &&
OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&
KREW="krew-${OS}_${ARCH}" &&
curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&
tar zxvf "${KREW}.tar.gz" &&
./"${KREW}" install krew
)

将$HOME/.krew/bin目录添加到PATH环境变量中:
cat <<EOF>> /$HOME/.bashrc
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
EOF
source /$HOME/.bashrc
检查krew安装结果:
kubectl krew
kubectl krew version

安装directpv插件:
kubectl krew install directpv
kubectl directpv install

kubectl get pod -A -o wide

发现并添加用于卷调度的驱动器:
kubectl directpv discover
查看directp:
kubectl directpv info
查看可用的驱动器:
kubectl directpv list drives

查看storage class:
kubectl get sc

设置directpv-min-io为default storage class:
现把原来的default storage class设为false.
kubectl patch storageclass nfs-storage -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
再把directpv-min-io设置为true.
kubectl patch storageclass directpv-min-io -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

在vmware worksation针对node21新增2块1GB磁盘。



重启node21,在node21上运行下列命令,确认2块磁盘已经成功添加。
fdisk -l

在master20上运行下列命令,发现2块新增磁盘,并自动生成drives.yaml文件。
kubectl directpv discover

查看drives.yaml文件内容:
cat drives.yaml

初始化以上2个drives:
kubectl directpv init drives.yaml
加参数确认初始化:
kubectl directpv init drives.yaml --dangerous
查看初始化之后的drives:
kubectl directpv list drives

再挂载1块100GB磁盘,因为后面安装Veeam kasten k10时至少需要60GB的可用磁盘空间。
kubectl directpv init drives.yaml --dangerous
kubectl directpv list drives


创建测试PVC和Pod
vim pvc-direct.yaml
yaml文件内容如下:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: csi-pvc-2
namespace: default
spec:
storageClassName: directpv-min-io #Directpv使用的SC,directpv-min-io,在安装directpv时自动创建
accessModes:
- ReadWriteOnce #注意directpv不支持多节点写入模式
resources:
requests:
storage: 20Mi #申请PV空间大小
kubectl create -f pvc-direct.yaml

vim directpod.yaml
yaml文件内容如下:
apiVersion: v1
kind: Pod
metadata:
name: csipod-2
spec:
volumes:
- name: pvc-storage
persistentVolumeClaim:
claimName: csi-pvc-2 #指定使用刚刚创建的PVC:csi-pvc-2
containers:
- image: busybox:1.28
name: box
args: [/bin/sh, -c, while true; do echo "$(date)" >> /tmp/1.log && sleep 10; done]
resources:
requests:
cpu: 100m
volumeMounts:
- name: pvc-storage
mountPath: /tmp #PV挂载至容器里的/tmp目录
kubectl create -f directpod.yaml

kubectl get pvc

kubectl get pod -o wide

通过以上结果,可以确认测试PVC和Pod都创建成功, minio DirectPV CSI storage class 安装配置成功。