news 2026/6/10 4:36:35

Kubernete部署新一代rustfs文件服务

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Kubernete部署新一代rustfs文件服务
# rustfs-deployment.yaml# RustFS Kubernetes 部署配置# 1. DeploymentapiVersion: apps/v1 kind: Deployment metadata: name: rustfs-deployment labels: app: rustfs spec: replicas:1selector: matchLabels: app: rustfs template: metadata: labels: app: rustfs spec: containers: - name: rustfs image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/rustfs:latest imagePullPolicy: IfNotPresent ports: - containerPort:9000name: api protocol: TCP - containerPort:9001name: console protocol: TCP env: - name: RUSTFS_ACCESS_KEY valueFrom: secretKeyRef: name: rustfs-secrets key: RUSTFS_ACCESS_KEY - name: RUSTFS_SECRET_KEY valueFrom: secretKeyRef: name: rustfs-secrets key: RUSTFS_SECRET_KEY - name: TZ value:"Asia/Shanghai"- name: RUSTFS_SERVER_URL value:"http://rustfs-service:9000"volumeMounts: - name: rustfs-data mountPath: /data - name: rustfs-config mountPath: /root/.rustfs resources: limits: cpu:"1"memory:"2Gi"requests: cpu:"0.5"memory:"1Gi"readinessProbe: tcpSocket: port:9000initialDelaySeconds:30periodSeconds:10timeoutSeconds:5livenessProbe: tcpSocket: port:9000initialDelaySeconds:30periodSeconds:30timeoutSeconds:5securityContext: runAsUser:1000runAsGroup:1000volumes: - name: rustfs-data persistentVolumeClaim: claimName: rustfs-pvc - name: rustfs-config persistentVolumeClaim: claimName: rustfs-config-pvc restartPolicy: Always terminationGracePeriodSeconds:30---# 2. ServiceapiVersion: v1 kind: Service metadata: name: rustfs-service labels: app: rustfs spec: selector: app: rustfs ports: - name: api protocol: TCP port:9000targetPort:9000nodePort:32090- name: console protocol: TCP port:9001targetPort:9001nodePort:32091type: NodePort sessionAffinity: None externalTrafficPolicy: Cluster ---# 3. PersistentVolume - 数据存储apiVersion: v1 kind: PersistentVolume metadata: name: rustfs-pv spec: capacity: storage: 100Gi accessModes: - ReadWriteOnce hostPath: path: /data/rustfs/data type: DirectoryOrCreate persistentVolumeReclaimPolicy: Retain storageClassName: manual ---# 4. PersistentVolumeClaim - 数据存储apiVersion: v1 kind: PersistentVolumeClaim metadata: name: rustfs-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 100Gi storageClassName: manual ---# 5. PersistentVolume - 配置存储apiVersion: v1 kind: PersistentVolume metadata: name: rustfs-config-pv spec: capacity: storage: 10Gi accessModes: - ReadWriteOnce hostPath: path: /data/rustfs/config type: DirectoryOrCreate persistentVolumeReclaimPolicy: Retain storageClassName: manual ---# 6. PersistentVolumeClaim - 配置存储apiVersion: v1 kind: PersistentVolumeClaim metadata: name: rustfs-config-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: manual
#!/bin/bash# deploy-rustfs.shset-eecho"=== RustFS Kubernetes 部署 ==="# 配置参数RUSTFS_DATA_DIR="/data/rustfs"RUSTFS_KEYS_FILE="$RUSTFS_DATA_DIR/.rustfs-keys"# 1. 生成安全密钥echo"1. 生成安全密钥..."ACCESS_KEY=$(openssl rand -base6432|tr-dc'a-zA-Z0-9'|head-c20)SECRET_KEY=$(openssl rand -base6432|tr-dc'a-zA-Z0-9'|head-c40)echo"Access Key:$ACCESS_KEY"echo"Secret Key:$SECRET_KEY"# 保存密钥到文件echo"2. 保存密钥到文件..."mkdir-p"$RUSTFS_DATA_DIR"cat>"$RUSTFS_KEYS_FILE"<<EOF # RustFS 密钥文件 # 生成时间:$(date)RUSTFS_ACCESS_KEY=$ACCESS_KEYRUSTFS_SECRET_KEY=$SECRET_KEYEOFchmod600"$RUSTFS_KEYS_FILE"echo"密钥已保存到:$RUSTFS_KEYS_FILE"# 2. 创建 Kubernetes Secretecho"3. 创建 Kubernetes Secret..."kubectl create secret generic rustfs-secrets\--from-literal=RUSTFS_ACCESS_KEY="$ACCESS_KEY"\--from-literal=RUSTFS_SECRET_KEY="$SECRET_KEY"\--dry-run=client -o yaml|kubectl apply -f -echo"✅ Secret 创建成功"# 3. 创建数据目录并设置权限echo"4. 创建数据目录..."sudomkdir-p"$RUSTFS_DATA_DIR/data"sudomkdir-p"$RUSTFS_DATA_DIR/config"# 设置目录权限(容器内用户通常是 UID 1000)echo"设置目录权限..."sudochown-R1000:1000"$RUSTFS_DATA_DIR"sudochmod-R755"$RUSTFS_DATA_DIR"echo"目录结构:"ls-la"$RUSTFS_DATA_DIR/"# 4. 部署 YAML 文件echo"5. 部署 RustFS..."kubectl apply -f rustfs-deployment.yaml# 5. 等待并验证部署echo"6. 等待 Pod 启动..."foriin{1..30};doPOD_STATUS=$(kubectl get pods -lapp=rustfs -ojsonpath='{.items[0].status.phase}'2>/dev/null||echo"Unknown")if["$POD_STATUS"="Running"];thenecho"✅ Pod 已进入 Running 状态"breakfiif[$i-eq30];thenecho"⚠️ Pod 启动超时,当前状态:$POD_STATUS"elseecho"等待 Pod 启动... ($i/30) - 当前状态:$POD_STATUS"sleep5fidone# 6. 显示部署结果echo""echo"=== 部署结果 ==="echo"Deployment:"kubectl get deployment rustfs-deploymentecho""echo"Service:"kubectl getservicerustfs-serviceecho""echo"Pods:"kubectl get pods -lapp=rustfsecho""echo"PVC:"kubectl get pvc rustfs-pvc rustfs-config-pvcecho""echo"PV:"kubectl getpvrustfs-pv rustfs-config-pv# 获取 Pod 名称和日志POD_NAME=$(kubectl get pods -lapp=rustfs -ojsonpath='{.items[0].metadata.name}'2>/dev/null||echo"未找到")if["$POD_NAME"!="未找到"];thenecho""echo"Pod 日志 (最后10行):"kubectl logs --tail=10"$POD_NAME"fi# 获取节点 IPNODE_IP=$(kubectl get nodes -ojsonpath='{.items[0].status.addresses[?(@.type=="InternalIP")].address}'2>/dev/null)if[-z"$NODE_IP"];thenNODE_IP="<节点IP>"fiecho""echo"=== 部署完成 ==="echo"📊 服务信息:"echo" Access Key:$ACCESS_KEY"echo" Secret Key:$SECRET_KEY"echo" API端点: http://$NODE_IP:32090"echo" 控制台: http://$NODE_IP:32091"echo" 内部服务: rustfs-service.default.svc.cluster.local:9000"echo""echo"📁 数据目录:"echo" 数据存储:$RUSTFS_DATA_DIR/data"echo" 配置存储:$RUSTFS_DATA_DIR/config"echo" 密钥文件:$RUSTFS_KEYS_FILE"echo""echo"🔧 管理命令:"echo" 查看状态: kubectl get deployment rustfs-deployment"echo" 查看服务: kubectl get service rustfs-service"echo" 查看日志: kubectl logs -f deployment/rustfs-deployment"echo" 进入容器: kubectl exec -it deployment/rustfs-deployment -- sh"echo" 重启服务: kubectl rollout restart deployment rustfs-deployment"echo""echo"🗑️ 卸载命令:"echo" kubectl delete -f rustfs-deployment.yaml"echo" kubectl delete secret rustfs-secrets"echo""echo"⚠️ 重要提示:"echo" 1. 请妥善保管密钥文件:$RUSTFS_KEYS_FILE"echo" 2. 确保防火墙允许端口 32090 和 32091"echo" 3. 数据存储在:$RUSTFS_DATA_DIR/data"
# 1. 保存文件vimrustfs-deployment.yamlvimdeploy-rustfs.shchmod+x deploy-rustfs.sh# 2. 执行部署./deploy-rustfs.sh# 3. 验证部署kubectl get all -lapp=rustfs# 4. 测试连接curlhttp://<节点IP>:32090

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 3:15:08

