k8s集群中使用GlusterFS存储

KubeSphere 部署的 (k8s)Kubernetes 集群使用 GlusterFS 存储实战入门 上一期实战课程,我们模拟真实的生产环境实战演示了如何使用 KubeKey 将新增 Worker 节点添加到已有的 Kubernetes 集群。最终我们部署完成了一套 3 Master 和 3 Worker 节点的 Kubernetes 集群。本期实战课程,我们将实战如何在上安装部署 GlusterFS、Hekeiti 以及 Kubernetes 使用模式对接 GlusterFS 做为集群的后端存储。 阅读详情

glusterfs在k8s集群中快速搭建的方法:

https://github.com/kubernetes-retired/external-storage/tree/master/gluster/glusterfs

 

前提:需要k8s集群,至少需要2个node节点

本示例使用的k8s版本为1.18

 

安装使用

1. 给每个node节点添加标记

$ kubectl label nodes <storage-node-name> storagenode=glusterfs

 

2.安装GlusterFS DaemonSet

yaml地址:https://github.com/kubernetes-retired/external-storage/blob/master/gluster/glusterfs/deploy/glusterfs-daemonset.yaml

 

1.18版本需要将apiVersion改为apps/v1

spec加上selector便签

参考示例:glusterfs-daemonset.yaml

kind: DaemonSet
apiVersion: apps/v1
metadata:
  name: glusterfs
  labels:
    glusterfs: daemonset
  annotations:
    description: GlusterFS DaemonSet
    tags: glusterfs
spec:
selector:
   matchLabels:
    glusterfs: pod
  template:
    metadata:
      name: glusterfs
      labels:
        glusterfs-node: pod
    spec:
      nodeSelector:
        storagenode: glusterfs
      hostNetwork: true
      containers:
      - image: gluster/gluster-centos:latest
        imagePullPolicy: IfNotPresent
        name: glusterfs
        volumeMounts:
        - name: glusterfs-heketi
          mountPath: "/var/lib/heketi"
        - name: glusterfs-run
          mountPath: "/run"
        - name: glusterfs-lvm
          mountPath: "/run/lvm"
        - name: glusterfs-etc
          mountPath: "/etc/glusterfs"
        - name: glusterfs-logs
          mountPath: "/var/log/glusterfs"
        - name: glusterfs-config
          mountPath: "/var/lib/glusterd"
        - name: glusterfs-dev
          mountPath: "/dev"
        - name: glusterfs-misc
          mountPath: "/var/lib/misc/glusterfsd"
        - name: glusterfs-cgroup
          mountPath: "/sys/fs/cgroup"
          readOnly: true
        - name: glusterfs-ssl
          mountPath: "/etc/ssl"
          readOnly: true
        securityContext:
          capabilities: {}
          privileged: true
        readinessProbe:
          timeoutSeconds: 3
          initialDelaySeconds: 40
          exec:
            command:
            - "/bin/bash"
            - "-c"
            - systemctl status glusterd.service
          periodSeconds: 25
          successThreshold: 1
          failureThreshold: 15
        livenessProbe:
          timeoutSeconds: 3
          initialDelaySeconds: 40
          exec:
            command:
            - "/bin/bash"
            - "-c"
            - systemctl status glusterd.service
          periodSeconds: 25
          successThreshold: 1
          failureThreshold: 15
      volumes:
      - name: glusterfs-heketi
        hostPath:
          path: "/var/lib/heketi"
      - name: glusterfs-run
      - name: glusterfs-lvm
        hostPath:
          path: "/run/lvm"
      - name: glusterfs-etc
        hostPath:
          path: "/etc/glusterfs"
      - name: glusterfs-logs
        hostPath:
          path: "/var/log/glusterfs"
      - name: glusterfs-config
        hostPath:
          path: "/var/lib/glusterd"
      - name: glusterfs-dev
        hostPath:
          path: "/dev"
      - name: glusterfs-misc
        hostPath:
          path: "/var/lib/misc/glusterfsd"
      - name: glusterfs-cgroup
        hostPath:
          path: "/sys/fs/cgroup"
      - name: glusterfs-ssl
        hostPath:
          path: "/etc/ssl"

$ kubectl create -f glusterfs-daemonset.yaml

创建glusterfs的daemonset

 

$ kubectl get pods  -l glusterfs=pod -o wide

 

3. 将节点添加到trusted pool

$ kubectl exec -ti glusterfs-drlgp gluster peer probe 192.168.20.165

$ kubectl exec -ti glusterfs-z5m4j gluster peer probe 192.168.20.45

 

4. RBAC权限(Kubernetes 1.8+)

Kubernetes 1.8+ provisioner访问k8s集群的API需要绑定一个ServiceAccount

 

