k3s 安装 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.5.1/deploy/prerequisite/longhorn-iscsi-installation.yaml
# 安装 nfs-clinet
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.5.1/deploy/prerequisite/longhorn-nfs-installation.yaml

这两条命令将在所有节点安装 iscsinfs-client
若无法自动安装,请手动在所有节点安装上述依赖包

2、安装 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

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 领进门》 系列文章

文章作者: 若海; 原文链接: https://www.rehiy.com/post/404/; 转载需声明来自技术写真 - 若海

添加新评论