基于 MinIO 对象存储保障 Rancher 数据

作者简介
谢泽钦,SUSE Rancher 技术支持工程师,负责订阅客户的维护与售后技术支持服务,提供相关技术解决方案。拥有 CKA、CKS 官方认证,多年云计算领域经验,经历了从 OpenStack 到 Kubernetes 的技术变革,对底层操作系统、KVM 虚拟化和 Docker 容器等相关云原生技术拥有丰富的实践经验。

前言

Rancher 是一个企业级的 Kubernetes 容器管理平台,它简化了使用 Kubernetes 的流程,提供了完整的软件堆栈,适用于使用容器的团队。Rancher 解决了跨任何基础架构管理多个 Kubernetes 集群的运营和安全挑战,同时为 DevOps 团队提供了运行容器化工作负载的集成工具。

下图是 Rancher 官方提供的架构图:

Architecture

Architecture

从图中可知 Rancher 的数据是存储在 etcd 中。

etcd 同时也是 Kubernetes 的关键组件,Kubernetes 集群通过 etcd 存储了集群的整个状态:包括集群、节点、运行中的工作负载、以及所有 Kubernetes 资源对象的元数据和状态信息。

在 Rancher 和 Kubernetes 集群上,每时每刻都有大量的数据读写,如何保障 etcd 中的数据成为了我们需要解决的问题。

本文将介绍如何通过 MinIO 对象存储的能力,来分别保障 Rancher 和 下游 Kubernetes 的数据。

先决条件

  • Rancher:2.6.6
  • k8s:v1.23.7

MinIO 快速部署

MinIO 介绍

MinIO 是开源的高性能对象存储系统,基于 Golang 实现,提供与 Amazon S3 兼容的 API 接口。

MinIO优点

  • 云原生:符合一切云原生云的架构和构建过程,并且包含最新的云计算技术和概念。其中包括支持 Kubernetes 、微服和多租户的的容器技术,让对象存储对于 Kubernetes 更加友好。
  • 高性能:在标准硬件上,读/写速度上高达183 GB / 秒 和 171 GB / 秒,拥有更高的吞吐量和更低的延迟。
  • 可扩展:扩展从单个群集开始,该群集可以与其他 MinIO 群集联合以创建全局名称空间, 并在需要时可以跨越多个不同的数据中心。
  • 易操作:部署简单,简化了使用对象存储的流程,支持多种平台运行。
MinIO 部署
  1. 一键生成 ssl 自签名证书脚本,将下面脚本保存到create-cert.sh文件中。
#!/bin/bash -e

help ()
{
    echo  ' ================================================================ '
    echo  ' --ssl-domain: 生成ssl证书需要的主域名,如不指定则默认为www.rancher.local,如果是ip访问服务,则可忽略;'
    echo  ' --ssl-trusted-ip: 一般ssl证书只信任域名的访问请求,有时候需要使用ip去访问server,那么需要给ssl证书添加扩展IP,多个IP用逗号隔开;'
    echo  ' --ssl-trusted-domain: 如果想多个域名访问,则添加扩展域名(SSL_TRUSTED_DOMAIN),多个扩展域名用逗号隔开;'
    echo  ' --ssl-size: ssl加密位数,默认2048;'
    echo  ' --ssl-cn: 国家代码(2个字母的代号),默认CN;'
    echo  ' 使用示例:'
    echo  ' ./create_self-signed-cert.sh --ssl-domain=www.test.com --ssl-trusted-domain=www.test2.com \ '
    echo  ' --ssl-trusted-ip=1.1.1.1,2.2.2.2,3.3.3.3 --ssl-size=2048 --ssl-date=3650'
    echo  ' ================================================================'
}

case "$1" in
    -h|--help) help; exit;;
esac

if [[ $1 == '' ]];then
    help;
    exit;
fi

CMDOPTS="$*"
for OPTS in $CMDOPTS;
do
    key=$(echo ${OPTS} | awk -F"=" '{print $1}' )
    value=$(echo ${OPTS} | awk -F"=" '{print $2}' )
    case "$key" in
        --ssl-domain) SSL_DOMAIN=$value ;;
        --ssl-trusted-ip) SSL_TRUSTED_IP=$value ;;
        --ssl-trusted-domain) SSL_TRUSTED_DOMAIN=$value ;;
        --ssl-size) SSL_SIZE=$value ;;
        --ssl-date) SSL_DATE=$value ;;
        --ca-date) CA_DATE=$value ;;
        --ssl-cn) CN=$value ;;
    esac
done

# CA相关配置
CA_DATE=${CA_DATE:-3650}
CA_KEY=${CA_KEY:-cakey.pem}
CA_CERT=${CA_CERT:-cacerts.pem}
CA_DOMAIN=cattle-ca

# ssl相关配置
SSL_CONFIG=${SSL_CONFIG:-$PWD/openssl.cnf}
SSL_DOMAIN=${SSL_DOMAIN:-
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值