【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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
6天前
|
存储 Kubernetes 容器
K8S部署nexus
该配置文件定义了Nexus 3的Kubernetes部署,包括PersistentVolumeClaim、Deployment和服务。PVC请求20Gi存储,使用NFS存储类。Deployment配置了一个Nexus 3容器,内存限制为6G,CPU为1000m,并挂载数据卷。Service类型为NodePort,通过30520端口对外提供服务。所有资源位于`nexus`命名空间中。
|
10天前
|
Kubernetes 应用服务中间件 nginx
二进制安装Kubernetes(k8s)v1.32.0
本指南提供了一个详细的步骤,用于在Linux系统上通过二进制文件安装Kubernetes(k8s)v1.32.0,支持IPv4+IPv6双栈。具体步骤包括环境准备、系统配置、组件安装和配置等。
113 10
|
29天前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
28天前
|
Kubernetes Cloud Native API
深入理解Kubernetes——容器编排的王者之道
深入理解Kubernetes——容器编排的王者之道
42 1
|
1月前
|
Kubernetes Cloud Native 持续交付
深入理解Kubernetes:容器编排的基石
深入理解Kubernetes:容器编排的基石
|
1月前
|
存储 Kubernetes Devops
Kubernetes集群管理和服务部署实战
Kubernetes集群管理和服务部署实战
56 0
|
3天前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
17 2
|
14天前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。
|
1月前
|
Kubernetes 监控 Cloud Native
Kubernetes集群的高可用性与伸缩性实践
Kubernetes集群的高可用性与伸缩性实践
72 1
|
2月前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景