Как настроить CSI драйвер SMB в Kubernetes?
Легко. Берем и делаем.
Терминология
Server Message Block (SMB) - сетевой протокол прикладного уровня для удалённого доступа к файлам, принтерам и другим сетевым ресурсам. Часто используется в Windows сетях.
Container Storage Interface (CSI) - стандарт для предоставления блочного и файлового хранилища рабочим нагрузкам (контейнерам) в системах оркестрации контейнеров, таких как Kubernetes. Не смотря на то, что использоваться оно может не только в Kubernetes, нас интересует только это.
Требования
Kubernetes 1.22+
Подготовка узлов кластера
- Linux узлы (Ubuntu). Тут всё просто - надо установить
cifs-utilsпакет.
sudo apt install -y cifs-utils
- Windows узлы. Нам надо собрать из исходников и установить
csi-proxy.exe. Делается это из Linux. Хотя в теории можно и под Windows, но я не шарю вgolangи уже в пижаме.
git clone https://github.com/kubernetes-csi/csi-proxy
sudo make build
После успешной сборки в папке /bin мы найдем csi-proxy.exe. Теперь надо установить его как сервис. Создаем папки c:\etc\kubernetes\logs и c:\etc\kubernetes\node\bin и копируем csi-proxy.exe в последнюю. Выполняем заклинание:
$flags = "-windows-service -log_file=\etc\kubernetes\logs\csi-proxy.log -logtostderr=false"
sc.exe create csiproxy binPath= "\etc\kubernetes\node\bin\csi-proxy.exe $flags"
sc.exe failure csiproxy reset= 0 actions= restart/10000
sc.exe start csiproxy
- Кластер готов у кстановке CSI драйверов.
Установка CSI Driver SMB
Тоже всё просто:
curl -skSL https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/deploy/install-driver.sh | bash -s master --
Проверяем что всё прошло успешно.
PS C:\Users\v.leschenko> kubectl -n kube-system get pod -o wide -l app=csi-smb-controller
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
csi-smb-controller-77897597b7-6vpgs 3/3 Running 0 3d3h 10.244.135.8 k8s-linux-3 <none> <none>
csi-smb-controller-77897597b7-hkv9n 3/3 Running 0 3d3h 10.244.101.15 k8s-linux-2 <none> <none>
PS C:\Users\v.leschenko> kubectl -n kube-system get pod -o wide -l app=csi-smb-node
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
csi-smb-node-b4xjw 3/3 Running 0 3d3h 192.168.99.150 k8s-linux-1 <none> <none>
csi-smb-node-bllsk 3/3 Running 0 3d3h 192.168.99.160 k8s-linux-2 <none> <none>
csi-smb-node-k9m87 3/3 Running 0 3d3h 192.168.99.161 k8s-linux-3 <none> <none>
PS C:\Users\v.leschenko> kubectl -n kube-system get pod -o wide -l app=csi-smb-node-win
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
csi-smb-node-win-9k29c 3/3 Running 0 23h 10.244.147.27 k8s-windows-3 <none> <none>
csi-smb-node-win-g64t2 3/3 Running 0 23h 10.244.159.35 k8s-windows-1 <none> <none>
csi-smb-node-win-xl8b9 3/3 Running 0 23h 10.244.26.137 k8s-windows-2 <none> <none>
Как это всё использовать?
А это уже другая история. Позже будет отдельаня статья.
Оставить комментарий могут только зарегистрированные пользователи.
Войдите на сайт или зарегистрируйтесь, чтобы оставить комментарий.