Nomad 系列-安装

news2024/11/23 8:34:17

系列文章

  • Nomad 系列文章

Nomad 简介

开新坑!近期算是把自己的家庭实验室环境初步搞好了,终于可以开始进入正题研究了。

首先开始的是 HashiCorp Nomad 系列,欢迎阅读。

关于 Nomad 的简介,之前在 大规模 IoT 边缘容器集群管理的几种架构-2-HashiCorp 解决方案 Nomad 有提到过,这里再快速过一遍:

Nomad: 一个简单而灵活的(主要是容器,但有不至于容器的)调度器和编排器,可在内部和云端大规模部署和管理容器和非容器化的应用程序

Nomad 使开发者能够使用声明式的基础设施即代码来部署应用程序。Nomad 使用 bin packing 来有效地安排工作并优化资源利用。

Nomad 凭借其简单性、灵活性可扩展性高性能与相关工具区分开来。Nomad 的协同作用和整合点 HashiCorp Terraform、Consul 和 Vault 使其特别适合轻松集成到 组织的现有工作流程,最大限度地减少关键计划的上市时间。

Nomad UI

Nomad 一些特性

  • Nomad 与 Consul 及 K8s 略有不同,它将基础设施划分为由一个 Nomad 服务器集群服务的区域,但可以管理多个数据中心或可用性区域。
  • Nomad 客户端到其服务器的延迟可能超过 100 毫秒。这允许具有一组 Nomad 服务器,所述 Nomad 服务器在具有单个“全球”区域和多个数据中心的情况下服务可以在地理上分布在一个大陆甚至世界上的所有客户端。

Nomad 安装

Nomad 是一个预编译的二进制文件,也可以作为几个操作系统的包。这次我们通过包管理器来安装。

以 Ubuntu/Deiban 为例:

前提条件

  • root 权限
  • IPtables 功能完整
  • Docker 已安装

🐾Warning

请注意,如果您在 Linux 上运行 Nomad,则需要以 root 身份(或使用 sudo )运行客户端 Agent,以便 cpuset accounting 和网络名称空间正常工作。

通过 APT 安装

首先安装所需的软件包:

sudo apt-get update && \
  sudo apt-get install wget gpg coreutils

其次添加 HashiCorp GPG 密钥:

wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg

添加官方 HashiCorp Linux 存储库:

echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list

更新并安装:

sudo apt-get update && sudo apt-get install nomad

通过 APT 安装,Nomad 会自动配置为 systemd 服务。可以设置为自启动:

sudo systemctl enable nomad

安装后步骤 - 安装 CNI 插件

这些步骤被认为是可选的,但对于运行 Nomad 和利用其他 Nomad 功能很有帮助。

当使用 bridge 网络模式时,Nomad 使用 CNI 插件配置网络名称空间。所有使用网络命名空间的 Linux Nomad 客户端节点都必须安装 CNI 插件。

以下命令安装 CNI 参考插件:

curl -L -o cni-plugins.tgz "https://github.com/containernetworking/plugins/releases/download/v1.3.0/cni-plugins-linux-$( [ $(uname -m) = aarch64 ] && echo arm64 || echo amd64)"-v1.3.0.tgz && \
  sudo mkdir -p /opt/cni/bin && \
  sudo tar -C /opt/cni/bin -xzf cni-plugins.tgz

确保 Linux 操作系统发行版已配置为允许通过网桥网络的容器流量通过 iptables 进行路由。这些可调参数可按如下方式设置:

echo 1 | sudo tee /proc/sys/net/bridge/bridge-nf-call-arptables && \
  echo 1 | sudo tee /proc/sys/net/bridge/bridge-nf-call-ip6tables && \
  echo 1 | sudo tee /proc/sys/net/bridge/bridge-nf-call-iptables

要在启动客户端节点时保留这些设置,请将包含以下内容的文件添加到 /etc/sysctl.d/bridge.conf:

net.bridge.bridge-nf-call-arptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

验证安装

要验证 Nomad 是否正确安装,请尝试 nomad 命令:

$ nomad version
Nomad v1.6.1
BuildDate 2023-07-21T13:49:42Z
Revision 515895c7690cdc72278018dc5dc58aca41204ccc

配置

📝Notes

我们不以 dev 模式启动 nomad.

Nomad 分为 Nomad Server 和 Nomad Client. 此次安装为:

  • 1 个 Nomad Server(仅 Server, 同一节点不启动 Client)
  • 多个 Nomad Client

某些配置设置对于服务器和客户端 Nomad Agent 来说是通用的,而某些配置设置必须仅存在于其中一个或另一个上。

Nomad 通用配置

/etc/nomad.d/nomad.hcl 创建配置文件:

sudo mkdir --parents /etc/nomad.d
sudo chmod 700 /etc/nomad.d
sudo touch /etc/nomad.d/nomad.hcl

将此配置添加到 nomad.hcl 配置文件:

🐾Warning:

根据您的情况,将 datacenter 参数值替换为部署 Nomad 集群的数据中心的标识符。

