k8s部署单机模式的minio和minio-client

k8s部署单机模式的minio和minio-client

  • 一、k8s部署minio
    • 1.1说明
    • 1.2 yaml内容
    • 1.3 步骤
      • 1.3.1 创建资源
      • 1.3.2 查看启动日志
      • 1.3.3 查看svc并访问控制台
  • 二、docker部署minio-client
    • 2.1 查找镜像
    • 2.2 运行镜像
    • 2.3 绑定minio server

一、k8s部署minio

1.1说明

项目使用minio,准备在k8s环境部署一套minio试用。

1.关于minio的原理和概念参考:
https://mp.weixin.qq.com/s?__biz=MzI3MDM5NjgwNg==&mid=2247487162&idx=1&sn=39c683a43ec2678fbf6d767f6ab6dcc6&chksm=ead0f253dda77b459edaf514cf72fc03546f2c5075c7b131c34b34772ca3517cab170d94c056#rd
2. 官网k8s部署minio方法说明:
https://min.io/docs/minio/kubernetes/upstream/index.html

1.2 yaml内容

参考:
https://www.jianshu.com/p/2d45990dd652

https://raw.githubusercontent.com/minio/docs/master/source/extra/examples/minio-dev.yaml文档yaml内容:

# Deploys a new Namespace for the MinIO Pod
apiVersion: v1
kind: Namespace
metadata:name: minio-dev # Change this value if you want a different namespace namelabels:name: minio-dev # Change this value to match metadata.name
---
# Deploys a new MinIO Pod into the metadata.namespace Kubernetes namespace
#
# The `spec.containers[0].args` contains the command run on the pod
# The `/data` directory corresponds to the `spec.containers[0].volumeMounts[0].mountPath`
# That mount path corresponds to a Kubernetes HostPath which binds `/data` to a local drive or volume on the worker node where the pod runs
# 
apiVersion: v1
kind: Pod
metadata:labels:app: minioname: minionamespace: minio-dev # Change this value to match the namespace metadata.name
spec:containers:- name: minioimage: quay.io/minio/minio:latestcommand:- /bin/bash- -cargs: - minio server /data --console-address :9090volumeMounts:- mountPath: /dataname: localvolume # Corresponds to the `spec.volumes` Persistent VolumenodeSelector:kubernetes.io/hostname: kubealpha.local # Specify a node label associated to the Worker Node on which you want to deploy the pod.volumes:- name: localvolumehostPath: # MinIO generally recommends using locally-attached volumespath: /mnt/disk1/data # Specify a path to a local drive or volume on the Kubernetes worker nodetype: DirectoryOrCreate # The path to the last directory must exist

实际使用到的minio.yaml配置文件:

apiVersion: v1
kind: PersistentVolume
metadata:labels:app: miniorelease: minioname: minionamespace: sscs-dev
spec:accessModes:- ReadWriteOncecapacity:storage: 10GivolumeMode: FilesystemhostPath:path: /home/cicd/sscs-dev/minio
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:# This name uniquely identifies the PVC. Will be used in deployment below.name: minio-pv-claimlabels:app: minio-storage-claimnamespace: sscs-dev
spec:# Read more about access modes here: https://kubernetes.io/docs/user-guide/persistent-volumes/#access-modesaccessModes:- ReadWriteOnceresources:# This is the request for storage. Should be available in the cluster.requests:storage: 10Gi# Uncomment and add storageClass specific to your requirements below. Read more https://kubernetes.io/docs/concepts/storage/persistent-volumes/#class-1#storageClassName:
---
apiVersion: apps/v1
kind: Deployment
metadata:# This name uniquely identifies the Deploymentname: minio-deploymentnamespace: sscs-dev
spec:strategy:type: Recreateselector:matchLabels:app: miniotemplate:metadata:labels:# Label is used as selector in the service.app: miniospec:# Refer to the PVC created earliervolumes:- name: storagepersistentVolumeClaim:# Name of the PVC created earlierclaimName: minio-pv-claimimagePullSecrets:- name: sscs-secretcontainers:- name: minio# Pulls the default MinIO image from Docker Hubimage: artifact.srdcloud.cn/khala_insight-release-docker-local/minio:latest# 注意:--console-address ":5000"用来固定控制台访问端口,否则页面会无法访问控制台command:- /bin/sh- -c- minio server /data --console-address ":5000"args:- server- /storageenv:# MinIO access key and secret key- name: MINIO_ACCESS_KEYvalue: "admin123"- name: MINIO_SECRET_KEYvalue: "admin123"ports:- name: datacontainerPort: 9000protocol: "TCP"- name: consolecontainerPort: 5000protocol: "TCP"# Mount the volume into the podvolumeMounts:- name: storage # must match the volume name, abovemountPath: "/storage"
---
apiVersion: v1
kind: Service
metadata:namespace: sscs-devname: minio-servicespec:type: NodePortports:- name: dataport: 9000targetPort: 9000protocol: TCPnodePort: 31955- name: consoleport: 5000targetPort: 5000protocol: TCPnodePort: 32108selector:app: minio

