# 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
必须安装。必须启用挂载传播。
-
bash
,curl
,findmnt
,grep
,awk
,blkid
,lsblk
必须安装。一般都会自带这些命令但是,还是希望能够测试一下:
#这里我们推荐 --version
bash --version
curl --version
findmnt --version
grep --version
awk --version
blkid --version
lsblk --version
warning 没有的话需要安装!
-
安装
open-iscsi
# 安装 iscsi
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.5.1/deploy/prerequisite/longhorn-iscsi-installation.yaml
官方参考链接
-
安装
nfs-clinet
# 安装 nfs-clinet
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.5.1/deploy/prerequisite/longhorn-nfs-installation.yaml
官方参考链接
-
查看
k3s
版本这里其实可以运行
k3s --version
# 环境检验
info 请注意, jq
在运行环境检查脚本之前可能需要在本地安装( apt-get install jq
)。
这里检测环境和 K8s 用同一个脚本。
curl -sSfL https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/scripts/environment_check.sh | bash |
# 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 |
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+端口
访问了
# kubectl 卸载 longhorn
-
创建卸载作业以清除系统中的 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
-
删除剩余组件:
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 部署