Spinnaker多云持续交付平台: 部署Minio存储服务

2024-02-09 18:36

本文主要是介绍Spinnaker多云持续交付平台: 部署Minio存储服务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

 一、实验

1.环境

2.K8S storage节点部署NFS

3.K8S 动态创建PV

4.K8S master节点部署HELM3

4.K8S master节点部署Minio存储服务(第一种方式安装)

5.Minio客户端安装MC命令

6.K8S master节点使用Docker 部署Minio存储服务(第二种方式安装)

二、问题

1.K8S无法删除pv,pvc问题

2.minio 部署模式有哪些

3.pod Readiness探针与Liveness探针失败

4. 添加 MinIO服务失败

5.docker创建容器失败

6.K8S如何快速创建Minio存储


 一、实验

1.环境

(1)主机

表1  主机

主机架构版本IP备注
master1K8S master节点1.20.6192.168.204.180

node1K8S node节点1.20.6192.168.204.181
node2K8S node节点1.20.6192.168.204.182
stor01

nfs存储节点

192.168.204.177

(2)查看集群状态

2.K8S storage节点部署NFS

(1)安装配置nfs服务

#在stor01(192.168.204.183)节点上安装nfs,并配置nfs服务
mkdir /opt/k8s
chmod 777 /opt/k8s/yum -y install nfs-utils rpcbind#给204网段用户赋予读写权限、同步内容、不压缩共享对象root用户权限
vim /etc/exports
/opt/k8s 192.168.204.0/24(rw,sync,no_root_squash)#首次安装 
systemctl  start  rpcbind nfs#非首次安装
systemctl  restart rpcbind
systemctl restart nfs#监听服务
ss -antp | grep rpcbind#查看共享
exportfs  -arv showmount  -e#所有节点配置hosts映射,或者配置DNS解析
echo '192.168.204.177 stor01' >> /etc/hosts

在stor01(192.168.204.177)节点上安装nfs,并配置nfs服务

安装

配置文件

重启服务

监听服务

查看共享目录

(2)查看域名

vim /etc/hosts

3.K8S 动态创建PV

(1) 创建 Service Account,用来管理 NFS-Subdir-External-Provisioner 在 k8s 集群中运行的权限,设置 nfs-client 对 PV,PVC,StorageClass 等的规则

编写资源清单文件

