云原生监控告警新选择:夜莺(Nightingale)在K8S集群部署与私有镜像构建指南

发布于:2025-06-23 ⋅ 阅读:(12) ⋅ 点赞:(0)

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ]

📢 大家好,我是 WeiyiGeek,一名深耕安全运维开发(SecOpsDev)领域的技术从业者,致力于探索DevOps与安全的融合(DevSecOps),自动化运维工具开发与实践,企业网络安全防护,欢迎各位道友一起学习交流、一起进步 🚀,若此文对你有帮助,一定记得倒点个关注⭐与小红星❤️,收藏学习不迷路 😋 。

0x00 前言简述

描述:上一篇【国产化监控新选择!夜莺Nightingale在OpenEuler上的极简部署指南】,作者简单介绍了夜莺监控系统,以及如何通过二进制的方式部署夜莺(nightingale),本篇将介绍如何使用自行构建夜莺监控容器镜像,并通过docker容器化快部署夜莺,最后作者以生产环境为例,演示在 Kubernetes 集群环境下部署一个最新版本的夜莺监控系统,以便于后续接入 Prometheus 以及 VictoriaMetrics 监控指标数据和 jaeger 链路追踪,并使用夜莺监控系统进行分组告警通知和抑制告警。

原文链接: https://articles.zsxq.com/id_pe9p5cw2x8f2.html

实践环境:

# 获取最新版本号,截止发稿前最新版本为 v8.0.0-beta.14
curl -s https://api.github.com/repos/ccfos/nightingale/releases/latest | grep "tag_name" | cut -d '"' -f 4
  # v8.0.0-beta.14

# 获取最新二进制包下载链接地址
curl -s https://api.github.com/repos/ccfos/nightingale/releases/latest | grep "browser_download_url" | grep "linux-amd64.tar.gz" | cut -d '"' -f 4
  # https://github.com/ccfos/nightingale/releases/download/v8.0.0-beta.14/n9e-v8.0.0-beta.14-linux-amd64.tar.gz

0x01 容器化部署夜莺监控系统

Docker 容器方式部署

描述:夜莺官网已经写的非常详细了,你只需要安装 docker 以及 docker-compose 环境,便可开箱即用,此处不再赘述。

Docker 环境说明

$ docker version
Client: Docker Engine - Community
 Version:           26.1.3
Server: Docker Engine - Community
 Engine:
  Version:          26.1.3

$ docker-compose version
Docker Compose version v2.23.0

操作实践

# 方式1.拉取源代码
git clone --depth=1 https://github.com/ccfos/nightingale.git

