首页 > 其他分享 >kubernetes存储方案(一): Heketi+glusterfs

kubernetes存储方案(一): Heketi+glusterfs

时间:2023-09-04 10:25:12浏览次数:32  
标签:cli kubernetes -- gluster glusterfs adminkey heketi Heketi

环境介绍

主机名 ip 安装软件
gluster-server1 10.1.30.30 gluster-server, Heketi
gluster-server2 10.1.30.32 gluster gluster

安装 GlusterFS(所有节点)

配置 hosts 解析

cat >> /etc/hosts <<EOF
10.1.30.30    gluster-server1
10.1.30.32    gluster-server2
EOF

所有节点安装 glusterfs

# 安装最新版本的gluster软件仓库
yum install -y centos-release-gluster
 
# 安装 glusterfs 相关软件
yum install glusterfs glusterfs-server glusterfs-cli glusterfs-geo-replication glusterfs-rdma -y
 
# 启动 gluster 服务
systemctl enable --now glusterd.service

配置可信池

# 在 gluster-server1 上执行以下命令
gluster peer probe gluster-server2
 
# 查看可信池节点列表
gluster pool list
 
# 查看节点状态
gluster peer status

部署 Heketi (gluster-server1 上安装)

下载安装 Heketi

# 下载二进制包
wget https://github.com/heketi/heketi/releases/download/v10.4.0/heketi-v10.4.0-release-10.linux.amd64.tar.gz
 
# 创建安装目录
mkdir -p /usr/local/heketi/{bin,conf,data}
 
# 解压二进制包
tar xf heketi-v10.4.0-release-10.linux.amd64.tar.gz
 
# 拷贝文件
mv heketi/{heketi,heketi-cli} /usr/local/heketi/bin/
mv heketi/heketi.json /usr/local/heketi/conf/
 
# 创建免密登录
ssh-keygen -f /usr/local/heketi/conf/heketi_key -t rsa -N ''
 
ssh-copy-id -i /usr/local/heketi/conf/heketi_key.pub deployer@gluster-server1
ssh-copy-id -i /usr/local/heketi/conf/heketi_key.pub deployer@gluster-server2
 
# 修改配置文件
## 主要修改的地方有以下几个地方
 
"use_auth": true                  # 默认是 false, 这里改为 true
"jwt"."admin"."key": "adminkey"    # 添加一个 adminkey
"jwt"."user"."key": "userkey"      # 添加一个 userkey
"glusterfs"."executor": "ssh"      # 修改 exector 模式为 ssh
 