vim nfs-rbac.yamlapiVersion: v1
kind: ServiceAccount
metadata:name: nfs-client-provisionernamespace: default # 替换成你要部署的 Namespace
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: nfs-client-provisioner-runner
rules:- apiGroups: [""]resources: ["persistentvolumes"]verbs: ["get", "list", "watch", "create", "delete"]- apiGroups: [""]resources: ["persistentvolumeclaims"]verbs: ["get", "list", "watch", "update"]- apiGroups: ["storage.k8s.io"]resources: ["storageclasses"]verbs: ["get", "list", "watch"]- apiGroups: [""]resources: ["events"]verbs: ["create", "update", "patch"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: run-nfs-client-provisioner
subjects:- kind: ServiceAccountname: nfs-client-provisionernamespace: default
roleRef:kind: ClusterRolename: nfs-client-provisioner-runnerapiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: leader-locking-nfs-client-provisionernamespace: default
rules:- apiGroups: [""]resources: ["endpoints"]verbs: ["get", "list", "watch", "create", "update", "patch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: leader-locking-nfs-client-provisionernamespace: default
subjects:- kind: ServiceAccountname: nfs-client-provisionernamespace: default
roleRef:kind: Rolename: leader-locking-nfs-client-provisionerapiGroup: rbac.authorization.k8s.io

生成资源

kubectl apply -f nfs-rbac.yaml

再次查看sa

kubectl get sa

(3)使用 Deployment 来部署 NFS-Subdir-External-Provisioner

NFS Provisione(即 nfs-client),有两个功能:一个是在 NFS 共享目录下创建挂载点(volume),另一个则是将 PV 与 NFS 的挂载点建立关联。

vim  nfs-provisioner-deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: nfs-client-provisionerlabels:app: nfs-client-provisioner
spec:replicas: 1strategy:type: Recreate                   ## 设置升级策略为删除再创建(默认为滚动更新)selector:matchLabels:app: nfs-client-provisionertemplate:metadata:labels:app: nfs-client-provisionerspec:serviceAccountName: nfs-client-provisionercontainers:- name: nfs-client-provisioner#image: gcr.io/k8s-staging-sig-storage/nfs-subdir-external-provisioner:v4.0.0image: registry.cn-beijing.aliyuncs.com/xngczl/nfs-subdir-external-provisione:v4.0.0volumeMounts:- name: nfs-client-rootmountPath: /persistentvolumesenv:- name: PROVISIONER_NAME     ## Provisioner的名称,以后设置的storageclass要和这个保持一致value: nfs-client- name: NFS_SERVER           ## NFS服务器地址,需和valumes参数中配置的保持一致value: stor01- name: NFS_PATH             ## NFS服务器数据存储目录,需和valumes参数中配置的保持一致value: /opt/k8svolumes:- name: nfs-client-rootnfs:server: stor01             ## NFS服务器地址path: /opt/k8s            ## NFS服务器数据存储目录

kubectl apply -f nfs-provisioner-deploy.yaml

(5)创建 StorageClass,负责建立 PVC 并调用 NFS-Subdir-External-Provisioner进行预定的工作,并让 PV 与 PVC 建立关联,声明 NFS 动态卷提供者名称为 “nfs-storage”。

vim nfs-storage.yamlapiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: nfs-storageannotations:storageclass.kubernetes.io/is-default-class: "false"  ## 是否设置为默认的storageclass
provisioner: nfs-client                                   ## 动态卷分配者名称,必须和上面创建的"provisioner"变量中设置的Name一致
parameters:archiveOnDelete: "true"                                 ## 设置为"false"时删除PVC不会保留数据,"true"则保留数据
mountOptions:- hard                                                  ## 指定为硬挂载方式- nfsvers=4                                             ## 指定NFS版本,这个需要根据NFS Server版本号设置


kubectl apply -f nfs-storage.yaml

4.K8S master节点部署HELM3

(1)Helm版本与K8S集群兼容

Helm | Helm版本支持策略

ee70de7fccd441c2866678f1b28ca9da.png

(2)查看K8S集群状态

# kubectl get node

(3)策略

当前K8S 集群为1.20.6版本,选择HELM 3.8.1 版本。

(4)部署


1)安装 helm 
//下载二进制 Helm client 安装包
wget https://get.helm.sh/helm-v3.8.1-linux-amd64.tar.gztar -zxvf helm-v3.8.1-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
helm version//命令补全
source <(helm completion bash)2)使用 helm 安装 Chart
//添加常用的 chart 仓库,
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts3) 更新 charts 列表
helm repo update
helm repo list          

安装

使用 helm 安装 Chart

4.K8S master节点部署Minio存储服务(第一种方式安装)

(1)Minio官方文档

minio 13.4.2 · bitnami/bitnami (artifacthub.io)

(2)获取最新minio charts

1)查询 minio 资源
helm search repo minio2)创建目录
mkdir -p /root/minio/ && cd /root/minio/3)拉取 chart 到本地目录
第一种方式:
helm fetch bitnami/minio --version 13.3.3
第二种方式
helm pull bitnami/minio --version 13.3.3 4)解压
tar -zxvf minio-13.3.3.tgz
cp minio/values.yaml ./values-test.yaml5)查看当前目录层级
tree -L 2
.
├── minio
│   ├── Chart.lock
│   ├── charts
│   ├── Chart.yaml
│   ├── README.md
│   ├── templates
│   └── values.yaml
├── minio-13.3.3.tgz
└── values-test.yaml

查询

拉取解压

查看目录

(3)查看集群 storageclasses

kubectl get storageclasses.storage.k8s.io

(4)修改配置文件

vim values-test.yaml 

(5)安装minio集群