注意事项:
要添加--console-address ":5000"命令参数来固定控制台端口,否则页面会无法访问。

1.3 步骤

1.3.1 创建资源

执行命令:kubectl apply -f minio.yaml

1.3.2 查看启动日志

kubectl get pod -n sscs-dev | grep minio查看pod运行状态,正常:
在这里插入图片描述
kubectl logs -f minio-deployment-54648b586-kxcbn -n sscs-dev查看pod运行日志:
在这里插入图片描述
根据日志可获取以下信息:

  1. api端口9000,控制台端口5000
  2. 控制台端口5000,说明命令参数--console-address ":5000"生效。

1.3.3 查看svc并访问控制台

执行命令:kubectl get svc -n sscs-dev | grep minio
在这里插入图片描述
yaml中使用的svc是nodePort类型,可以看到以上控制台5000端口映射主机32108端口,则访问地址为: 服务器ip:32108
在这里插入图片描述

出现以上页面表示成功

二、docker部署minio-client

参考文章:
https://blog.csdn.net/weixin_45821811/article/details/119116172

2.1 查找镜像

执行命令docker search minio/mc
在这里插入图片描述

2.2 运行镜像

执行命令: docker run -it --entrypoint=/bin/sh minio/mc
参数说明:
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

注意:
启动容器时要加上参数:-it --entrypoint=/bin/sh,启动后自动进入容器终端,否则容器一启动就会退出。

2.3 绑定minio server

  1. 执行完容器启动命令: docker run -it --entrypoint=/bin/sh minio/mc之后,会自动进入容器终端。
  2. 此时在容器内部执行命令绑定minio server: mc config host add minio http://132.1xx.xx.5:31955
说明:
mc config host add minio http://132.1xx.xx.5:31955
minio 为别名,可自定义
http://132.1xx.xx.5:31955 为minio服务部署的ip和api映射的主机端口,1.3.3 中可查看api端口9000映射的主机端口
  1. 命令行会要求输入access keysecret key(参考minio.yaml中配置的值)
    在这里插入图片描述
    至此minio-client部署完成,可以使用相关命令来直接操作minio server

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/199089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【java】toString() 导致的 StackOverflowError 异常

这是怎么导致的呢? A 类属性包含着 B 类的引用 B 类属性包含着 A 类的引用 代码大概就是这样的: Data public class User{public String name;public Dog dog; }Data public class Dog{public String name;public User user; }User user new User()…

【C++】简单的C++程序编译

一、简单的C程序 //prog.cc int main() {return 0; }二、编译 1. win11命令终端 cc prog.cc 2. win11 Visual Studio命令终端 cl /EHsc /W4 prog.cc 3. GNU编译器 g -Wall -o prog prog.cc 三、运行 1.win11 prog 2.Unix/Linux ./prog 四、查看返回值 1.win11 路…

【FreeRTOS】消息队列——简介、常用API函数、注意事项、项目实现

在嵌入式系统开发中,任务间的通信是非常常见的需求。FreeRTOS提供了多种任务间通信的机制,其中之一就是消息队列。消息队列是一种非常灵活和高效的方式,用于在不同的任务之间传递数据。通过消息队列,任务可以异步地发送和接收消息…

西安安泰Aigtek——ATA-8152射频功率放大器

ATA-8152射频功率放大器简介 ATA-8152是一款射频功率放大器。其P1dB输出功率100W,饱和输出功率200W。增益数控可调,一键保存设置,提供了方便简洁的操作选择,可与主流的信号发生器配套使用,实现射频信号的放大。宽范围供…

Java-内部类

目录 概述 类的五大成员 定义 使用场景 访问特点 分类 成员内部类 如何书写 如何创建对象 变量重名时,内部类访问变量的内存图 静态内部类 局部内部类 匿名内部类 概述 类的五大成员 属性、方法、构造方法、代码块、内部类 定义 在一个类里面再定义…

