k8s下部署ansible进行node-export二安装

下载node-exporter

https://github.com/prometheus/node_exporter/releases

下载ansible

https://github.com/ansible/ansible/releases

启动node-exporter service文件

node-exporter.service

[Unit]
Description=node_exporter
Requires=network.target remote-fs.target
After=network.target remote-fs.target[Service]
Type=simple
ExecStart=/usr/local/bin/node_exporter --web.listen-address=:9100
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=5s[Install]
WantedBy=multi-user.target

ansbile的hosts文件

[node-exporter]
192.168.56.123 ansible_ssh_port=22 ansible_ssh_user="root" ansible_ssh_pass="root" ansible_sudo_pass="root"
192.168.56.124 ansible_ssh_port=22 ansible_ssh_user="root" ansible_ssh_pass="root" ansible_sudo_pass="root"

远程普通用户若要使用 sudo 权限,需要在 /etc/ansible/ansible.cfg 进行配置,若远程是root用户则可跳过。

[privilege_escalation]
become=True
become_method=sudo

ansible的deploy文件

ansible-deploy.yaml

---
- hosts: node-exporterbecome: yestasks:- name: "Check if node-exporter is installed"command: systemctl status node-exporterregister: node_exporter_checkignore_errors: true- name: "Print node-exporter status"debug:msg: "Node exporter is {{ 'running' if 'active (running)' in node_exporter_check.stdout else 'not running' }}"- name: "Download and install node-exporter dir"block:- name: "copy node-exporter"copy:src: "{{item.src}}"dest: "{{item.dest}}"mode: 0755with_items:- {src: "{{ playbook_dir }}/node-exporter", dest: "/tmp/"}- name: "copy node-exporter"shell: sudo cp /tmp/node-exporter/node_exporter /usr/local/binnotify:- reload- name: "copy node-exporter.service"shell: sudo cp /tmp/node-exporter/node-exporter.service /usr/lib/systemd/system/notify:- reload- name: "start and enable server"shell: sudo systemctl start node-exporter.service && sudo systemctl enable node-exporter.servicewhen: node_exporter_check.rc != 0handlers:- name: reloadshell: sudo systemctl daemon-reload
---
- hosts: allbecome: yesserial: 30gather_facts: yes # 如果你遇到locale问题,可能需要先解决或者临时设置为noenvironment:LC_ALL: C  # 或者选择其他适合的值,比如 'en_US.UTF-8'LANG: C    # 确保与LC_ALL一致,避免冲突tasks:- name: "Check if node_exporter.service file exists"stat:path: /etc/systemd/system/node_exporter.serviceregister: node_exporter_file_check- name: "Check if node_exporter.service file exists"debug:msg: "node_exporter.service is exists."when: node_exporter_file_check.stat.exists- name: "Check if node_exporter.service file exists"shell: sudo systemctl disable node_exporter.service && sudo systemctl stop node_exporter.service && sudo rm -rf /etc/systemd/system/node_exporter.servicenotify:- reloadwhen: node_exporter_file_check.stat.exists- name: "Check if node-exporter is installed with node-exporter"command: systemctl status node-exporterregister: node_exporter_checkignore_errors: true- name: "Check if node-exporter is installed with node_exporter"command: systemctl status node_exporterregister: node_exporter_check_extignore_errors: true- name: "Print node-exporter status running"debug:msg: "Node exporter is {{ 'running' if ( 'active (running)' in node_exporter_check.stdout or 'active (running)' in node_exporter_check_ext.stdout ) else 'not running' }}"- name: "do install node-exporter"block:- name: "copy node-exporter"copy:src: "{{item.src}}"dest: "{{item.dest}}"mode: 0755with_items:- {src: "{{ playbook_dir }}/node-exporter", dest: "/tmp/"}- name: "copy node-exporter"shell: sudo cp /tmp/node-exporter/node_exporter /usr/local/binnotify:- reload- name: "copy node-exporter.service"shell: sudo cp /tmp/node-exporter/node-exporter.service /usr/lib/systemd/system/notify:- reload- name: "start and enable server"shell: sudo systemctl start node-exporter.service && sudo systemctl enable node-exporter.servicewhen: node_exporter_check.rc != 0 and node_exporter_check_ext.rc != 0handlers:- name: reloadshell: sudo systemctl daemon-reload