rbac.yaml地址:

https://github.com/kubernetes-retired/external-storage/blob/master/gluster/glusterfs/deploy/rbac.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: glfs-provisioner
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: glfs-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", "pods/exec"]
    verbs: ["create", "update", "patch"]
  - apiGroups: [""]
    resources: ["endpoints"]
    verbs: ["get", "list", "watch", "create", "update", "patch"]
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources: ["services"]
    verbs: ["get", "list", "watch", "create", "delete", "update", "patch"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: run-glfs-provisioner
subjects:
  - kind: ServiceAccount
    name: glfs-provisioner
    namespace: default
# update namespace above to your namespace in order to make this work
roleRef:
  kind: ClusterRole
  name: glfs-provisioner-runner
  apiGroup: rbac.authorization.k8s.io

kubectl create -f rbac.yaml

 

5.创建StorageClass

storageclass.yaml

地址:

https://github.com/kubernetes-retired/external-storage/blob/master/gluster/glusterfs/deploy/storageclass.yaml

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: glusterfs-simple
provisioner: gluster.org/glusterfs-simple
parameters:
  forceCreate: "true"
  brickrootPaths: "192.168.20.165:/tmp/,192.168.20.45:/tmp"

$ kubectl create -f storageclass.yaml

 

6.创建pvc

pvc.yaml

pvc.yaml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: gluster-simple-claim
  annotations:
    volume.beta.kubernetes.io/storage-class: "glusterfs-simple"
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi

$ kubectl create -f pvc.yaml

 

$ kubectl get pv,pvc

 

感谢:

https://github.com/kubernetes-retired/external-storage/tree/master/gluster/glusterfs

https://opensource.ncsa.illinois.edu/confluence/display/~lambert8/GlusterFS+in+Kubernetes

https://github.com/gluster/gluster-kubernetes/tree/master/deploy/kube-templates

Kubernetes集群中GlusterFS的动态存储部署教程 Heketi的架构设计允许它作为GlusterFS存储卷的管理前端,为容器编排工具如Kubernetes提供了一个统一的API接口。在深入了解Heketi组件之前,让我们先来看看它的RESTful API的主要特点和功能:创建和删除存储卷:容器编排工具可以请求创建和删除存储卷。获取存储容量信息:查询特定GlusterFS集群的可用存储容量。访问控制:通过身份验证和授权机制控制API访问。状态和故障检测:持续监控存储卷状态,并提供故障检测。 阅读详情

相关推荐

望获实时Linux与国产芯片协同:打造LinuxCNC数控机床的全栈国产化方案

本文探讨了如何通过望获实时Linux与飞腾、龙芯等国产芯片的深度协同,为LinuxCNC数控机床打造全栈国产化方案。望获实时Linux通过中断隔离等核心技术,提供亚微秒级确定性响应,解决了传统Linux系统实时性不足的痛点,使LinuxCNC得以稳定驱动高精度机床。该方案实现了从硬件、操作系统到应用软件的全栈自主可控,为工业控制领域提供了高性能、可定制的国产化选择。

weixin_29291069的博客 648

使用GlusterFS作为Kubernetes的后端存储

用GlusterFS作为Kubernetes的存储 这里简单的介绍一下使用基于容器化的GlusterFS + heketi作kubernetes的后端存储的部署方式;对于GlusterFS的介绍这里就不多说了;部署过程主要参考:gluster-kubernetes 1、环境 [root@master-0 ~]# kubectl get nodes -o wide NAME STAT...

迷途的攻城狮 1885

云计算系统等保测评对象和指标选取

参考GBT22239-2019《基本要求》附录D 云计算应用场景说明。简要理解下图,主要是云计算系统安全保护责任分担原则和云服务模式适用性原则,指导后续的测评对象和指标选取。

ryanzzzzz的博客 4682

k8s教程(基础篇)-基本概念和术语

文章目录01 资源对象概述02 集群类2.1 Master2.2 Node2.3 命名空间03 应用类3.1 service和pod3.2 label与标签选择器3.3 Pod和Deployment3.4 Service和ClusterIp3.5 Service外网访问3.6 有状态的应用集群3.7 批处理应用3.8 应用的配置问题3.8.1 ConfigMap3.8.2 Secret04 存储类05 安全类 01 资源对象概述 Kubernetes 中的基本概念和术语大多是围绕 资源对象(Resource

阿甘兄 2548

【毕设课设】基于YOLO v3与LSTM的水位智能识别系统(附完整源码+数据集)

本文详细介绍了基于YOLO v3与LSTM的水位智能识别系统的完整实现方案。该系统通过YOLO v3精准定位水位尺数字,结合LSTM-OCR进行序列识别,并融合霍夫变换检测刻度线,实现高精度水位自动读取。项目提供了从环境搭建、模型训练到集成部署的全流程指南,并附有完整源码和数据集,是理想的毕设课设实战项目。

php55的博客 610

基于OpenCV的驾驶疲劳检测与预警系统设计

PERCLOS(Percentage of Eye Closure)是一种基于眼睑闭合程度的疲劳度量指标。在基于OpenCV的驾驶疲劳检测与预警系统设计中,PERCLOS可以用于检测驾驶员的眼睑闭合程度,以判断其是否疲劳。该函数用于检测视频流中人脸的疲劳程度。具体地,该函数通过检测人脸的眼睛和嘴巴的状态来评估人脸的疲劳程度。眼睛状态是通过计算眼睛的长宽比(eyear)来判断,如果长宽比小于某个阈值,则认为眼睛闭合,表示人处于疲劳状态。

2301_79810943的博客 2328

k8s (十三) --- Kubernetes 存储 之 动态 PV

一、StorageClass StorageClass提供了一种描述存储类(class)的方法,不同的class可能会映射到不同的服务质量等级和备份策略或其他策略等。 每个 StorageClass 都包含 provisioner、parameters 和 reclaimPolicy 字段, 这些字段会在StorageClass需要动态分配 PersistentVolume 时会使用到。 Stor...

qq_35887546的博客 1355

【论文复现】——基于NDT与ICP结合的点云配准算法(matlab版)

基于NDT与ICP结合的点云配准算法matlab版

点云侠的博客 490

云原生存储详解:容器存储与K8s存储卷

作者 | 阚俊宝 阿里云技术专家 导读:云原生存储详解系列文章将从云原生存储服务的概念、特点、需求、原理、使用及案例等方面,和大家一起探讨云原生存储技术新的机遇与挑战。本文为该系列文章的第二篇,会对容器存储的相关概念进行讲述,欢迎大家在留言区参与讨论。 相关文章推荐: 云原生存储详解:云原生应用的基石 云原生存储详解:容器存储与 K8s 存储卷 云原生存储的两个关键领域:Docker 存储卷、K8s 存储卷; Docker 存储卷:容器服务在单节点的存储组织形式,关注数据存储、容器运行..

阿里云云栖号 1766

智能硬件产品 App 全球发布 第 1 章:全球 App 发布战略设计

本章阐述智能硬件 App 全球发布战略,涵盖市场分析、竞争格局、用户画像及资源配置。通过制定可执行的全球化推广路径,整合地区法规合规、渠道分发策略与营销活动设计,助力团队快速进入主流商店并确立品牌影响力。同时构建可量化的 KPI 监控体系,指导项目进度追踪与效果复盘,确保产品迭代持续优化,降低运营总成本。

moton2017的博客 157

级联H桥构网型储能SVG系统设计与VSG控制策略研究

随着新能源渗透率不断提高,电力系统惯量和阻尼水平持续下降,传统跟网型控制策略在弱电网条件下的稳定性面临严峻挑战。构网型控制以电压源方式运行,能够为系统提供惯量和频率支撑,成为当前研究热点。本文针对10kV/10Mvar级联H桥构网型储能静止无功发生器(SVG),采用星形连接拓扑结构,设计了基于虚拟同步发电机(VSG)的构网型控制策略。文章从主电路拓扑设计、数学建模、VSG控制策略设计、调制策略、直流电压平衡控制、系统参数设计、仿真建模和硬件实现等八个方面展开系统论述,给出了完整的Simulink仿真模型~~

huanghm88的专栏 353

k8s使用glusterfs(静态供给、动态供给)、glusterfs的安装与使用

k8s使用glusterfs(静态供给、动态供给)、glusterfs的安装与使用

MssGuo的博客 5776

学Simulink--机器人基础关节控制场景实例:基于Simulink的无刷直流电机(BLDC)关节六步换相位置控制仿真

本文详细介绍了基于Simulink的BLDC六步换相位置控制仿真方法,针对机器人关节的低成本控制需求。重点阐述了霍尔定位、六步换相和位置闭环三大核心原理,通过Simulink建模实现了从霍尔信号处理到位置环控制的全流程。仿真结果表明,该系统可实现0.3°的定位精度和80ms的响应时间,满足教育机器人等应用场景需求。文章还提供了核心代码模块和参数设置方法,并探讨了转矩脉动抑制、无传感器控制等进阶优化方向,为低成本机器人关节驱动提供了实用解决方案。

amy_mhd的博客 154

Kubernetes 集群存储解决方案:GlusterFS 深度解析

本文介绍了在Kubernetes集群中部署GlusterFS分布式存储系统的方案。GlusterFS作为开源分布式文件系统,支持PB级存储和横向扩展,通过Heketi实现卷管理。环境包括3节点k8s集群(v1.21.10)和3节点GlusterFS集群(各100G硬盘)。部署步骤涵盖主机配置(IP、免密登录、硬盘格式化挂载)、安全设置(关闭防火墙和SELinux),并借助Heketi的RESTful API实现与k8s的集成,确保存储副本均匀分布。

qq_62935472的博客 1006

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

k8s集群存储解决方案 GlusterFS

GlusterFS是一个开源的分布式文件系统具有强大的横向扩展能力通过扩展能够支持数PB存储容量和处理数千客户端GlusterFS 借助 TCP/IP 或 InfiniBandRDMA 网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。

weixin_54720351的博客 2732

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

kubernetes动态存储之glusterfs集群(heketi)

kubernetes存储类资源的详细实现过程

taonihou_的博客 1373

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

通过Heketi管理GlusterFS为K8S集群提供持久化存储

参考文档: Github project:https://github.com/heketi/heketi MANAGING VOLUMES USING HEKETI:https://access.redhat.com/documentation/en-us/red_hat_...

chufeichen0521的博客 814

Kubernetes存储之Heketi管理GlusterFS

Kubernetes存储之Heketi管理GlusterFS GlusterFS是一个可扩展,分布式文件系统,集成来自多台服务器上的磁盘存储资源到单一全局命名空间,以提供共享文件存储 特点: 可以扩展到几PB容量 支持处理数千个客户端 兼容POSIX接口 使用通用硬件,普通服务器即可构建 能够使用支持扩展属性的文件系统,例如ext4,XFS 支持...

weixin_44949973的博客 2138

Kubernetes - - k8s - v1.12.3 动态存储管理GlusterFS及使用Heketi扩容GlusterFS集群

1,准备工作 1.1 所有节点安装GFS客户端 yum install glusterfs glusterfs-fuse -y 1.2 如果不是所有节点要部署GFS管理服务,就在需要部署的节点上打上标签 [root@k8s-master01 ~]# kubectl label node k8s-master01 storagenode=glusterfs node/k8s-master01 lab...

weixin_34152820的博客 1165

生产实践:使用 GlusterFS 搭建 Kubernetes 存储卷集群

在上一篇文章中,我们已经介绍了如何进行基于k8s做私有化部署。现在我们将重点讨论如何使用 GlusterFS 搭建一个可靠的存储解决方案,以供 Kubernetes 集群使用。

dweizhao的专栏 752

Kubernetes 集群使用 GlusterFS 作为数据持久化存储

Kubernetes 集群使用 GlusterFS 作为数据持久化存储

以梦为马|越骑越傻 668

二进制安装centos7安装glusterfs集群为kubernetes提供持久化存储,并作为kubesphere的默认存储

本次操作基于centos7,其它centos版本请参考: SpecialInterestGroup/Storage/gluster-Quickstart - CentOS Wikihttps://wiki.centos.org/SpecialInterestGroup/Storage/gluster-Quickstart 一、准备工作: 1、准备四台centos7的系统 我用的系统版本是centos7.6,除了k8s-master之外的节点都挂载一块硬盘,不要分区格式化。 主机ip 主机名

myitsite的博客 1749

云原生存储选型:Ceph、GlusterFS 与 Longhorn 在 K8s 集群中的性能测试对比

IOPS:衡量随机读写能力,公式为 $ \text{IOPS} = \frac{\text{请求数}}{\text{时间}} $,单位通常是千次/秒(kIOPS)。吞吐量:衡量顺序读写速度,公式为 $ \text{吞吐量} = \frac{\text{数据量}}{\text{时间}} $,单位常为 MB/s 或 GB/s。延迟:衡量请求响应时间,公式为 $ \text{延迟} = t_{\text{end}} - t_{\text{start}} $,单位常为毫秒(ms)。可扩展性。

gshjvklkl的博客 609

使用GlusterFS和kubernetes部署PostgreSQL

k8s学习官网:k8s中文文档 使用基于浏览器的交互式场景学习Kubernetes:https://www.katacoda.com/courses/kubernetes 容器学习:https://developer.ibm.com/zh/series/kubernetes-learning-path/ 0.前提:搭建GlusterFS集群参考文章:K8S中使用glusterfs 1.拉PostgreSQL image $ docker pull postgres:12.1 2.创建Gluster En

supergirlll的博客 476
上一篇: k8s集群namespace和context使用
下一篇: k8s 资源限制——Limits和Requests使用
思维的深度
博客等级 码龄11年 2万+粉丝 391原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值