# 方式2.二进制安装包
mkdir -vpls /opt/n9e && cd /opt/n9e
download_url=$(curl -s https://api.github.com/repos/ccfos/nightingale/releases/latest | grep "browser_download_url" | grep "linux-amd64.tar.gz" | cut -d '"' -f 4)
wget https://gh.wygk.eu.org/$download_url
tar -zxvf ${download_url##*/}

# 不论通过那种方式,解压后都有一个 docker/compose-bridge 目录,进入这个目录执行 docker-compose up -d 命令即可(国内网络,镜像下载可能会失败,您需要自行解决科学上网的问题)
ls  docker/compose-bridge 
# docker-compose.yaml  etc-categraf  etc-mysql  etc-nightingale

cd /opt/n9e/docker/compose-bridge
docker compose up -d
[+] Running 5/5
#  ✔ Container victoriametrics  Started        0.6s
#  ✔ Container redis            Started        0.6s
#  ✔ Container mysql            Started        0.6s
#  ✔ Container nightingale      Started        0.2s
#  ✔ Container categraf         Started

执行完毕后,Docker compose 便会启动了多个容器,分别是:

  • victoriametrics:时序数据库,和 Prometheus 兼容,性能更好

  • redis:缓存数据库,夜莺使用 Redis 来存储 jwt token 和机器的心跳元信息

  • mysql:关系型数据库,夜莺使用 MySQL 来存储用户信息、告警规则、仪表盘等配置类数据

  • nightingale:夜莺监控的核心服务

  • categraf:监控数据采集器,负责采集主机的 CPU、内存、磁盘等指标数据.

当然你也可以单独只运行 nightingale (主要是临时测试使用),注意:未持久化数据容器重启后丢失,例如:

# 创建并运行夜莺监控容器
docker run -d --name nightingale \
  -e GIN_MODE=release \
  -e TZ=Asia/Shanghai \
  -p 17000:17000 \
  -p 20090:20090 \
  --restart=always \
  flashcatcloud/nightingale:latest \
  sh -c "/app/n9e"

# 查看容器运行状态
docker ps
# CONTAINER ID   IMAGE                                           COMMAND            CREATED         STATUS         PORTS                                                                                          NAMES
# 504c6c8d7a2f   flashcatcloud/nightingale:latest                "sh -c /app/n9e"   4 seconds ago   Up 3 seconds   0.0.0.0:20090->20090/tcp, :::20090->20090/tcp, 0.0.0.0:17000->17000/tcp, :::17000->17000/tcp   nightingale

# 若开启了主机防火墙一定要开放 17000 和 20090 端口,否则无法访问夜莺监控系统
firewall-cmd --add-port=17000/tcp --add-port=20090/tcp --permanent
firewall-cmd --reload

等待几分钟,夜莺监控系统便会启动成功,你可以通过浏览器访问 http://127.0.0.1:17000 来查看夜莺的 Web 界面,默认用户名是 root,默认密码是 root.2020。

注意:请把 127.0.0.1 替换成你的服务器 IP 地址。

weiyigeek.top-登录容器部署的夜莺图

参考来源:https://n9e.github.io/zh/docs/install/compose/

Kubernetes 集群环境中部署

描述:考虑到在当下企业生产环境中,通常会使用 Kubernetes 容器编排工具来管理容器化应用,而不是 Docker 以及其他容器。此外由于笔者企业内部有安全合规要求,通常不会直接使用外部工具提供的镜像,而是自行构建夜莺监控系统的容器镜像,并通过私有仓库进行分发,以保证基础镜像的安全性,稳定性,所以作者首先将构建私有镜像,然后将以 Kubernetes 为例演示如何部署夜莺监控系统。

构建夜莺监控私有镜像

1.在安装有docker环境的主机下执行以下步骤,此处以最新版本 v8.0.0-beta.14 为例,构建私有镜像

download_url=$(curl -s https://api.github.com/repos/ccfos/nightingale/releases/latest | grep "browser_download_url" | grep "linux-amd64.tar.gz" | cut -d '"' -f 4)
mkdir /usr/local/src/n9e 
wget https://gh.wygk.eu.org/$download_url
tar -zxvf ${download_url##*/}  -C /usr/local/src/n9e/

2.创建 Dockerfile 文件,此处以 Python python:3-slim 为基础镜像构建夜莺监控系统容器镜像

# 提前拉取基础镜像,否则构建过程会比较慢
docker pull python:3-slim

# 编写 Dockerfile 文件
tee /usr/local/src/n9e/Dockerfile <<EOF
FROM python:3-slim
WORKDIR /app
ADD n9e /app/
ADD etc /etc/n9e/
ADD integrations /app/integrations/
RUN sed -i -e 's#http://deb.debian.org#https://mirrors.huaweicloud.com#g' /etc/apt/sources.list.d/debian.sources && apt update && apt install -y iputils-ping curl && apt clean && pip install requests -i "https://mirrors.aliyun.com/pypi/simple/"
EXPOSE 17000
ENV N9E_CONFIGS="/etc/n9e/"
CMD ["/app/n9e", "-h"]
EOF

上述步骤中,我将 /app 目录设置为夜莺程序二进制文件存放目录,/app/integrations 集成目录包含比如 MySQL、Redis、Elasticsearch 等各个监控目标的内置仪表盘、告警规则等,通过环境变量 /etc/n9e 设置为夜莺配置文件的存放目录。

3.切换到 /usr/local/src/n9e 目录下,执行构建镜像并推送镜像到私有仓库命令,若还没部署私有仓库的可参考作者此文【GitOps实践 | 快速在银河麒麟KylinOS国产系统部署最新Harbor企业私有镜像仓库

# 构建镜像
docker build -t harbor.weiyigeek.top/library/nightingale:v8.0.0-beta.14 . 

# 登录私有仓库
docker login harbor.weiyigeek.top

# 推送镜像到私有仓库
docker push harbor.weiyigeek.top/library/nightingale:v8.0.0-beta.14

至此,私有镜像构建完毕!

创建夜莺监控持久化依赖数据库

描述:作者准备一台服务器,我这里用的是两台 OpenEuler 24.03 虚拟机,安装 Docker 环境,我这里用的是 MariaDB 作为数据库,Redis 作为缓存,然后在安装夜莺时分别使用它们。

OS:OpenEuler 24.03 LTS SP1 
Docker : 26.1.3
MariaDB:11.6.2
Redis: 7.2.4

温馨提示:此处所使用的 OpenEuler 24.03 虚拟机已进行主机加固,满足等保 3 级要求,若有此方面需求的道友,可访问此篇【OpenEuler 24.03系统主机安全加固及配置优化实践指南】文章中的链接获取加固脚本。

这里不再老生常谈Docker部署安装了,若你还不会可在上述加固脚本中获取 Docker 安装命令一键安装,或者参考作者以前Docker部署文章,以及参考官方教程即可,下面着重介绍使用 Docker-Compose 快速进行 MariaDB 和 Redis 的部署。

MariaDB 部署

  • 1.持久化目录以及配置文件准备

# 持久化目录 (此处仅为作者示例路径,请根据实际环境调整.)
mkdir -vp /data/mariadb/{deploy,data,config}

# MariaDB 配置文件
cd /data/mariadb/
tee config/my.cnf <<'EOF'
[mysqld]
# 数据存储目录
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock

# 开启 binlog
log_bin = /var/lib/mysql/mysql_bin
log_bin_index = /var/lib/mysql/mysql_bin.index
server_id = 1
expire_logs_days = 7
max_binlog_size = 100M
binlog_format = ROW
sync_binlog = 1

# 优化参数
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 1
innodb_io_capacity = 2000
innodb_io_capacity_max = 4000

# 连接数
max_connections = 1024
max_user_connections = 256
# 连接缓冲大小
sort_buffer_size = 4M
read_buffer_size = 4M
read_rnd_buffer_size = 8M
join_buffer_size = 8M

# 日志
slow_query_log = 0
slow_query_log_file = /var/lib/mysql/slow.log
long_query_time = 2

# 字符串
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

# 禁止域名解析,提升连接速度
skip-name-resolve

# 禁止使用符号链接
symbolic-links = 0
EOF
  • 2.创建 docker-compose.yml 配置文件

cd /data/mariadb/deploy/
tee docker-compose.yml <<'EOF'
services:
  mariadb:
    image: mariadb:11.6.2
    container_name: mariadb
    restart: always
    environment:
      MARIADB_ROOT_PASSWORD: WeiyiGeek.top
      MYSQL_DATABASE: app
      MARIADB_USER: app
      MARIADB_PASSWORD: WeiyiGeek.top
    volumes:
      - /data/mariadb/data:/var/lib/mysql
      - /data/mariadb/config:/etc/mysql/conf.d
    ports:
      - "3306:3306"
EOF
  • 3.进入 docker-compose.yml 文件所在目录,执行下述命令快速部署并启动 MariaDB 容器。

# 部署运行
docker-compose up -d

# 查看容器运行状态
docker ps
  # 890e26f87859   mariadb:11.6.2  "docker-entrypoint.s…"   3 months ago   Up 3 months   0.0.0.0:3306->3306/tcp   mariadb
  • 4.进入 MariaDB 容器,登录数据库,并创建夜莺数据库所需用户。

# 进入容器中Shell
docker exec -it mariadb bash
# 使用 root 用户登录数据库,密码为前面 docker-compose.yml 中 MARIADB_ROOT_PASSWORD 环境变量设置的值
sudo mysql -u root
# 将 root 用户使用 caching_sha2_passwor 插件认证(MySQL 8.x)需要进行设置
# mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
# 创建 n9e 用户 password 修改为符合 STRONG 规则的密码
mysql> CREATE USER 'n9e'@'%' IDENTIFIED BY 'www.weiyigeek.top';
# 授予 n9e 用户对 n9e_v6 数据库操作的所有权限
mysql> GRANT ALL PRIVILEGES ON n9e_v6.* TO 'n9e'@'%';
# 刷新权限
mysql> FLUSH PRIVILEGES;
  • 5.将上述解压目录中 /usr/local/src/n9e/n9e.sql 文件上传到 OpenEuler 虚拟机中并导入到 MariaDB 数据库中。

ls /opt/nightingale
  # cli  docker  etc  integrations  n9e  n9e-cli  n9e-edge  n9e.log  n9e.sql  payload.json

# 导入数据库
docker exec -i 890e26f87859 mariadb -h 127.0.0.1 -u n9e -pWeiyiGeek < n9e.sql

# 查看导入情况
root@890e26f87859:/# mariadb -h 127.0.0.1  -u n9e -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 11.6.2-MariaDB-ubu2404-log mariadb.org binary distribution

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| n9e_v6             |
+--------------------+
2 rows inset (0.004 sec)

# 查看数据库用户列表
MariaDB [(none)]> use n9e_v6;
MariaDB [n9e_v6]> SELECT * from n9e_v6.users;
+----+----------+----------+-----------+-------+-------+----------+-------+----------+------------+--------+------------------+------------+-----------+------------+-----------+
| id | username | nickname | password  | phone | email | portrait | roles | contacts | maintainer | belong | last_active_time | create_at  | create_by | update_at  | update_by |
+----+----------+----------+-----------+-------+-------+----------+-------+----------+------------+--------+------------------+------------+-----------+------------+-----------+
|  1 | root     | 超管     | root.2020 |       |       |          | Admin | NULL     |          0 |        |                0 | 1746854092 | system    | 1746854092 | system    |
+----+----------+----------+-----------+-------+-------+----------+-------+----------+------------+--------+------------------+------------+-----------+------------+-----------+
1 row inset (0.001 sec)

# 退出
MariaDB [n9e_v6]> exit;

Redis 部署

  • 1.持久化目录以及配置文件准备

mkdir -vp /data/redis/{deploy,data,config,logs}
cd /data/redis/
tee config/redis.conf <<'EOF'
# 绑定任意接口、服务端口、后台运行。
bind 0.0.0.0
port 6379
# 容器里必须设置为no
daemonize no
supervised auto

# redis服务pid进程文件名
pidfile "/var/run/redis.pid"

# 关闭保护模式,并配置使用密码访问
protected-mode no

# 数据文件保存路径,rdb/AOF文件也保存在这里
dir "/data"

# 日志文件记录文件(notice / verbose)
logfile "/logs/redis.log"
loglevel notice

# 慢查询配置
slowlog-log-slower-than 6000
slowlog-max-len 1024

# 内存策略
# maxmemory 2gb
# maxmemory-policy volatile-lru

# 最大客户端连接数
maxclients 10000

# 客户端连接空闲多久后断开连接,单位秒,0表示禁用
timeout 60
tcp-keepalive 120

# Redis 数据持久化混合模式(RDB/AOF)配置
# RDB 文件名
dbfilename "dump.rdb"
# 数据自动保存脚本条件, 例如900s中有10key发生变化
save 900 10
# 启用增量式同步 (推荐),减少 RDB 保存期间的延迟毛刺
rdb-save-incremental-fsync yes
# 对RDB文件进行压缩,建议以(磁盘)空间换(CPU)时间。
rdbcompression yes
# 版本5的RDB有一个CRC64算法的校验和放在了文件的最后。这将使文件格式更加可靠。
rdbchecksum yes

# AOF开启
appendonly yes
# AOF文件名
appendfilename "appendonly.aof"
# 可选值 always, everysec,no,建议设置为everysec
appendfsync everysec
# 混合持久化,重写时使用RDB格式作为AOF开头,减少文件大小
aof-use-rdb-preamble yes
# 7.0+版本特性,除非需要否则关闭时间戳记录
aof-timestamp-enabled no
# 当前AOF文件比上次重写后文件大100%时触发重写
auto-aof-rewrite-percentage 100
# AOF文件至少达到64MB才会触发重写
auto-aof-rewrite-min-size 64mb
# 重写时增量式同步,避免大延迟峰值
aof-rewrite-incremental-fsync yes
  • 2.创建 docker-compose.yml 配置文件

version: "3.8"
services:
  redis:
    image: harbor.weiyigeek.top/docker/library/redis:7.2.7-alpine3.21
    container_name: redis
    restart: unless-stopped
    hostname: redis
    privileged: true
    ports:
      - "6379:6379"
    volumes:
      - /data/redis/data:/data
      - /data/redis/logs:/logs
      - /data/redis/config/redis.conf:/etc/redis/redis.conf
    environment:
      - REDIS_PASSWORD=WeiyiGeek.top
      - REDIS_MAXMEMORY=6gb
      - REDIS_MAXMEMORY_POLICY=allkeys-lru
      - REDIS_DISABLE_THP=yes
    command:
      - /bin/sh
      - -c
      - |
        sysctl -w vm.overcommit_memory=1 &&
        sysctl -w net.core.somaxconn=8196 &&
        redis-server /etc/redis/redis.conf --requirepass $$REDIS_PASSWORD
    deploy:
      resources:
        limits:
          cpus: "2.0"
          memory: "8G"
    healthcheck:
      test: ["CMD", "redis-cli", "-a", "$$REDIS_PASSWORD", "ping"]
      interval: 15s
      timeout: 5s
      retries: 3
  • 3.创建并运行 redis 容器,查看容器运行状态

docker-compose up -d
docker ps 
5067e2985cc7  redis:7.2.7-alpine3.21   "docker-entrypoint.s…"   5 weeks ago    Up 5 weeks (healthy)   0.0.0.0:6379->6379/tcp   redis
  • 4.进入容器验证 Redis 数据库运行状态

docker exec -it redis sh
/data # redis-cli
127.0.0.1:6379> auth WeiyiGeek.top
OK
127.0.0.1:6379> ping
PONG

将上述 MariDB 以及 Redis 容器部署完成后,还需配置防火墙允许 3306 、6379 端口通行。

[root@OpenEuler /data]# firewall-cmd --add-port=3306/tcp  --add-port=63749/tcp --permanent
[root@OpenEuler /data]# firewall-cmd --reload

至此,Mariadb 数据库、Redis 缓存数据库创建完毕!

K8S 集群中部署运行夜莺监控系统

步骤 01.将镜像构建节点中 /usr/local/src/n9e/etc/ 目录文件打包上传至kubernetes集群节点中,作者这里直接放在NFS共享磁盘中 /storage/app/devops/nightingale/config,便于容器可以部署运行在各个工作节点。

# 夜莺监控配置文件目录树形结构
tree /usr/local/src/n9e/etc/
.
├── config.toml
├── edge
│   └── edge.toml
├── metrics.yaml
└── script
    ├── notify.bak.py
    ├── notify_feishu.py
    ├── notify.py
    └── rule_converter.py

# 在 K8S 集群 master 节点上创建配置文件持久化目录
mkdir -vp /storage/app/devops/nightingale/config
ls /storage/app/devops/nightingale/config
  config.toml  edge  metrics.yaml  script

步骤 02.修改配置文件中的数据库相关配置项(请根据实际情况做修改),例如:

vim /storage/app/devops/nightingale/config/config.toml

[Global]
RunMode = "release"# 生产环境建议设置为 release

[Log]
Dir = "logs"
# log level: DEBUG INFO WARNING ERROR
Level = "INFO"     # 日志级别

[HTTP]
Host = "0.0.0.0"# 监听所有网卡
Port = 17000      # 监听端口, 默认17000
CertFile = ""     # 证书文件路径,默认不启用 HTTPS
KeyFile = ""      # 证书密钥文件路径,默认不启用 HTTPS
.....

# mariadb 数据库配置信息
[DB]  
DSN = "n9e:WeiyiGeek.top@tcp(10.20.1.21:3306)/n9e_v6?charset=utf8mb4&parseTime=True&loc=Local&allowNativePasswords=true"
Debug = false
DBType = "mysql"
MaxLifetime = 7200
MaxOpenConns = 150
MaxIdleConns = 50

# redis 数据库配置信息
[Redis]   
Address = "10.20.1.21:6379"
Password = "WeiyiGeek.top"
DB = 0
RedisType = "standalone"
......

步骤 03.在 K8S 集群中创建名称空间以及 Deployment 资源部署清单。

# 创建命名空间
kubectl create ns devops

# 创建部署文件
tee deployment.yaml <<'EOF'
apiVersion: v1
kind: Service
metadata:
  name: nightingale
  annotations:
    ops.k8s.io/desc: 夜莺监控告警平台
    ops.k8s.io/git: https://github.com/ccfos/nightingale
    ops.k8s.io/name: nightingale
    ops.k8s.io/type: app
    ops.k8s.io/url: https://n9e.weiyigeek.top
  namespace: devops
spec:
  selector:
    app: nightingale
    ref: prod
  ports:
    - name: http
      port: 17000
      targetPort: 17000
    - name: metrics
      port: 20090
      targetPort: 20090
type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nightingale
  labels:
    app: nightingale
    ref: prod
namespaces: devops
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nightingale
      ref: prod
  template:
    metadata:
      labels:
        app: nightingale
        ref: prod
      annotations:
        ops.k8s.io/desc: 夜莺监控告警平台
        ops.k8s.io/git: https://github.com/ccfos/nightingale
        ops.k8s.io/name: nightingale
        ops.k8s.io/type: app
        ops.k8s.io/url: https://n9e.weiyigeek.top
    spec:
      containers:
      - name: nightingale
        image: harbor.weiyigeek.top/library/nightingale:v8.0.0-beta.14
        imagePullPolicy: IfNotPresent
        command: ["sh", "-c", "/app/n9e"]
        env:
        - name: GIN_MODE
          value: release
        - name: TZ
          value: Asia/Shanghai
        - name: N9E_PROXY_URL
          value: qyapi.weixin.qq.com,oapi.dingtalk.com,smtp.exmail.qq.com
        - name: APP_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.annotations['ops.k8s.io/name']
        - name: APP_DESC
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.annotations['ops.k8s.io/desc']
        - name: APP_GIT
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.annotations['ops.k8s.io/git']
        - name: APP_URL
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.annotations['ops.k8s.io/url']
        - name: APP_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        ports:
        - containerPort: 17000
          name: http
        - containerPort: 20090
          name: metrics
        volumeMounts:
        - name: config
          mountPath: /etc/n9e/
      volumes:
      - name: config
        hostPath:
          path: /storage/app/devops/nightingale/config
          type: Directory
      restartPolicy: Always
EOF

步骤 04.准备使用 ingress-nginx 服务来暴露 nightingale 服务,其反向代理配置规则如下所示,当前你也可直接使用NodePort 方式暴露夜莺监控服务端口,不过作者还是建议通过域名方式,这样更便于业务管理,还可做安全访问限制。

tee n9e-ingress.yaml <<'EOF'
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/enable-cors: "true"
  labels:
    ref: n9e
    url: n9e.weiyigeek.top
  name: n9e
  namespace: devops
spec:
  ingressClassName: nginx
  rules:
  - host: n9e.weiyigeek.top
    http:
      paths:
      - backend:
          service:
            name: nightingale
            port:
              number: 17000
        path: /
        pathType: ImplementationSpecific
  tls:
  - hosts:
    - n9e.weiyigeek.top
    secretName: ssl.weiyigeek.top
EOF

特别注意:配置完成后,请在内部DNS服务器中添加域名解析。

步骤 05.运行创建的资源配置清单,并查看部署状态。

# 创建
kubectl apply -f deployment.yaml 
kubectl apply -f n9e-ingress.yaml

# 查看
kubectl get pod -n devops -o wide | grep "nightingale"
# nightingale-697b8dd677-2fgkd    1/1     Running   0          14d   172.16.131.155   cqksy-02   <none>           <none>

kubectl get svc -n devops  | grep "nightingale"
# nightingale    ClusterIP   10.96.208.154   <none>        17000/TCP,20090/TCP   10m

kubectl get ingress -n devops -o wide
# NAME      CLASS   HOSTS                           ADDRESS   PORTS     AGE
# n9e   nginx   monitor.cqksy.cn                              80, 443   10m

步骤 06.部署完成后,使用浏览器访问 https://n9e.weiyigeek.top ,然后使用缺省密码登录,从而验证服务正常运行。

image.png

至此,实践完毕!

本章,作者以自身企业需求为突破点,实践了自定义构建私有镜像,并通过容器的方式部署运行在企业内部 Kubernetes 高可用集群中,使得当夜莺监控系统容器发生故障时可以及时恢复,从而不影响其它核心业务的监控,好了,今天就说到这里了,请大家持续关注我哟,我将在后续文章中实践夜莺监控预警系统在企业内部从0到1落地实践,希望能帮助到大家。

END

加入:作者【全栈工程师修炼指南】知识星球

『 全栈工程师修炼指南』星球,主要涉及全栈工程师(Full Stack Development)实践文章,包括但不限于企业SecDevOps和网络安全等保合规、安全渗透测试、编程开发、云原生(Cloud Native)、物联网工业控制(IOT)、人工智能Ai,从业书籍笔记,人生职场认识等方面资料或文章。

Q: 加入作者【全栈工程师修炼指南】星球后有啥好处?

✅ 将获得作者最新工作学习实践文章以及网盘资源。 ✅ 将获得作者珍藏多年的全栈学习笔记(需连续两年及以上老星球友,也可单次购买)。 ✅ 将获得作者专门答疑学习交流群,解决在工作学习中的问题。 ✅ 将获得作者远程支持(在作者能力范围内且合规)。

目前新人仅需 69 元即可加入作者星球,数量有限,期待你的加入!

获取:作者工作学习全栈笔记

作者整理了10年的工作学习笔记(涉及网络、安全、运维、开发),需要学习实践笔记的看友,可添加作者微信或者回复【工作学习实践笔记】,当前价格¥199,除了获得从业笔记的同时还可进行问题答疑以及每月远程技术支持,希望大家多多支持,收获定大于付出!

 知识推荐 往期文章

若文章对你有帮助,请将它转发给更多的看友,若有疑问的小伙伴,可在评论区留言你想法哟 💬!


网站公告

今日签到

点亮在社区的每一天
去签到