datacenter = "dc1"
data_dir = "/opt/nomad"
  • datacenter -运行 Agent 的数据中心
  • data_dir - Agent 存储状态的数据目录

Server 配置

/etc/nomad.d/server.hcl 创建配置文件:

sudo touch /etc/nomad.d/server.hcl

将此配置添加到 server.hcl 配置文件:

🐾Warning:

将 bootstrap_expect 值替换为您正在部署的 Nomad 服务器数量;建议三到五个。 我这里是家庭实验室环境,1 个就够用了。

server {
  enabled = true
  bootstrap_expect = 1
}

server 节包含以下参数:

  • enabled -指定此 Agent 是否应以服务器模式运行。所有其他服务器选项取决于设置的此值。
  • bootstrap_expect -集群中预期的服务器数量。不提供此值,或者此值必须与群集中的服务器数量一致。

Client 配置

/etc/nomad.d/client.hcl 创建配置文件:

sudo touch /etc/nomad.d/client.hcl

将此配置添加到 client.hcl 配置文件:

client {
  enabled = true
  servers = ["192.168.2.1"]
}

client 节包含以下参数:

  • enabled -指定此 Agent 是否应在客户端模式下运行。所有其他客户端选项都取决于此值的设置。
  • servers - Nomad Servers 地址列表

🐾Warning:

该配置未进行安全加固。没有配置 ACL 以及 TLS.

启动