PaddlePaddle镜像支持模型灰盒测试,平衡效率与安全性

PaddlePaddle镜像支持模型灰盒测试&#xff0c;平衡效率与安全性 在AI系统日益深入金融、医疗、政务等关键行业的今天&#xff0c;一个现实问题摆在开发者面前&#xff1a;如何在不暴露核心模型资产的前提下&#xff0c;有效验证其行为是否符合预期&#xff1f;传统的黑盒测试只…

作者头像 李华
网站建设 2026/5/23 12:03:06

支付宝和微信收款码二合一HTML源码

源码介绍&#xff1a;支付宝和微信收款码二合一 HTML 源码&#xff0c;页面也简单就一个纯 HTML 页&#xff0c;通过二维码的纠错机制, 即使有一部分二维码被覆盖, 也能正确解析.微信识别二维码偏向于从左到右识别&#xff0c;支付宝不搭理微信的链接 wxp://xxxx&#xff0c;其…

作者头像 李华
网站建设 2026/6/4 20:14:29

KaiGe个人数据检测系统(Q绑)

源码介绍&#xff1a;本地测试了下&#xff0c;仅是程序&#xff0c;不带数据检测的接口&#xff08;或者带的接口不能查询&#xff09;测试了自己的qq和其他东西&#xff0c;未能检测到什么东西&#xff0c;仅供学习研究之用&#xff0c;请勿其他用途&#xff0c;使用过程中产…

