Kubernetes 领进门 | 安装 longhorn 持久存储
Longhorn 提供了简单、易于部署和升级的100% 开源云原生持久化块存储解决方案,大大降低了采用专有软件的成本
本教程适用于 Alpine/CentOS/Debian/Ubuntu
等内核版本大于4的操作系统,部分特别声明的步骤在其他操作系统可以忽略
1a、环境准备(所有 Alpine
节点执行)
mount --make-rshared /
# 安装依赖
apk add bash lsblk nfs-utils open-iscsi
# 设置启动参数(主服务器)
if [ -x /etc/init.d/k3s ]; then
sed -i 's#start_pre() {#start_pre() {\nmount --make-rshared /#' /etc/init.d/k3s
fi
# 设置启动参数(边缘节点)
if [ -x /etc/init.d/k3s-agent ]; then
sed -i 's#start_pre() {#start_pre() {\nmount --make-rshared /#' /etc/init.d/k3s-agent
fi
1b、环境准备(仅 CentOS/Debian/Ubuntu
主节点执行)
# 安装 iscsi
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.3.x/deploy/prerequisite/longhorn-iscsi-installation.yaml
# 安装 nfs-clinet
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.3.x/deploy/prerequisite/longhorn-nfs-installation.yaml
这两条命令将在所有节点安装
iscsi
和nfs-client
若无法自动安装,请手动在所有节点安装上述依赖包
2、安装 Longhorn
存储
# 安装存储服务
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.3.1/deploy/longhorn.yaml
# 监控安装进度(CTRL+C退出)
kubectl -n longhorn-system get pods --watch
3、配置访问域名及密码
# 访问域名
export MY_LONGHORN_HOST=longhorn.example.org
# 账号密码
export MY_AUTH_USERNAME=admin
export MY_AUTH_PASSWORD=PASSW0RD
# 生成密钥
export MY_SECRET_CODE=`echo $MY_AUTH_USERNAME:$(echo $MY_AUTH_PASSWORD | openssl passwd -stdin -apr1) | base64`
# 应用模板
cat <<EOF | kubectl apply -f -
kind: Secret
apiVersion: v1
metadata:
name: basic-auth
namespace: longhorn-system
data:
auth: $MY_SECRET_CODE
---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: longhorn-basic-auth
namespace: longhorn-system
spec:
basicAuth:
secret: basic-auth
---
kind: IngressRoute
apiVersion: traefik.containo.us/v1alpha1
metadata:
name: longhorn-dashboard
namespace: longhorn-system
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(\`$MY_LONGHORN_HOST\`)
middlewares:
- name: longhorn-basic-auth
services:
- kind: Service
name: longhorn-frontend
namespace: longhorn-system
port: 80
tls:
certResolver: default
EOF
请注意修改域名
longhorn.example.org
若未配置自动签发证书,请删除 tls 的两行配置
配置完成后,可以通过
https://longhorn.example.org
访问存储管理系统
4、自动备份到S3对象存储
# S3参数
export MY_S3_ACCESS_KEY_ID=key-id
export MY_S3_SECRET_ACCESS_KEY=secret-key
export MY_S3_ENDPOINTS=https://your-s3-domain
# 保存密钥
cat <<EOF | kubectl apply -f -
kind: Secret
apiVersion: v1
metadata:
name: s3-backup
namespace: longhorn-system
type: Opaque
data:
AWS_ACCESS_KEY_ID: $(echo -n $MY_S3_ACCESS_KEY_ID | base64)
AWS_SECRET_ACCESS_KEY: $(echo -n $MY_S3_SECRET_ACCESS_KEY | base64)
AWS_ENDPOINTS: $(echo -n $MY_S3_ENDPOINTS | base64)
EOF
修改S3参数变量,应用变更;然后登录存储管理系统
进入
Setting - General
页面,填写下面选项
Backup Target
格式为s3://存储桶@区域/子目录,例如s3://backup@dummyregion/longhorn
Backup Target Credential Secret
填写上面创建的密钥名s3-backup
进入
Recurring Job
页面,点击Create Recurring Job
创建自动备份任务
其他章节
根据本站Tag查阅 《Kubernetes 领进门》 系列文章