sudo systemctl start nomad
sudo systemctl status nomad
❯ sudo systemctl status nomad
● nomad.service - Nomad
   Loaded: loaded (/usr/lib/systemd/system/nomad.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2023-08-26 11:15:11 CST; 11h ago
     Docs: https://nomadproject.io/docs/
 Main PID: 1648 (nomad)
    Tasks: 13
   CGroup: /system.slice/nomad.service
           └─1648 /usr/bin/nomad agent -config /etc/nomad.d

至此 Nomad 的 Server 和 Client 启动完毕,可以通过 http://<server_ip>:4646 进行访问。如下:

Nomad UI Server

Nomad UI Clients

🎉🎉🎉

📚️参考文档

  • Installing Nomad for Production | Nomad | HashiCorp Developer

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.

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

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

相关文章

java IO流(二) 字符流 缓冲流 原始流与缓冲流性能分析

字符流 前面学习的字节流虽然可以读取文件中的字节数据&#xff0c;但是如果文件中有中文&#xff0c;使用字节流来读取&#xff0c;就有可能读到半个汉字的情况&#xff0c;这样会导致乱码。虽然使用读取全部字节的方法不会出现乱码&#xff0c;但是如果文件过大又不太合适。…

递归入门,例题详解,汉诺塔问题,全排列问题,整数划分问题,两数相加

问题一&#xff1a;阶乘 对于阶乘n!&#xff0c;也就是从1一直乘到n&#xff0c;我们可以很简单的使用一个for循环来解决这个问题&#xff0c;但是如果使用递归的思路&#xff0c;那么我们需要思考如果将当前的问题分解为规模更小的问题&#xff0c;对于n的阶乘&#xff0c;我…

论文解读 | KPConv——点云上的可形变卷积网络

原创 | 文 BFT机器人 《KPConv: Flexible and Deformable Convolution for Point Clouds》是一篇发表于2019年的研究论文&#xff0c;作者为Hugues Thomas、Charles R. Qi、Jean-Emmanuel Deschaud、Beatriz Marcotegui和Franois Goulette。这篇论文关注于点云数据上的卷积操作…

前置微小信号放大器是什么

前置微小信号放大器是一种专门用于放大微弱输入信号的电子设备。它常用于电子测量、信号传输、音频放大等领域&#xff0c;能够将微小的输入信号放大到足够大的幅度&#xff0c;以便后续处理或传输。下面我们将从工作原理、应用和发展趋势三个方面&#xff0c;详细探讨前置微小…

在国内PMP的含金量高吗?

首先我们需要了解一下PMP证书的用处 PMP含金量是毋庸置疑的&#xff0c;从事项目/产品/运营/管理/IT行业的社会人基本都会将这个证收入囊中。其他有升职涨薪计划的也在悄咪咪报考蓄力中&#xff0c;能在职业生涯锦上添花&#xff0c;精益求精。 一&#xff0c;PMP证书的优势体…

什么是安全运营中心(SOC),应该了解什么

安全运营中心&#xff08;SOC&#xff09; 是一种企业监视和警报设施&#xff0c;可帮助组织检测安全威胁、监视安全事件和分析性能数据以改进公司运营。 什么是安全运营中心&#xff08;SOC&#xff09; 安全运营中心&#xff08;SOC&#xff09;是一个中央监视和监视中心&a…

安装气象站的重要意义是什么?

气象站是一种用于观测、记录和报告天气数据的设备或系统。它通常包括各种传感器、供电系统和环境监控主机&#xff0c;用于测量和记录气温、湿度、风速、风向、气压、降雨量、雪深等气象参数。 气象站有多种类型&#xff0c;包括自动气象站、人工气象站和便携式气象站。自动气…

elementUI可拖拉宽度抽屉

1&#xff0c;需求&#xff1a; 在elementUI的抽屉基础上&#xff0c;添加可拖动侧边栏宽度的功能&#xff0c;实现效果如下&#xff1a; 2&#xff0c;在原组件上添加自定义命令 <el-drawer v-drawerDrag"left" :visible.sync"drawerVisible" direc…

【狂神】SpringMVC 怎样才能直接手动输入.jsp的页面就可以访问了?

看秦老师视频的时候&#xff0c;觉得非常疑惑&#xff0c;为什么可以直接输入form.jsp就能跳转到相应地页面。如果你和我一样眼瞎&#xff0c;那确实是有点崩溃。注意看&#xff1a; 发现了吗&#xff1f;这几个文件并没有放在WEB-INF文件下&#xff0c;所以视图解析器便不生效…

实用技巧:使用Python进行文本处理

引言 作为一个Linux持续学习者&#xff0c;我们经常需要处理文本文件&#xff0c;例如提取特定内容、格式化数据或者进行文本分析等。在这篇文章中&#xff0c;我将介绍使用Python进行文本处理的一些实用技巧&#xff0c;帮助你更有效地处理文本数据。无需担心&#xff0c;你不…

pdf可以编辑修改内容吗?看看这几种编辑方法

pdf可以编辑修改内容吗&#xff1f;PDF文件是一种广泛使用的文件格式&#xff0c;但是有时候我们需要对PDF文件进行编辑和修改。那么&#xff0c;PDF文件可以编辑修改内容吗&#xff1f;答案是肯定的。下面介绍几种编辑PDF文件的方法。 第一种方法是使用【迅捷PDF编辑器】。 这…

java JUC并发编程 第六章 CAS

系列文章目录 第一章 java JUC并发编程 Future: link 第二章 java JUC并发编程 多线程锁: link 第三章 java JUC并发编程 中断机制: link 第四章 java JUC并发编程 java内存模型JMM: link 第五章 java JUC并发编程 volatile与JMM: link 第六章 java JUC并发编程 CAS: link 文章…

Springboot上传文件

上传文件示例代码&#xff1a; ApiOperation("上传文件") PostMapping(value "/uploadFile", consumes MediaType.MULTIPART_FORM_DATA_VALUE) public ApiResult<String> uploadFile(RequestPart("file") MultipartFile file) { //调用七…

从0开始 yolov5可以用灰度图像进行训练和检测吗

yolov5可以用灰度图像进行训练吗,从0开始yolov5灰度图训练和检测 文章目录 yolov5可以用灰度图像进行训练吗,从0开始yolov5灰度图训练和检测[toc]1 预演【表1-1 模型结构截取】 2 修改源码使可以灰度训练2.1 修改读取图片模式2.2 修改源码传参中的通道数2.3 运行train.py2.4 修…

java八股文面试[数据库]——BufferPool

Buffer Pool是MYSQL数据库中的一个重要的内存组件&#xff0c;介于外部系统和存储引擎之间的一个缓存区&#xff0c;针数据库的增删改查这些操作都是针对这个内存数据结构中的缓存数据执行的,在操作数据之前&#xff0c;都会将数据从磁盘加载到Buffer Pool中&#xff0c;操作完…

亚马逊店铺如何快速出单?

对于一个新开的亚马逊店铺而言&#xff0c;首先要做的就是想办法让自己的店铺快速出单&#xff0c;只有有订单了&#xff0c;才能够稳住局势&#xff0c;才能够让自己亚马逊店铺在市场上有立足的资本。 不过对于一个亚马逊店铺而言&#xff0c;要想做到快速出单是很难的&#…

一文读懂GPU显卡的10个重要参数

在当今的高性能计算机世界中&#xff0c;GPU显卡的性能至关重要。这一领域的快速发展&#xff0c;使得图形渲染、游戏体验、视频编辑等高性能计算任务变得更加高效和流畅。正因如此&#xff0c;选择一款合适的GPU显卡变得越来越重要。在挑选GPU显卡时&#xff0c;了解其关键参数…

uni-app:实现右侧弹窗

效果&#xff1a; 代码&#xff1a; <template><view class"container"><button click"showModal true">点击按钮</button><view class"modal-overlay" v-if"showModal" click"closeModal">…

没有软件怎么管理固定资产

在当今数字化的世界中&#xff0c;我们已经习惯了使用各种软件来管理我们的日常生活和工作。然而&#xff0c;当我们面临一个看似简单的问题——如何管理固定资产时&#xff0c;我们可能会感到困惑。那么&#xff0c;如果没有软件&#xff0c;我们该如何进行资产管理呢&#xf…

QT C++ 基于TCP通信的网络聊天室

一、基本原理及流程 1&#xff09;知识回顾&#xff08;C语言中的TCP流程&#xff09; 2&#xff09;QT中的服务器端/客户端的操作流程 二、代码实现 1&#xff09;服务器 .ui .pro 在pro文件中添加network库 .h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>…