作者头像 李华
网站建设 2026/6/6 14:49:32

UDS 27服务不同安全等级的仿真策略(CANoe平台)

UDS 27服务多安全等级仿真实战&#xff1a;在CANoe中构建高保真ECU安全验证环境一个诊断工程师的真实困境你正在开发一款域控制器的刷写工具&#xff0c;测试阶段却发现——每次尝试进入“安全模式”时&#xff0c;ECU总是返回NRC 0x35 (Invalid Key)。日志显示Key计算流程没错…

作者头像 李华
网站建设 2026/5/12 5:58:12

PartCrafter:AI 3D建模新革命,让创意触手可及

PartCrafter&#xff1a;AI 3D建模新革命&#xff0c;让创意触手可及 【免费下载链接】PartCrafter PartCrafter: Structured 3D Mesh Generation via Compositional Latent Diffusion Transformers 项目地址: https://gitcode.com/gh_mirrors/pa/PartCrafter 还在为复杂…

作者头像 李华
网站建设 2026/5/31 11:01:18

django基于Python的电商用户购买行为数据分析系统设计与实现

背景分析电商行业快速发展&#xff0c;用户行为数据呈指数级增长。传统数据分析方法难以处理海量、高维的电商数据&#xff0c;导致用户画像模糊、营销策略精准度不足。Python生态中的Django框架因其高效开发能力和丰富的数据处理库&#xff08;如Pandas、NumPy&#xff09;&am…

作者头像 李华