LeetCode-478. 在圆内随机生成点【几何 数学 拒绝采样 随机化】

LeetCode-478. 在圆内随机生成点【几何 数学 拒绝采样 随机化】 题目描述:解题思路一:一个最简单的方法就是在一个正方形内生成随机采样的点,然后拒绝不在内切圆中的采样点。解题思路二:具体思想是先生成一个0到r的随机数len&…

软件测试要学习的基础知识——黑盒测试

黑盒测试概述 黑盒测试也叫功能测试,通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作是一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,对程序接口进行测试,只检查程序功能是否按照…

Mac电脑如何安装git

一、简介 在Mac上安装Git之前,可以先使用git --version来查看一下是否安装了Git,因为Mac系统可能自带了Git,或者在你安装XCode(或者XCode的命令行工具)时,可能已经安装了 Git。 如果Mac还没有安装Git的话&…

一篇吃透大厂面试题,2024找工作一帆风顺。

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

二叉树链式结构

1.前置说明 我们手动构建一棵二叉树: 注意:上述代码并不是创建二叉树的方式 从概念中可以看出,二叉树定义是递归式的,因此后序基本操作中基本都是按照该概念实现的 2.二叉树的遍历 2.1前序、中序以及后序遍历 学习二叉树结构&a…

库函数qsort的使用及利用冒泡排序模拟实现qsort

文章目录 🚀前言🚀void*类型指针🚀库函数qsort的使用🚀利用冒泡排序实现库函数qsort() 🚀前言 今天阿辉将为大家介绍库函数qsort的使用,还包括利用冒泡排序模拟实现qsort以及void*类型的指针,关…

数据结构与算法之美学习笔记:31 | 深度和广度优先搜索:如何找出社交网络中的三度好友关系?

目录 前言什么是“搜索”算法?广度优先搜索(BFS)深度优先搜索(DFS)解答开篇内容小结 前言 本节课程思维导图: 社交网络中,有一个六度分割理论,具体是说,你与世界上的另一…

Web安全-初识SQL注入(一)

1、初识SQL注入 1.1、什么是注入? 将不受信任的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、NoSQL注入、OS 注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预期命令或访问数据。 注入能导…

mysql有哪些锁,理解各种表锁和行锁

全局锁 主要用于数据库的备份,但会使得备份期间不能有任何事务插入删除更新数据,这很影响实际业务。所以通常不用这个全局锁来完成数据库的备份。假设数据库的存储引擎支持可重复读,那么常见的方法是通过MVCC来实现的,也就是备份…

解决ant-design-vue中Select组件v-model值为空字符串不显示placeholder的bug

方法一: 1.找到node_modules/ant-design-vue/es/vc-select/SingleSelector.js文件 搜索renderPlacehoder方法 将其修改为 const renderPlacehoder () > {const list props.values.filter(val > val.value ! );if (list[0]) {return null}... }2.在此文件中…

ROS2教程05 ROS2服务

ROS2服务 版权信息 Copyright 2023 Herman YeAuromix. All rights reserved.This course and all of its associated content, including but not limited to text, images, videos, and any other materials, are protected by copyright law. The author holds all right…

Dockerfile脚本编写流程及示例

学习dockerfile指令 Dockerfile 指令 说明 FROM 指定基础镜像 MAINTAINER 声明镜像的维护者 LABEL 添加元数据标签 RUN 在容器中执行命令 CMD 容器启动后默认执行的命令 EXPOSE 暴露容器的端口 ENV 设置环境变量 ADD 将文件、目录或远程文件添加到容器中 COP…

Maxwell学习笔记

1 概述 Maxwell 是由美国 Zendesk 开源,用 Java 编写的 MySQL 实时抓取软件。 实时读取MySQL 二进制日志 Binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台…

InnoDB的锁

自增锁 自增锁是一种特殊的表级别锁(table-level lock),专门针对事务插入 AUTO_INCREMENT 类型的列。最简单的情况,如果一个事务正在往表中插入记录,所有其他事务的插入必须等待,以便第一个事务插入的行&a…

arcgis投影栅格不可用

1、使用【投影栅格】工具进行栅格数据投影转换时报错。 解决方法:如果使用的是arcgis10.5及以下的版本,则需要更换更高的版本,因为这个是软件问题,需要更换到arcgis10.6及以上版本,更高级别的版本已经修复了这个问题。…