helm install minio minio -f values-test.yaml-n 指定 kubernetes 集群名称空间
-f 指定使用的配置文件,文件中定义的配置可以覆盖 minio/values.yaml 文件中配置NAME: minio
LAST DEPLOYED: Thu Feb  8 09:03:41 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: minio
CHART VERSION: 13.3.3
APP VERSION: 2024.1.31** Please be patient while the chart is being deployed **MinIO&reg; can be accessed via port  on the following DNS name from within your cluster:minio.default.svc.cluster.localTo get your credentials run:export ROOT_USER=$(kubectl get secret --namespace default minio -o jsonpath="{.data.root-user}" | base64 -d)export ROOT_PASSWORD=$(kubectl get secret --namespace default minio -o jsonpath="{.data.root-password}" | base64 -d)To connect to your MinIO&reg; server using a client:- Run a MinIO&reg; Client pod and append the desired command (e.g. 'admin info'):kubectl run --namespace default minio-client \--rm --tty -i --restart='Never' \--env MINIO_SERVER_ROOT_USER=$ROOT_USER \--env MINIO_SERVER_ROOT_PASSWORD=$ROOT_PASSWORD \--env MINIO_SERVER_HOST=minio \--image docker.io/bitnami/minio-client:2024.1.31-debian-11-r1 -- admin info minioTo access the MinIO&reg; web UI:- Get the MinIO&reg; URL:echo "MinIO&reg; web URL: http://127.0.0.1:9001/minio"kubectl port-forward --namespace default svc/minio 9001:9001

(6) 查看

helm listkubectl get deploykubectl get podkubectl get pod -o wide

(7) 查看pv与pvc

kubectl get pvkubectl get pvc

(8)NFS 查看卷

ls

ls | grep minio

5.Minio客户端安装MC命令

(1)下载

wget https://dl.min.io/client/mc/release/linux-amd64/mc

(2)安装

chmod a+x mcmv mc /usr/local/bin/mc --version

(3) 配置访问minio

mc config host add minio http://10.99.219.173:9000 minio minio123 --api S3v4# 查看配置,不同 mc 版本,以下内容输出可能不一定完全相同
mc config host listgcs  URL       : https://storage.googleapis.comAccessKey : YOUR-ACCESS-KEY-HERESecretKey : YOUR-SECRET-KEY-HEREAPI       : S3v2Path      : dnslocalURL       : http://localhost:9000AccessKey : SecretKey : API       : Path      : autominioURL       : http://10.99.219.173:9000AccessKey : minioSecretKey : minio123API       : S3v4Path      : autoplay URL       : https://play.min.ioAccessKey : Q3AM3UQ867SPQQA43P2FSecretKey : zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TGAPI       : S3v4Path      : autos3   URL       : https://s3.amazonaws.comAccessKey : YOUR-ACCESS-KEY-HERESecretKey : YOUR-SECRET-KEY-HEREAPI       : S3v4Path      : dns

6.K8S master节点使用Docker 部署Minio存储服务(第二种方式安装)

(1)docker 命令去安装稳定版本的 minio

docker pull minio/minio

(2)创建存放数据的目录

# 一个用来存放配置,一个用来存储上传文件的目录
# 启动前需要先创建Minio外部挂载的配置文件( /rootconfig),和存储上传文件的目录( /root/data)mkdir -p /root/datamkdir -p /root/config

(3) 创建Minio容器并运行(多行模式)

# 9090端口指的是minio的客户端端口
# MINIO_ACCESS_KEY :账号
# MINIO_SECRET_KEY :密码(账号长度必须大于等于5,密码长度必须大于等于8位)docker run -p 9000:9000 -p 9090:9090 \--net=host \--name minio \-d --restart=always \-e "MINIO_ACCESS_KEY=minioadmin" \-e "MINIO_SECRET_KEY=minioadmin" \-v /root/data:/data \-v /root/config:/root/.minio \minio/minio server \/data --console-address ":9090" -address ":9000"

(4)另一种方式创建Minio容器并运行(单行模式)

docker run -p 9000:9000 -p 9090:9090      --net=host      --name minio      -d --restart=always      -e "MINIO_ACCESS_KEY=minioadmin"      -e "MINIO_SECRET_KEY=minioadmin"      -v /root/data:/data      -v /root/config:/root/.minio      minio/minio server      /data --console-address ":9090" -address ":9000"

(5)查看docker进程

docker ps | grep minio

(6)登录

http://192.168.204.180:9090/login

进入系统

(7)创建用户

填写信息

(8)完成创建

(9)创建组

(10)创建accessKey和secretKey 

查看

(11)创建Bucket

查看

(12)上传文件

查看

二、问题

1.K8S无法删除pv,pvc问题

(1)报错

error: resource(s) were provided, but no name was specified

(2)原因分析

删除顺序不对。

(3)解决方法