部署node-exporter

#!/bin/bash#SOURCE_FILE="/etc/ansible/hosts"
## 备份文件存放目录
#BACKUP_DIR="/etc/ansible/backup"
#
## 删除超过的天数
#DAYS=10
## 使用 find 查找并删除10天前的备份文件
#find "$BACKUP_DIR" -type f -name "hosts_backup_*.bak" -mtime +$((DAYS-1)) -exec rm -f {} \;
#echo "Deleted backup files older than $DAYS days in $BACKUP_DIR"
#
## 检查目录是否存在
#if [ -d "$BACKUP_DIR" ]; then
#    echo "Directory exists."
#else
#    echo "Directory does not exist, create it."
#    # 确保备份目录存在:创建目录
#    mkdir -p "$BACKUP_DIR"
#fi
#
## 获取当前时间戳,格式为 YYYYMMDD_HHMMSS
#TIMESTAMP=$(date +%Y%m%d_%H%M%S)
## 备份文件
#cp "$SOURCE_FILE" "${BACKUP_DIR}/hosts_backup_${TIMESTAMP}.bak"
#echo "Backup created with timestamp: ${TIMESTAMP}"
#rm -rf "$SOURCE_FILE"
#cp hosts "/etc/ansible"# 获取当前工作目录
CURRENT_DIR=$(pwd)# 获取当前时间戳,格式为 YYYYMMDD_HHMMSS
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
# 检查某个子目录是否存在
HOSTS_FILE="$CURRENT_DIR/hosts"
LOG_DIR="$CURRENT_DIR/logs"
# 检查目录是否存在
if [ -d "$LOG_DIR" ]; thenecho "Directory exists."
elseecho "Directory does not exist, create it."# 确保备份目录存在:创建目录mkdir -p "$LOG_DIR"
fiLOG_FILE="${LOG_DIR}/ansible_${TIMESTAMP}.log"ansible-playbook -i "$HOSTS_FILE" ansible-deploy.yaml > "$LOG_FILE"

最终目录结构

ansible-deploy-node-exporter-x86|-ansible-deploy.sh|-ansible-deploy.yaml|-hosts|-node-exporter|-node-exporter.service|-node_exporter

构建ansible的docker镜像

FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/gcr.io/iguazio/alpine:3.17
RUN apk add --no-cache openssh-client ansible bash sshpass shadow tzdata# 将时区设置为 Asia/Shanghai
ENV TZ=Asia/Shanghai
# 创建本地时间的符号链接
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone# 创建非 root 用户
ARG USERNAME=ansibleuser
ARG USER_UID=1000
ARG USER_GID=$USER_UID# 添加组和用户
RUN groupadd --gid $USER_GID $USERNAME && \useradd --uid $USER_UID --gid $USER_GID -m -s /bin/bash $USERNAME# 设置环境变量以使用新的临时目录
ENV ANSIBLE_LOCAL_TEMP="/home/$USERNAME/.ansible/tmp"
ENV ANSIBLE_REMOTE_TEMP="/home/$USERNAME/.ansible/tmp_remote"# 创建并设置权限
RUN mkdir -p $ANSIBLE_LOCAL_TEMP $ANSIBLE_REMOTE_TEMP && \chown -R $USERNAME:$USERNAME /home/$USERNAME/.ansible# 切换到新创建的用户
USER $USERNAMECMD ["sh", "-c", "sleep 3600"]

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解析PromQL并修改添加Label

