# K3s - 使用 kubectl 环境安装 longhorn

# 前置环境安装

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

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

  • 与 Kubernetes 兼容的容器运行时(Docker v1.13+、containerd v1.3.7+ 等)

  • Kubernetes >= v1.21 (k3s 参考 v1.21)

  • open-iscsi 已安装,并且 iscsid 守护程序正在所有节点上运行。这是必要的,因为 Longhorn 依赖 iscsiadm 主机向 Kubernetes 提供持久卷。如需安装帮助 open-iscsi ,请参阅本节。

  • RWX 支持要求每个节点安装 NFSv4 客户端。

    • 有关安装 NFSv4 客户端的信息,请参阅本节。
  • 主机文件系统支持 file extents 存储数据的功能。目前我们支持:

    • 外部 4

    • XFS

  • bash , curl , findmnt , grep , awk , blkid , lsblk 必须安装。

  • 必须启用挂载传播。

  1. bash , curl , findmnt , grep , awk , blkid , lsblk 必须安装。

    一般都会自带这些命令但是,还是希望能够测试一下:

    #这里我们推荐 --version
    bash --version
    curl --version
    findmnt --version
    grep --version
    awk --version
    blkid --version
    lsblk --version

    warning 没有的话需要安装!

  2. 安装 open-iscsi

    # 安装 iscsi
    kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.5.1/deploy/prerequisite/longhorn-iscsi-installation.yaml

    官方参考链接

  3. 安装 nfs-clinet

    # 安装 nfs-clinet
    kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.5.1/deploy/prerequisite/longhorn-nfs-installation.yaml

    官方参考链接

  4. 查看 k3s 版本

    这里其实可以运行

    k3s --version

    image-20240115204915611

# 环境检验

info 请注意, jq 在运行环境检查脚本之前可能需要在本地安装( apt-get install jq )。

这里检测环境和 K8s 用同一个脚本。

curl -sSfL https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/scripts/environment_check.sh | bash

image-20240115204334813

# longhorn 安装

# 安装存储服务
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.5.1/deploy/longhorn.yaml
# 监控安装进度(CTRL+C 退出)
kubectl -n longhorn-system get pods --watch

image-20240115204915611

longhorn服务端口暴露

这里可以查看安装的服务:

root@node3:~# kubectl -n longhorn-system get svc
NAME                          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
longhorn-backend              ClusterIP   10.43.222.120   <none>        9500/TCP       23h
longhorn-conversion-webhook   ClusterIP   10.43.103.147   <none>        9501/TCP       23h
longhorn-admission-webhook    ClusterIP   10.43.141.77    <none>        9502/TCP       23h
longhorn-recovery-backend     ClusterIP   10.43.123.234   <none>        9503/TCP       23h
longhorn-engine-manager       ClusterIP   None            <none>        <none>         23h
longhorn-replica-manager      ClusterIP   None            <none>        <none>         23h
longhorn-frontend             NodePort    10.43.45.185    <none>        80:31245/TCP   23h

info 前端就是 longhorn-frontend 所以这里需要暴露这个服务

kubectl patch svc longhorn-frontend --namespace longhorn-system -p '{"spec":{"type": "NodePort"}}'

可以 ip+端口 访问了

image-20240115205641092

# kubectl 卸载 longhorn

  1. 创建卸载作业以清除系统中的 CRD 并等待成功:

    kubectl create -f https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/uninstall/uninstall.yaml
    kubectl get job/longhorn-uninstall -n longhorn-system -w

    输出示例:

    $ kubectl create -f https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/uninstall/uninstall.yaml
    serviceaccount/longhorn-uninstall-service-account created
    clusterrole.rbac.authorization.k8s.io/longhorn-uninstall-role created
    clusterrolebinding.rbac.authorization.k8s.io/longhorn-uninstall-bind created
    job.batch/longhorn-uninstall created
    $ kubectl get job/longhorn-uninstall -n longhorn-system -w
    NAME                 COMPLETIONS   DURATION   AGE
    longhorn-uninstall   0/1           3s         3s
    longhorn-uninstall   1/1           20s        20s
  2. 删除剩余组件:

    kubectl delete -f https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/deploy/longhorn.yaml
    kubectl delete -f https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/uninstall/uninstall.yaml

# 参考链接:

[1] longhorn 安装前提条件 -- 官方参考链接

[2] kubectl 命令安装 longhron-- 官方

[3] k3s 安装 longhorn 云原生存储

[4] Longhorn 部署