正确的删除顺序:1)先删除pod
helm -n devops uninstall minio(项目名称) 2)解除pv绑定
kubectl patch pv pvname(pv名称) -p '{"metadata":{"finalizers":null}}'3)解除pvc绑定
kubectl patch pvc pvcname(pvc名称) -p '{"metadata":{"finalizers":null}}'4) 删除pv
kubectl delete pv pvname(pv名称) -n devops5) 删除pvc
kubectl delete pvc pvname(pvc名称) -n devops

2.minio 部署模式有哪些

(1)模式

1)standalone
独立模式下,服务部署数量为1个3)distributed
分别模式下,服务部署数量,必须大于4个

(2)standalone模式

 

创建(服务部署数量为1个)

(3)distributed模式

创建 (服务部署数量为4个)

 

3.pod Readiness探针与Liveness探针失败

(1)报错

通过yaml文件创建pod时,执行完yaml文件,过一会就开始报错说Back-off restarting failed container

查看pod状态一致处于CrashLoopBackOff

kubectl get pod

kubectl describe pod minio-9c678d65c-45js9 

(2)原因分析

Back-off restarting failed container的Warning事件,一般是由于通过指定的镜像启动容器后,容器内部没有常驻进程,导致容器启动成功后即退出,从而进行了持续的重启。

(3)解决方法

如果是通过yaml文件创建的pod,找到对应的deployment,增加命令command: ["/bin/bash", "-ce", "tail -f /dev/null"]
kubectl edit deploy

4. 添加 MinIO服务失败

(1)报错

(2)原因分析

端口不能漏,–api不能漏

(3)解决方法

连接

mc config host add minio http://10.99.219.173:9000 minio minio123 --api S3v4

如需删除

mc config host remove minio

5.docker创建容器失败

(1)报错

(2)原因分析

容器名称重复

(3)解决方法

查看

docker ps -a

删除

docker rm -f a17f4299e7bd

成功:

docker run -p 9000:9000 --name minio -v /root/data:/data -v /root/config:/root/.minio minio/minio server /data

6.K8S如何快速创建Minio存储

(1)官方文档

MinIO Object Storage for Kubernetes — MinIO Object Storage for Kubernetes

(2)下载 MinIO 对象

curl https://raw.githubusercontent.com/minio/docs/master/source/extra/examples/minio-dev.yaml -O

(3)应用 MinIO 对象定义

kubectl apply -f minio-dev.yaml

命令输出应如下所示:

namespace/minio-dev created
pod/minio created

(4)验证 Pod 的状态

kubectl get pods -n minio-dev

(5)检索有关 Pod 状态的详细信息

kubectl describe pod/minio -n minio-devkubectl logs pod/minio -n minio-dev

(6)临时访问 MinIO S3 API 和控制台

使用以下命令将流量从 MinIO Pod 临时转发到本地计算机

#该命令在 shell 中处于活动状态时,将 pod 端口转发到本地计算机上的匹配端口。 该命令仅在 shell 会话中处于活动状态时起作用。 终止会话将关闭本地计算机上的端口。#要配置对 Pod 的长期访问,需要在 Kubernetes 中配置 Ingress 或类似的网络控制组件,以路由进出 Pod 的流量。kubectl port-forward pod/minio 9000 9090 -n minio-dev

(7)浏览器连接到 MinIO 服务器

通过在本地计算机上打开浏览器并导航到 来访问 MinIO 控制台。http://127.0.0.1:9001使用凭据 登录控制台。 这些是默认的 root 用户凭证。minioadmin | minioadmin

(8)连接 MinIO 客户端

如果本地计算机已安装mc,请使用以下命令进行身份验证并连接到 MinIO 部署

mc alias set k8s-minio-dev http://127.0.0.1:9000 minioadmin minioadmin
mc admin info k8s-minio-dev

这篇关于Spinnaker多云持续交付平台: 部署Minio存储服务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/694992

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

如何解决线上平台抽佣高 线下门店客流少的痛点!

目前,许多传统零售店铺正遭遇客源下降的难题。尽管广告推广能带来一定的客流,但其费用昂贵。鉴于此,众多零售商纷纷选择加入像美团、饿了么和抖音这样的大型在线平台,但这些平台的高佣金率导致了利润的大幅缩水。在这样的市场环境下,商家之间的合作网络逐渐成为一种有效的解决方案,通过资源和客户基础的共享,实现共同的利益增长。 以最近在上海兴起的一个跨行业合作平台为例,该平台融合了环保消费积分系统,在短

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、