Longhorn部署

安装过程参照官方部署文档
https://longhorn.io/docs/1.3.1/deploy/install/

安装要求

安装Longhorn的Kubernetes集群中的每个节点都必须满足以下要求:

  • 与Kubernetes兼容的容器运行时(Docker v1.13+、containerd v1.3.7+ 等)
  • Kubernetes v1.18+
  • 安装open-iscsi,并且iscsid守护程序正在所有节点上运行。这是必须的,因为Longhorn依赖主机上的iscsiadm为Kubernetes提供持久卷。
  • RWX support要求每个节点都安装NFSv4 client。
  • 主机文件系统支持file extents功能来存储数据。目前支持:ext4,XFS
  • curl, findmnt, grep, awk, blkid, lsblk 必须安装。
  • 启用Mount propagation。
  • Longhorn workloads必须能够以root身份运行才能正确部署和操作 Longhorn。

RKE集群需要修改kubelet配置,详情见https://longhorn.io/docs/1.3.1/advanced-resources/os-distro-specific/csi-on-rke-and-coreos/

安装过程

部署Longhorn有多种方式:

  • 在rancher的应用商店中安装
  • 使用kubectl
  • 使用helm
  • 离线

我这里采用的是在rancher上安装。

安装环境

master有3台。node有4台,master1-3,和node3禁止调度。即node1,node2,node4。

file

file

安装open-iscsi,启用iscsid守护程序

在node1,2,4上安装。

yum install iscsi-initiator-utils
systemctl enable --now iscsid

file

添加磁盘并挂载

在node1,2,4上新增磁盘,挂载/longhorn目录(自定义),这里是为了之后修改Longhorn的默认存储路径(/var/lib/longhorn)。如果磁盘空间足够也可以不加。

lsblk
fdisk /dev/sdb
mkfs.xfs /dev/sdb1
mkdir /longhorn
mount /dev/sdb1 /longhorn/
echo "/dev/sdb1 /longhorn xfs defaults 0 0" >> /etc/fstab

file

rancher上添加项目Longhorn

file

安装Longhorn

应用商店搜索Longhorn,使用最新的1.2.4模板
file

点击自定义参数,修改默认存储路径,将/var/lib/longhorn/改为/longhorn
file

修改当节点down时处理pod的策略,选择delete-both-statefulset-and-deployment-pod,强制删除pod释放pv,可以防止出现pod迁移卡死的情况
file

删除策略使用retain,Longhorn UI Service使用NodePort,psp选择否
file

查看部署情况

file

查看storageclass

file

访问Longhorn-ui

file

下面为可选

选择Node,修改默认存储路径,如果上面没有修改默认存储路径,这里也可以修改。
file

将默认指定的存储路径Scheduling修改为Disable并删除,点击Add Disk创建新磁盘,并将自定义的路径填写上去,保存
file

查看node上的/longhorn目录

file

创建测试pvc

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: longhorn-volv-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: longhorn
  resources:
    requests:
      storage: 2Gi
---
apiVersion: v1
kind: Pod
metadata:
  name: volume-test
spec:
  restartPolicy: Always
  containers:
  - name: volume-test
    image: nginx:stable-alpine
    imagePullPolicy: IfNotPresent
    livenessProbe:
      exec:
        command:
          - ls
          - /data/lost+found
      initialDelaySeconds: 5
      periodSeconds: 5
    volumeMounts:
    - name: volv
      mountPath: /data
    ports:
    - containerPort: 80
  volumes:
  - name: volv
    persistentVolumeClaim:
      claimName: longhorn-volv-pvc

kubectl create -f https://raw.githubusercontent.com/longhorn/longhorn/v1.3.1/examples/pod_with_pvc.yaml -n prod
kubectl get po,pvc -n prod
kubectl get pv | grep prod

file

pod处于ContainerCreating状态,报错目录无法挂载
file

这是因为后面在dashboard中修改的默认存储路径,但是engine中还是使用的/var/lib/container。修改engine-image-ei,longhorn-manager,的yaml文件,将hostPath中的/var/lib/longhorn修改为/longhorn,由于上面修改了默认存储路径,而这里的longhorn-engine挂载的还是原来的路径,导致Longhorn找不到longhorn-engine的二进制文件,也就无法进行挂载。如果在最初安装时就修改了默认存储路径,就不会有这个报错信息。

file

file

file

pod重新生成后,目录正常挂载,pod也恢复正常
file

查看node的Longhorn目录
file

注意

如果后面部署yaml时应该还有这个报错出现,可以把/longhorn中的longhorn二进制文件拷贝到/var/lib/longhorn对应的目录中。
file

这个instance-manager-e/instance-manager-r,这些pod的yaml不能直接修改,这些pod中的engine二进制文件还是使用的/var/lib/longhorn,导致目录无法挂载。

或者rancher中升级Longhorn,修改默认存储路径重新部署,最好还是安装时就选择,省下后面一堆事。

如果使用了替代路径,软链接是不管用的。https://longhorn.io/docs/1.3.1/volumes-and-nodes/multidisk/#add-a-disk
file

kubectl安装

kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.3.1/deploy/longhorn.yaml
kubectl get pods -n longhorn-system --watch
kubectl -n longhorn-system get pod

helm安装

helm repo add longhorn https://charts.longhorn.io
helm repo update
helm install longhorn/longhorn –name longhorn –namespace longhorn-system(helm2)
helm install longhorn longhorn/longhorn –namespace longhorn-system –create-namespace(helm3)
helm -n longhorn-system ls
kubectl -n longhorn-system get pod

离线部署

在具有网络环境的机器上下载 iscsi 及依赖程序包
repotrack iscsi-initiator-utils
压缩为tar包
tar zcvf iscsi-rpms.tar.gz iscsi/
拷贝至Longhorn所有工作节点主机上并解压
tar -zxvf iscsi-rpms.tar.gz
安装程序
rpm -ivh iscsi/*.rpm --nodeps --force

然后在rancher中安装即可。

0 0 投票数
文章评分
订阅评论
提醒
guest

0 评论
内联反馈
查看所有评论

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部
0
希望看到您的想法,请您发表评论x