Nomad 系列-Nomad 挂载存储卷
2023/9/8 21:22:57
本文主要是介绍Nomad 系列-Nomad 挂载存储卷,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
概述
显然,如果 Nomad 要运行有状态存储,那么挂载存储卷就是必备功能。
Nomad 允许用户通过多种方式将持久数据从本地或远程存储卷装载到任务环境中:
- 容器存储接口(CSI)插件
- Nomad 主机卷支持
- Docker Volume 驱动程序
默认没有安装 CSI 的情况下,主要使用的是 Nomad 主机卷 方式。
Nomad 的主机卷允许将 Nomad 客户端上的任何目录挂载到分配中。这些目录可以是客户机上的简单目录,但也可以是挂载文件系统,如 NFS 或 GlusterFS。然后可以将这些 mounts 连接到任务组中的各个任务。
Tailscale 挂载 socket
在后文中,Traefik 要通过 Tailscale 的 socket 和 Tailscale 通信以获取证书。那么我么也可以通过 Nomad 主机卷(只读)的方式将 socket 挂载到 Traefik 容器中。
Nomad 主机卷简介
Nomad 主机卷 (Host Volume) 可以管理 Nomad 集群内运行的有状态工作负载的存储。
Nomad 主机卷提供了一种与工作负载无关的方式来指定资源,可用于 Nomad 驱动程序,如 exec
、 java
和 docker
。
Nomad 主机卷使用步骤
创建主机目录
在集群中的 Nomad 客户端节点上,创建一个用于持久化 MySQL 数据的目录。对于本例,让我们创建目录 /opt/mysql/data
:
sudo mkdir -p /opt/mysql/data
配置 Nomad 客户端
编辑对应的 Nomad 客户端上的 Nomad 配置以创建主机卷。
将 host_volume
块添加到 Nomad 配置的 client
块:
host_volume "mysql" { path = "/opt/mysql/data" read_only = false }
保存,然后在此客户端上重新启动 Nomad 服务,以激活主机卷。在客户端上,您可以使用 nomad node status
命令验证主机卷是否已配置,如下所示:
$ nomad node status -short -self ID = 12937fa7 Name = ip-172-31-15-65 Class = <none> DC = dc1 Drain = false Eligibility = eligible Status = ready Host Volumes = mysql Drivers = docker,exec,java,mock_driver,raw_exec,rkt ...
Job 使用 Nomad 主机卷
以一个 MySQL Job - mysql.nomad.hcl
为例,示例如下:
job "mysql-server" { type = "service" group "mysql-server" { count = 1 volume "mysql" { type = "host" read_only = false source = "mysql" } task "mysql-server" { driver = "docker" volume_mount { volume = "mysql" destination = "/var/lib/mysql" read_only = false } env = { "MYSQL_ROOT_PASSWORD" = "password" } config { image = "hashicorp/mysql-portworx-demo:latest" ports = ["db"] } } network { port "db" { static = 3306 } } } }
具体说明如下:
volume "mysql" {
: 指定要使用的 volume, 类似于 K8s 中的 PV, 这里具体是:type = "host"
: Nomad Host Volume 类型read_only = false
: 非只读source = "mysql"
: source 是 Nomad Client 里配置的host_volume "mysql"
volume_mount {
: Docker Driver 中的volume_mount
块,指定挂载到容器中的具体路径,类似于 K8s 中的 PVC:volume = "mysql"
: 对应的volume
是上面的mysql
volumedestination = "/var/lib/mysql"
: 挂载到容器中的/var/lib/mysql
目录read_only = false
:volume_mount
块的read_only
配置
启动该 Job 即可使用 host volume:
nomad run mysql.nomad.hcl
完成🎉🎉🎉
总结
在本文中,使用客户端本地目录在 Nomad 客户端上配置了主机卷。我们创建了一个将此卷挂载到 Docker MySQL 容器的作业,并可以在主机卷中写入数据。并为后文 Nomad + Traefik + Tailscale 打下基础。
📚️参考文档
- Stateful Workloads with Nomad Host Volumes | Nomad | HashiCorp Developer
三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.
这篇关于Nomad 系列-Nomad 挂载存储卷的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23Fluss 写入数据湖实战
- 2024-12-22揭秘 Fluss:下一代流存储,带你走在实时分析的前沿(一)
- 2024-12-20DevOps与平台工程的区别和联系
- 2024-12-20从信息孤岛到数字孪生:一本面向企业的数字化转型实用指南
- 2024-12-20手把手教你轻松部署网站
- 2024-12-20服务器购买课程:新手入门全攻略
- 2024-12-20动态路由表学习:新手必读指南
- 2024-12-20服务器购买学习:新手指南与实操教程
- 2024-12-20动态路由表教程:新手入门指南
- 2024-12-20服务器购买教程:新手必读指南