## 修改 ssh exector 相关配置
"sshexec": {
      "keyfile": "/usr/local/heketi/conf/heketi_key",
      "user": "deployer",
      "port": "22",
      "sudo": true,    # 由于 root 用户被禁止远程登录,所以需要使用 sudo
      "fstab": "/etc/fstab",
 
## 修改 db 配置
"db": "/usr/local/heketi/data/heketi.db",
 
## 删除以下配置,ssh 模块以及 kubernetes 模块都要删除
"xfs_sw": "Optional: Specify number of data disks in the underlying RAID device.",
"xfs_su": "Optional: Specifies a stripe unit or RAID chunk size.",
"gluster_cli_timeout": "Optional: Timeout, in seconds, passed to the gluster cli invocations",
 
# 创建 systemd 服务管理文件
cat > /usr/lib/systemd/system/heketi.service <<EOF
[Unit]
Description=RESTful based volume management framework for GlusterFS
Before=network-online.target
After=network-online.target
Documentation=https://github.com/heketi/heketi
 
[Service]
Type=simple
LimitNOFILE=65536
ExecStart=/usr/local/heketi/bin/heketi --config=/usr/local/heketi/conf/heketi.json
KillMode=process
Restart=on-failure
RestartSec=5
SuccessExitStatus=15
StandardOutput=syslog
StandardError=syslog
 
[Install]
WantedBy=multi-user.target
EOF
 
# 启动 Heketi
systemctl enable --now heketi.service
 
# 查看服务状态
systemctl status heketi.service
 
# 创建命令快捷方式
ln -s /usr/local/heketi/bin/heketi-cli /usr/local/bin/

管理 GlusterFS

# 创建集群
heketi-cli cluster create \
  --server=http://10.1.30.30:8080 \
  --user=admin \
  --secret=adminkey \
  --json
 
# 输出信息如下,主机其中的 id 为集群ID
{"id":"034f10398853b67682761d318f624d33","nodes":[],"volumes":[],"block":true,"file":true,"blockvolumes":[]}
 
# 将 GlusterFS 节点作为 node 添加到 cluster
 
heketi-cli node add \
  --cluster="034f10398853b67682761d318f624d33" \
  --management-host-name="gluster-server1" \
  --storage-host-name="10.1.30.30" \
  --user=admin \
  --secret=adminkey \
  --zone=1 \
  --json
 
 
heketi-cli node add \
  --cluster="034f10398853b67682761d318f624d33" \
  --management-host-name="gluster-server2" \
  --storage-host-name="10.1.30.32" \
  --user=admin \
  --secret=adminkey \
  --zone=1 \
  --json
 
 
# 查看节点信息
heketi-cli node list --user=admin --secret=adminkey

添加 Device

# 首先确保节点上有裸磁盘(未格式化文件系统的),如下面的 sdb
# lsblk -f
NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda                                                                               
├─sda1          xfs                         b2436d95-4d1f-4ead-95a4-a845a0eb4bd1   /boot
└─sda2          LVM2_member                 vAjm5R-RDpp-qW26-ifx6-OhMx-Z6Ep-os073F
  ├─centos-root ext4                        7d244150-ffee-4c51-a0a5-c9e57bc5f594   /
  └─centos-swap swap                        f3f341ad-40f7-4ba7-ad43-c87be91a39a8   [SWAP]
sdb                                                                               
sr0             iso9660     CentOS 7 x86_64 2019-09-11-19-02-53-00
 
# 执行以下命令添加 Device
heketi-cli device add --name="/dev/sdb" --node="203f32473c504e38a8bc135dd4d1c729" --user=admin --secret=adminkey
heketi-cli device add --name="/dev/sdb" --node="2187edc77262198616f98a00587d2081" --user=admin --secret=adminkey

创建 volume

# heketi-cli volume create --size=100 --replica=2 --user=admin --secret=adminkey
Name: vol_d20e9a92d61bab31b8daaf57c069a441
Size: 100
Volume Id: d20e9a92d61bab31b8daaf57c069a441
Cluster Id: 034f10398853b67682761d318f624d33
Mount: 10.1.30.30:vol_d20e9a92d61bab31b8daaf57c069a441
Mount Options: backup-volfile-servers=10.1.30.32
Block: false
Free Size: 0
Reserved Size: 0
Block Hosting Restriction: (none)
Block Volumes: []
Durability Type: replicate
Distribute Count: 1
Replica Count: 2

标签:cli,kubernetes,--,gluster,glusterfs,adminkey,heketi,Heketi
From: https://www.cnblogs.com/zoujiaojiao/p/17676234.html

相关文章

  • kubernetes存储方案(二):StorageClass的使用
    StorageClass介绍创建StorageClass#catstorageclass-glusterfs.yamlapiVersion:v1kind:Secretmetadata:name:heketi-secretnamespace:defaultdata:key:YWRtaW5rZXk=type:kubernetes.io/glusterfs---apiVersion:storage.k8s.io/v1beta1kind:Storag......
  • [kubernetes]服务健康检查
    前言进程在运行,但是不代表应用是正常的,对此pod提供的探针可用来检测容器内的应用是否正常。k8s对pod的健康状态可以通过三类探针来检查:LivenessProbe、ReadinessProbe和StartupProbe。健康检查探针LivenessProbe用于判断容器是否存活(Running状态),如果LivenessProbe探针检测到容......
  • 在Kubernetes(K8S)上安装和部署MySQL
    摘要:本文将介绍如何在Kubernetes(K8S)上安装和部署MySQL。我们将通过以下步骤实现这一目标:准备工作、安装MySQL、配置MySQL以及在K8S上部署MySQL。通过本文,您将了解如何使用K8S来管理MySQL的容器化部署,提高应用程序的性能、可靠性和安全性。一、引言MySQL是一种流行的关系型数据库,广......
  • Ubuntu 20.04 LTS 安装Kubernetes 1.26
     1、环境配置(1)添加主机名称解析记录cat>/etc/hosts<<EOF192.168.44.200master01master01.bypass.cn192.168.44.201node01node01.bypass.cn192.168.44.202node02node02.bypass.cnEOF(2)禁止K8s使用虚拟内存swapoff-ased-ri's@(.*swap.*)@#\1@g'......
  • Kubernetes运维-Pod调试
    调试pod最简单的方法是在有问题的pod中执行命令,并尝试排除故障。这种方法很简单,但有许多缺点。正在运行的应用pod可能没有排除现有问题所需的所有工具。如果想执行一些需要额外权限的操作,需要重新启动应用pod,以添加新的权限。在docker镜像中添加调试工具会引入安全风险,提升容器权限......
  • 让Kubernetes如虎添翼的16个工具
    在DevOps生态系统中,拥有出色的DevOps工具来减轻人为操作非常重要。每个DevOps阶段都可以使用大量的DevOps工具。如果您在DevOps领域中工作并在容器中运行应用程序,那么Kubernetes是必备工具之一。有数百种工具可与Kubernetes配合使用以添加更多功能。我说的是用于更好......
  • Runecast Analyzer 6.7 (VMware, AWS, Azure, Kubernetes) - 安全与合规性解决方案
    RunecastAnalyzer6.7(VMware,AWS,Azure,Kubernetes)-安全与合规性解决方案SecureandCompliantWorkloadsAnywhere请访问原文链接:https://sysin.org/blog/runecast/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org随时随地安全且合规的工作负载针对VMwar......
  • Kubernetes排错
    无法获取容器统计信息(Failedtogetsystemcontainerstats)查看日志报错如下[root@k8s-master~]#tail-f/var/log/messagesFailedtogetsystemcontainerstatsfor"/system.slice/docker.service":failedtogetcgroupstatsfor"/system.slice/docker.servic......
  • CoreDNS之光:Kubernetes中的服务发现策略
     原创 云原生百宝箱 云原生百宝箱 2023-08-2121:35 发表于河南收录于合集#Kubernetes21个#CNCF生态4个点击上方蓝字 ......
  • Kubernetes
    一、简介   k8s、Google开源。容器编排引擎。   k8s的目标是让部署容器化的应用简单且高效【powerful】,k8s提供应用部署,规划,更新,维护的一种机制。   支持自动化部署、大规模可伸缩。应用容器化管理。二、组成    一个k8s系统,通常称为一个k8s集群【......