【kubernetes】在 k8s 集群上部署 Minio Operator 和 Minio Plugin

简介: 【kubernetes】在 k8s 集群上部署 Minio Operator 和 Minio Plugin

正文


说明


  • 此篇的k8s基础环境搭建方法基于前几篇文章。
  • MinIO Kubernetes Plugin提供了使用kubectl MinIO命令在Kubernetes集群上部署和管理MinIO租户的本地支持。
  • MinIO Operator 自动生成TLS证书签名请求(Certificate Signing Requests, CSR),并使用Kubernetes certificates.k8s.io TLS证书管理API,用于创建已签名的TLS证书。


一、kube-controller-manager 支持创建证书


修改 /etc/kubernetes/controller-manager 添加下面两行:


--cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt \
--cluster-signing-key-file=/etc/kubernetes/pki/ca.key \

修改后的文件内容如下:


5.webp.jpg


重启 kube-controller-manager 服务



systemctl restart kube-controller-manager


二、安装 minio operator 插件


  1. 下载最新版的 minio operator 可执行文件:


wget https://github.com/minio/operator/releases/download/v4.5.4/kubectl-minio_4.5.4_linux_amd64


  1. 重命名


[root@k8s0 workspace_minio]# mv kubectl-minio_4.5.4_linux_amd64 kubectl-minio


  1. 添加执行权限


[root@k8s0 workspace_minio]# chmod +x kubectl-minio


  1. 移动到 /usr/local/bin/


[root@k8s0 workspace_minio]# cp kubectl-minio /usr/local/bin/


  1. 验证:


[root@k8s0 workspace_minio]# kubectl minio version
v4.5.4


  • 可以看到,minio operator 已经安装成功。


三、初始化 minio operator


  1. 执行 kubectl minio init命令初始化


[root@k8s0 workspace_minio]# kubectl minio init
namespace/minio-operator created
serviceaccount/minio-operator created
clusterrole.rbac.authorization.k8s.io/minio-operator-role created
clusterrolebinding.rbac.authorization.k8s.io/minio-operator-binding created
customresourcedefinition.apiextensions.k8s.io/tenants.minio.min.io created
service/operator created
deployment.apps/minio-operator created
serviceaccount/console-sa created
secret/console-sa-secret created
clusterrole.rbac.authorization.k8s.io/console-sa-role created
clusterrolebinding.rbac.authorization.k8s.io/console-sa-binding created
configmap/console-env created
service/console created
deployment.apps/console created
-----------------
To open Operator UI, start a port forward using this command:
kubectl minio proxy -n minio-operator 
-----------------
  1. 运行 kubectl minio proxy -n minio-operator  命令临时将流量从minio操作员控制台服务转发到本地机器


[root@k8s0 workspace_minio]# kubectl minio proxy -n minio-operator 
Starting port forward of the Console UI.
To connect open a browser and go to http://localhost:9090
Current JWT to login: eyJhbGciOiJSUzI1NiIsImtpZCI6Inl6cFRBM25HUTJrNUNsck1CR2FpNmVlaHlNaWVHV1lVdEkwOGtrZjBMckkifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJtaW5pby1vcGVyYXRvciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJjb25zb2xlLXNhLXNlY3JldCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJjb25zb2xlLXNhIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiZmQ5ZTZjYjMtMDBiOS00NTA5LTgzMzctMzBlNjUyZWNlMDU2Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Om1pbmlvLW9wZXJhdG9yOmNvbnNvbGUtc2EifQ.djbnoBplYXwaV2dfUC0BqSZ1rCRFP85SxZdHy3Z1l0rzvKpcUn_B4O6jg6gt4noJh2c8712t_vsHTnlgUKu4ptif2vVFfcCzX21G6ILcZ-X0b6PzQ58rFeFG6RzB-0E1TZXEcaXWrXfXoplwywtVscdyvDNXSXCvwSquyrHs4o4oP2nsxhL0OLblLFT2RiA-6jpwvnaWUEBaO3paZzyvCiUcBoPgQd2HHHRih2MXRWG72w3lCjICa8z60ihKq3NTqbTB5HUJouRoDluI5ykYcajMZ6sXMDFEDG30Wa5q5NE_pXH9XtMOBFXlFiuJZhfq72aD3-snlaGoDQajMuZ_ng
Forwarding from 0.0.0.0:9090 -> 9090


  • 这里其实就是创建了一个登录token,并且将临时暴露端口,相当于集成了kubectl create tokenkubectl port-forward 两条命名。
  • 复制 token,浏览器输入机器IP:9090 ,并在登录界面输入 token,即可登录
    55.webp.jpg

    555.webp.jpg
    登录成功


四、安装 DirectPV plugin 插件


  1. 通过 krew 安装 directpv


[root@k8s0 workspace_krew]# kubectl krew install directpv
Updated the local copy of plugin index.
Installing plugin: directpv
Installed plugin: directpv
\
 | Use this plugin:
 |      kubectl directpv
 | Documentation:
 |      https://github.com/minio/directpv
/
WARNING: You installed plugin "directpv" from the krew-index plugin repository.
   These plugins are not audited for security by the Krew maintainers.
   Run them at your own risk.


  1. 在 kubernetes 安装 directpv 插件


