k8s 折腾记:storageclass

起因

尝试安装 tidb,结果好像一直加载不出来存储

1
2
3
4
root@ubuntu-71:~# k get pvc -A
NAMESPACE      NAME                                         STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
tidb-cluster   pd-basic-pd-0                                Pending                                                     <unset>                 80m
tidb-cluster   tidb-dashboard-data-basic-tidb-dashboard-0   Pending                                                     <unset>                 80m

资料收集

通过阅读 官方文档,得知存储也需要自己配置。

原来 k3s 预先做好了这么多事情,感动🥹🥹。

我想的是先实现 k3s 的功能,所以尽量模仿 k3s 的组件来搭建,暂时不要引入而外的复杂性。

通过查阅 k3s 的文档,得知 k3s 用的默认存储是 local-path-provisioner

安装 local-path-provisioner

那就简单了,安装文档进行安装就行了

直接 apply 这个 manifest

1
kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.28/deploy/local-path-storage.yaml

设置为默认 storageclass

我们添加进去的 local-path 并不会立刻接管集群的 pv 创建。而是静静的呆在哪里,需要其他的 pvc 指定需要 local-path 来进行分配,lp 才会去干活。

所以说,这里我直接把 local-path 设置为默认的 storageclass,就可以接管所有的 pvc 了。

参考教程

1
kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

检查

然后再回来看,就发现 pvc 已经正常分配了

1
2
3
4
root@ubuntu-71:~# k get pvc -A
NAMESPACE      NAME                                         STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
tidb-cluster   pd-basic-pd-0                                Bound    pvc-a1aa8a68-029b-497d-aaf3-c86c9e4d5485   1Gi        RWO            local-path     <unset>                 123m
tidb-cluster   tidb-dashboard-data-basic-tidb-dashboard-0   Bound    pvc-cde91829-5ad6-404e-81e7-6db080c6327b   10Gi       RWO            local-path     <unset>                 123m

Longhorn

也简单看了一下 longhorn 的介绍,装了个玩玩。

先看 安装要求

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

使用脚本可以自动检查,然后根据脚本检查的结果安装缺少的组件就行了

我选择使用 helm 安装,非常的简单:https://longhorn.io/docs/1.6.2/deploy/install/install-with-helm/

1
2
3
helm repo add longhorn https://charts.longhorn.io
helm repo update
helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace --version 1.6.2

还可以去看 ui:https://longhorn.io/docs/1.6.2/deploy/accessing-the-ui

总结

要自己搞的东西好多啊,好像还有个 cert-manager,要配置自动给 ingress 发证书。还要自己装 metrics server,不然 hpa 用不了。(怎么这么多事情,早知道就直接用 k3s 了)