最近做的项目中用到了Prometheus做预警服务,其中Prometheus使用promql语言来查询。项目中用户通过UI或者自己手动输入PromQL时候是缺少一些系统参数的,所以需要在用户输入完成以后同步到Prometheus时候将这部分缺失的信息给添加回去,这里就需要修改用户写的PromQL了。 实现思…

学习安装配置vue

1.先将nodejs下载2.在我们的安装目录下,创建名为node_cache和node_global的两个文件夹 3.打开cmd窗口,执行如下命令,将npm的全局模块目录和缓存目录配置到刚才创建的那两个目录。 npm config set prefix “D:\soft2024.7.6\nodejs\node_global” npm config set cache “D:\…

K8s Ingress, 你这个老6

Ingress 这个老6,结合nodeport和ClusterIp两种服务类型,你在引流这一块玩的花啊。 入口一夫当关,对内如鱼得水。本文是有态度马甲的第185篇原创。 本文记录了k8s中核心对象Ingress的产生背景和实现机制。 我们都知道k8s Service是一种将Pods通过网络暴露出来的抽象,每个服务…

C# .NET core 中处理图像,SkiaSharp,ImageSharp,NetVips,Magick.net多维度对比

2025年有哪些图像处理库,我们可以在项目中使用哪些库?本文列出了最流行的现有库。 .NET Core图片处理库SkiaSharp(https://github.com/mono/SkiaSharp) Magick.net(https://github.com/dlemstra/Magick.NET) ImageSharp(https://github.com/SixLabors/ImageSharp) NetV…

20243317 实验二《Python程序设计》实验报告

课程:《Python程序设计》 班级: 2433 姓名: 邓雅文 学号:20243317 实验教师:王志强老师 实验日期:2025年3月26日 必修/选修: 公选课 一、实验内容 1、掌握python中函数定义与调用相关知识点 大致框架与C语言相同,同样有实参,形参,可能有返回值,形式如下: def 函数名…

MEBCY-v2

MERCY-v2 信息收集 查找目标主机ip ┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:84:b2:cc, IPv4: 192.168.158.143 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.158.1 00:50:56:c…

人群密度分析预警摄像机

人群密度分析预警摄像机是可以实时地统计出一个指定区域内的总人数。当所监视区域的人员数量达到设定的阀值时摄像机输出报警信号。可设置人数阈值和时间阈值。用于设置触发进入区域内的人数值,达到该设定的阈值则摄像机输出报警信号。人数阈值可以手动设置,系统默认值为5人,…

CloudFlare DNS实现根域名跳转WWW域名,301跳转

0. 目的 托管在CloudFlare上的域名,已配置好www.bktai.com,想在用户访问根域名https://bktai.com时,重定向到 https://www.bktai.com. 为什么是重定向而不是同时可以访问?搜索引擎会搜到重复的内容,且维护两套路径都能正常工作,会造成混乱。 1. 配置根域名 点击自己要设置…

day:32 jmeter及性能测试——介绍

一、性能测试介绍 1、什么叫做性能测试? (1)通过某些工具或手段来检测软件的某些指标是否达到了要求,这就是性能测试 (2)指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试 2、性能测试的时间? 在功能测试完成后才能进行性能测试…

第六周第五天

所用时间:405分钟 代码量(行):689 博客量(篇):20 了解到的知识点: 1.VLAN的创建与划分 今天进行了计算机网络的实验一,在昨天下载的packet tracer上进行,实现了VLAN的创建与划分,进行跨交换机的相同vlan之间的计算机和不同vlan之间的计算机的通信实验2.树状结构查询…

独立按键控制LED数码管

前言 通过1个独立按键,控制LED数码管显示字符。 结合之前我的两篇文章独立按键控制LED流水灯方向 https://www.cnblogs.com/luckydoog/p/18796974数码管静态显示 https://www.cnblogs.com/luckydoog/p/18797690效果原理 提前在程序里存储共阴极数码管的编码表,能表示的字符范…