[root@k8s0 workspace_krew]# kubectl directpv install
I1125 10:32:13.441654   11816 ns.go:65] 'direct.csi.min.io' namespace created
I1125 10:32:13.458859   11816 rbac.go:352] 'direct.csi.min.io' rbac created
I1125 10:32:13.542620   11816 crd.go:135] crds successfully registered
I1125 10:32:13.556357   11816 csidriver.go:148] 'direct.csi.min.io' csidriver created
I1125 10:32:13.583081   11816 storageclass.go:48] 'direct.csi.min.io' storageclass created
I1125 10:32:13.595027   11816 service.go:38] 'direct.csi.min.io' service created
I1125 10:32:13.610337   11816 daemonset.go:41] 'direct.csi.min.io' daemonset created
I1125 10:32:13.632032   11816 deployment.go:289] 'direct.csi.min.io' deployment created


  1. 验证安装是否成功


[root@k8s0 tmp]# kubectl directpv info
 NODE             CAPACITY  ALLOCATED  VOLUMES  DRIVES 
 • 192.168.3.100  -         -          -        -      
 • 192.168.3.101  -         -          -        -      
 • 192.168.3.102  -         -          -        -      
[root@k8s0 tmp]# date
Sat Nov 26 11:19:07 CST 2022


  1. 列出集群中可用的驱动器


[root@k8s0 tmp]# kubectl directpv drives ls
 DRIVE      CAPACITY  ALLOCATED  FILESYSTEM  VOLUMES  NODE           ACCESS-TIER  STATUS      
 /dev/dm-1  4.0 GiB   -          swap        -        192.168.3.100  -            Available   
 /dev/sdb2  1.4 TiB   -          -           -        192.168.3.100  -            Available   
 /dev/dm-1  4.0 GiB   -          swap        -        192.168.3.101  -            Available   
 /dev/sdb2  1.4 TiB   -          -           -        192.168.3.101  -            Available   
 /dev/dm-1  4.0 GiB   -          swap        -        192.168.3.102  -            Available   
 /dev/sdb2  1.4 TiB   -          -           -        192.168.3.102  -            Available


  1. 选择 directpv 应该管理和格式化的驱动器


kubectl directpv drives format --drives /dev/sdb2
  • 该命令标识,格式化所有节点上的 /dev/sdb2


  1. 验证


[root@k8s0 tmp]# kubectl directpv drives ls
 DRIVE      CAPACITY  ALLOCATED  FILESYSTEM  VOLUMES  NODE           ACCESS-TIER  STATUS      
 /dev/dm-1  4.0 GiB   -          swap        -        192.168.3.100  -            Available   
 /dev/sdb2  1.4 TiB   -          xfs         -        192.168.3.100  -            Ready       
 /dev/dm-1  4.0 GiB   -          swap        -        192.168.3.101  -            Available   
 /dev/sdb2  1.4 TiB   -          xfs         -        192.168.3.101  -            Ready       
 /dev/dm-1  4.0 GiB   -          swap        -        192.168.3.102  -            Available   
 /dev/sdb2  1.4 TiB   -          xfs         -        192.168.3.102  -            Ready
  • 可以看到所有节点上的 /dev/sdb2 已经格式化完毕了。


  1. OK,现在可以 directpv现在可以被指定为PodSpec.VolumeClaimTemplates中的存储类


五、创建高可用 minio 集群


现在可以通过第三步里的“Create”按钮创建集群了.

5555.webp.jpg

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
28天前
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
188 2
|
6月前
|
存储 Kubernetes 异构计算
Qwen3 大模型在阿里云容器服务上的极简部署教程
通义千问 Qwen3 是 Qwen 系列最新推出的首个混合推理模型,其在代码、数学、通用能力等基准测试中,与 DeepSeek-R1、o1、o3-mini、Grok-3 和 Gemini-2.5-Pro 等顶级模型相比,表现出极具竞争力的结果。
|
7月前
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
646 33
|
7月前
|
存储 运维 Kubernetes
容器数据保护:基于容器服务 Kubernetes 版(ACK)备份中心实现K8s存储卷一键备份与恢复
阿里云ACK备份中心提供一站式容器化业务灾备及迁移方案,减少数据丢失风险,确保业务稳定运行。
|
5月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
183 9
|
5月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。
|
7月前
|
Kubernetes 开发者 Docker
集群部署:使用Rancher部署Kubernetes集群。
以上就是使用 Rancher 部署 Kubernetes 集群的流程。使用 Rancher 和 Kubernetes,开发者可以受益于灵活性和可扩展性,允许他们在多种环境中运行多种应用,同时利用自动化工具使工作负载更加高效。
372 19
|
7月前
|
人工智能 分布式计算 调度
打破资源边界、告别资源浪费:ACK One 多集群Spark和AI作业调度
ACK One多集群Spark作业调度,可以帮助您在不影响集群中正在运行的在线业务的前提下,打破资源边界,根据各集群实际剩余资源来进行调度,最大化您多集群中闲置资源的利用率。
|
10月前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
7月前
|
Prometheus Kubernetes 监控
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
216 0
OpenAI故障复盘丨如何保障大规模K8s集群稳定性

热门文章

最新文章

推荐镜像

更多