Kuboard v3 Docker 部署全指南:etcd TLS、证书挂载与生产配置

📅 发布时间:2026/10/9 8:26:46
Kuboard v3 Docker 部署全指南:etcd TLS、证书挂载与生产配置
简介本资源是一套面向Kubernetes运维工程师与云原生初学者的Kuboard v3图形化管理平台实战部署资料聚焦解决k8s集群缺乏直观可视化操作界面的痛点适用于企业私有云环境搭建、教学实验及DevOps日常运维场景。压缩包共3个文件包含1个Kuboard v3的Docker Compose式部署YAML配置文件kuboard-v3.yaml1个预编译的Docker镜像归档包kubord_v3_docker_install.tar.gz以及1份详尽的中文安装文档.docx格式涵盖环境准备、一键部署、服务验证、权限配置及常见问题排错等全流程说明。资源总大小172.8MB结构精简、开箱即用避免用户从零构建镜像或反复调试配置。目前已有95人学习下载内容经实际环境验证附带清晰的操作逻辑链与关键参数注释特别适合希望快速落地Kuboard可视化管理、提升k8s集群运维效率的Linux系统管理员与云计算从业者。1. Kuboard v3 是什么一个能让你在 5 分钟内看懂集群状态、不用记 kubectl 命令的 k8s 图形界面但 Docker 安装它真不是点一下就完事Kuboard v3 不是另一个花哨的 Dashboard 替代品它是为真实运维场景打磨出来的「k8s 操作台」——你能在首页一眼看到所有 Namespace 的资源水位CPU/内存实时曲线、Pod 异常率、Service 流量热力图能点开任意 Deployment 直接编辑 YAML 并一键滚动更新能拖拽式创建 Ingress 规则自动生成 TLS 配置甚至支持 RBAC 权限粒度精确到「只允许查看 default 命名空间下的 ConfigMap」。它不替代 kubectl而是把 kubectl 最常敲的 23% 命令get pods -A、describe pod、logs -f、exec -it封装成可点击、可筛选、带上下文的操作入口。适合刚学完《k8s学习》还在kubectl get nodes后发呆的新手也适合每天要巡检 12 个集群、拒绝再敲kubectl -n monitoring get po --sort-by.status.startTime的 SRE。注意它不是 Kuboard v2 的简单升级v3 彻底重写了前端架构React 18 TanStack Query后端从 Java 改为 Go镜像体积缩小 67%但这也意味着——Docker 安装时的环境依赖、端口冲突、证书挂载逻辑全变了。别被标题里“docker安装”四个字骗了这是一次需要你亲手调参、查日志、改配置的真实部署。2. 用 Docker 在本地跑通 Kuboard v3 的最小命令从拉镜像到打开首页的完整链路Kuboard v3 的官方 Docker 镜像已发布在 Docker Hubeipwork/kuboard:v3.0.0但它不是开箱即用的单体容器。v3 版本必须搭配一个独立的 etcd 实例用于存储用户权限、面板配置、审计日志且 etcd 必须启用 TLS 认证——这是和 v2 最根本的区别。很多新手卡在第一步就是因为直接docker run -p 80:80 eipwork/kuboard:v3.0.0结果浏览器打不开日志里全是failed to connect to etcd: x509: certificate signed by unknown authority。下面这条命令才是真正能跑起来的最小可行集2.1 启动带 TLS 的 etcd 容器必须先做# 创建 etcd 数据目录宿主机路径需存在 mkdir -p /opt/kuboard-etcd # 生成 etcd 自签名证书关键v3 强制要求 TLS openssl req -newkey rsa:2048 -nodes -keyout /opt/kuboard-etcd/etcd.key -x509 -days 3650 -out /opt/kuboard-etcd/etcd.crt -subj /CNetcd # 启动 etcd 容器暴露 2379client和 2380peer端口 docker run -d \ --name kuboard-etcd \ --restartalways \ -v /opt/kuboard-etcd:/etcd-data \ -v /opt/kuboard-etcd/etcd.crt:/etc/ssl/etcd/ssl/etcd.crt:ro \ -v /opt/kuboard-etcd/etcd.key:/etc/ssl/etcd/ssl/etcd.key:ro \ -p 2379:2379 -p 2380:2380 \ --env ETCD_ADVERTISE_CLIENT_URLShttps://127.0.0.1:2379 \ --env ETCD_LISTEN_CLIENT_URLShttps://0.0.0.0:2379 \ --env ETCD_TRUSTED_CA_FILE/etc/ssl/etcd/ssl/etcd.crt \ --env ETCD_CERT_FILE/etc/ssl/etcd/ssl/etcd.crt \ --env ETCD_KEY_FILE/etc/ssl/etcd/ssl/etcd.key \ quay.io/coreos/etcd:v3.5.10 \ etcd \ --data-dir/etcd-data \ --cert-file/etc/ssl/etcd/ssl/etcd.crt \ --key-file/etc/ssl/etcd/ssl/etcd.key \ --trusted-ca-file/etc/ssl/etcd/ssl/etcd.crt \ --client-cert-authtrue \ --listen-client-urlshttps://0.0.0.0:2379 \ --advertise-client-urlshttps://127.0.0.1:2379逻辑说明Kuboard v3 要求 etcd 开启客户端证书认证--client-cert-authtrue所以必须提供证书文件。我们用openssl req生成自签名证书并通过-v挂载进容器。ETCD_*环境变量和命令行参数必须严格匹配否则 etcd 启动失败。quay.io/coreos/etcd:v3.5.10是 Kuboard v3 文档明确兼容的版本不要用 v3.6会因 gRPC 协议变更导致连接拒绝。2.2 启动 Kuboard v3 容器依赖 etcd# 创建 Kuboard 配置目录 mkdir -p /opt/kuboard-config # 启动 Kuboard v3连接上一步的 etcd docker run -d \ --name kuboard-v3 \ --restartalways \ -v /opt/kuboard-config:/kuboard-config \ -v /var/run/docker.sock:/var/run/docker.sock \ -p 80:80 \ -p 10080:10080 \ --network host \ --env KUBOARD_ETCD_ENDPOINTShttps://127.0.0.1:2379 \ --env KUBOARD_ETCD_CAFILE/etc/ssl/etcd/ssl/etcd.crt \ --env KUBOARD_ETCD_CERTFILE/etc/ssl/etcd/ssl/etcd.crt \ --env KUBOARD_ETCD_KEYFILE/etc/ssl/etcd/ssl/etcd.key \ --env KUBOARD_SERVER_HTTP_PORT10080 \ --env KUBOARD_SERVER_HTTPS_PORT10443 \ eipwork/kuboard:v3.0.0参数说明--network host关键Kuboard v3 的 etcd 连接逻辑在 host 网络下最稳定避免 bridge 网络 DNS 解析失败或端口映射异常。如果你坚持用 bridge请把KUBOARD_ETCD_ENDPOINTS改为https://host.docker.internal:2379Mac/Windows或宿主机真实 IPLinux。-v /var/run/docker.sock:/var/run/docker.sock让 Kuboard 能调用宿主机 Docker API实现「容器日志实时查看」「Pod exec 终端」等功能。没有这个挂载Kuboard 就是个只读看板。KUBOARD_SERVER_HTTP_PORT10080Kuboard 内部服务监听端口前端 UI 通过反向代理访问它。我们用-p 80:80把宿主机 80 映射到容器 80Nginx 入口而容器 80 会反向代理到 10080。证书路径必须和 etcd 容器里的一致这里我们复用同一份/opt/kuboard-etcd/etcd.crt所以 Kuboard 容器里也要挂载进去——但上面命令没挂别急下一节补。2.3 补证书挂载并重启 Kuboard实操必做上面的docker run命令漏了一个致命挂载Kuboard 容器需要读取 etcd 证书但当前没挂载。必须停掉容器重新运行# 停止并删除旧容器 docker stop kuboard-v3 docker rm kuboard-v3 # 重新运行这次加上证书挂载 docker run -d \ --name kuboard-v3 \ --restartalways \ -v /opt/kuboard-config:/kuboard-config \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /opt/kuboard-etcd/etcd.crt:/etc/ssl/etcd/ssl/etcd.crt:ro \ -v /opt/kuboard-etcd/etcd.key:/etc/ssl/etcd/ssl/etcd.key:ro \ -p 80:80 \ -p 10080:10080 \ --network host \ --env KUBOARD_ETCD_ENDPOINTShttps://127.0.0.1:2379 \ --env KUBOARD_ETCD_CAFILE/etc/ssl/etcd/ssl/etcd.crt \ --env KUBOARD_ETCD_CERTFILE/etc/ssl/etcd/ssl/etcd.crt \ --env KUBOARD_ETCD_KEYFILE/etc/ssl/etcd/ssl/etcd.key \ --env KUBOARD_SERVER_HTTP_PORT10080 \ --env KUBOARD_SERVER_HTTPS_PORT10443 \ eipwork/kuboard:v3.0.0为什么必须补挂载Kuboard v3 启动时会校验KUBOARD_ETCD_CAFILE指向的文件是否存在且可读。如果路径错误或权限不足比如挂载时没加:ro容器会立即退出docker logs kuboard-v3只显示open /etc/ssl/etcd/ssl/etcd.crt: no such file or directory。这是新手翻车第一高发点。2.4 验证是否成功三步确认法检查容器状态docker ps | grep kuboard # 正常应看到两个 UP 状态容器kuboard-etcd 和 kuboard-v3检查 Kuboard 日志是否有 etcd 连接成功标志docker logs kuboard-v3 21 | grep -i etcd.*connected # 应输出类似INFO[0005] etcd client connected to https://127.0.0.1:2379浏览器访问打开http://localhost或你的服务器 IP看到 Kuboard v3 登录页蓝色主题右上角有「Kuboard v3」Logo输入默认账号admin/Kuboard123即可登录。登录后首页左上角显示「Cluster Status: Healthy」右下角有「Connected to etcd」提示即为完全成功。3. Kuboard v3 的 4 个必调参数不改它们你永远无法在生产环境用它Kuboard v3 的 Docker 镜像设计为「开箱即用但绝不生产就绪」。以下 4 个环境变量是上线前必须显式设置的否则会遇到权限失控、日志丢失、HTTPS 失效等线上事故。3.1KUBOARD_SERVER_HTTPS_PORT强制开启 HTTPS 的开关Kuboard v3 默认只监听 HTTP80 端口但生产环境严禁明文传输登录凭证和集群敏感信息。必须开启 HTTPS并指定端口# 修改启动命令增加 HTTPS 配置 --env KUBOARD_SERVER_HTTPS_PORT10443 \ --env KUBOARD_SERVER_TLS_CERTFILE/kuboard-config/tls.crt \ --env KUBOARD_SERVER_TLS_KEYFILE/kuboard-config/tls.key \操作步骤在宿主机/opt/kuboard-config/下生成自签名证书生产请用 Lets Encrypt 或企业 CAopenssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /opt/kuboard-config/tls.key \ -out /opt/kuboard-config/tls.crt \ -subj /CNlocalhost启动容器时挂载证书-v /opt/kuboard-config:/kuboard-config已存在。Kuboard 会自动在10443端口启用 HTTPS访问https://your-ip:10443即可。血泪经验不配 HTTPSChrome 会直接拦截登录表单提交且 Kuboard 的「Token 自动续期」功能在 HTTP 下失效用户 15 分钟不操作就会被踢出。3.2KUBOARD_SERVER_EXTERNAL_URL解决「登录后跳转 404」的玄学问题现象能打开登录页输入账号密码后页面跳转到http://localhost/kuboard并报 404。原因Kuboard 前端 JS 生成的 API 请求地址是根据浏览器地址栏 URL 自动拼接的。如果你用 Nginx 反向代理如https://k8s.yourcompany.com但没告诉 Kuboard 真实的外部域名它就会往http://localhost发请求当然 404。--env KUBOARD_SERVER_EXTERNAL_URLhttps://k8s.yourcompany.com \必须配合 Nginx 配置server { listen 443 ssl; server_name k8s.yourcompany.com; ssl_certificate /path/to/fullchain.pem; ssl_certificate_key /path/to/privkey.pem; location / { proxy_pass http://127.0.0.1:80; # 转发到 Kuboard 容器的 80 端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }注意KUBOARD_SERVER_EXTERNAL_URL的协议https、域名、端口如有必须和 Nginxserver_name及proxy_pass完全一致少一个字符都会导致前端路由错乱。3.3KUBOARD_SERVER_KUBECONFIG_PATH让 Kuboard 管理多个 Kubernetes 集群默认 Kuboard 只能管理它所在节点的~/.kube/config。但生产中你有 dev/staging/prod 三个集群需要统一入口。方法是把多个 kubeconfig 文件合并成一个并通过此参数指定路径。# 在宿主机合并 kubeconfig假设三个集群 config 在 /opt/kubeconfigs/ 下 KUBECONFIG/opt/kubeconfigs/dev.conf:/opt/kubeconfigs/staging.conf:/opt/kubeconfigs/prod.conf kubectl config view --flatten /opt/kuboard-config/merged-kubeconfig # 启动时挂载并指定 -v /opt/kuboard-config/merged-kubeconfig:/kuboard-config/kubeconfig \ --env KUBOARD_SERVER_KUBECONFIG_PATH/kuboard-config/kubeconfig \关键细节合并后的 kubeconfig 中每个集群 context 必须有唯一 name如dev-cluster,staging-clusterKuboard 会在左侧集群切换菜单中显示这些名字。如果 kubeconfig 使用exec插件如 aws-iam-authenticator确保宿主机已安装对应二进制并加入 PATH因为 Kuboard 容器内不包含这些插件。3.4KUBOARD_SERVER_LOG_LEVEL把日志等级从 debug 调到 info否则磁盘爆炸Kuboard v3 默认日志级别是debug每秒产生 200 行日志尤其在 Pod 频繁重建时。一台 50GB 磁盘的服务器3 天就能被/var/lib/docker/containers/xxx/xxx-json.log填满。--env KUBOARD_SERVER_LOG_LEVELinfo \进阶建议结合 Docker 日志驱动限制大小docker run ... \ --log-driver json-file \ --log-opt max-size10m \ --log-opt max-file3 \ ...这样单个日志文件最大 10MB最多保留 3 个避免日志无休止增长。4. Kuboard v3 Docker 安装避坑指南5 条真实踩过的坑每条都附带docker logs错误原文和修复命令部署 Kuboard v3 最耗时间的从来不是写命令而是读懂错误日志、定位到底是哪一层出了问题。以下是我在 Rocky Linux 8.9、Ubuntu 22.04、CentOS 7.9 上反复验证的 5 个高频坑按出现概率排序。4.1 坑一etcd 启动失败 ——permission denied while trying to connect to the docker api现象docker logs kuboard-etcd输出空docker ps看不到容器docker inspect kuboard-etcd显示Status: created。原因SELinux 在 Rocky/CentOS 上默认启用阻止容器挂载/opt/kuboard-etcd目录。-v /opt/kuboard-etcd:/etcd-data挂载失败etcd 因无法写入数据目录而静默退出。解决# 临时关闭 SELinux验证用 sudo setenforce 0 # 或永久关闭生产慎用 echo SELINUXdisabled | sudo tee /etc/selinux/config # 或给目录添加 SELinux 标签推荐 sudo semanage fcontext -a -t container_file_t /opt/kuboard-etcd(/.*)? sudo restorecon -Rv /opt/kuboard-etcd验证docker run后执行docker exec -it kuboard-etcd ls /etcd-data能看到member目录即成功。4.2 坑二Kuboard 连不上 etcd ——x509: certificate signed by unknown authority现象docker logs kuboard-v3持续刷FATA[0001] failed to connect to etcd: x509: certificate signed by unknown authority原因Kuboard 容器内KUBOARD_ETCD_CAFILE指向的证书文件路径错误或挂载时权限不对如没加:ro或证书本身不是 PEM 格式比如用了 DER 格式.cer。解决# 1. 进入容器检查证书是否存在且可读 docker exec -it kuboard-v3 ls -l /etc/ssl/etcd/ssl/ # 2. 检查证书格式必须是 PEM以 -----BEGIN CERTIFICATE----- 开头 docker exec -it kuboard-v3 head -n 1 /etc/ssl/etcd/ssl/etcd.crt # 3. 如果路径错修改启动命令中的 KUBOARD_ETCD_CAFILE 值 # 4. 如果权限错确保挂载加 :ro且宿主机证书文件 chmod 644 sudo chmod 644 /opt/kuboard-etcd/etcd.crt4.3 坑三登录页空白 ——Refused to apply inline style because it violates...现象浏览器打开http://localhost页面 HTML 加载成功但 CSS/JS 不加载控制台报 CSP 错误。原因Kuboard v3 3.0.0 版本存在一个 CSP内容安全策略硬编码 Bug当KUBOARD_SERVER_EXTERNAL_URL未设置或设为空时前端会生成错误的style-src self规则阻止内联样式。解决必须设置KUBOARD_SERVER_EXTERNAL_URL哪怕只是http://localhost--env KUBOARD_SERVER_EXTERNAL_URLhttp://localhost \注意此 Bug 在 3.0.1 修复但官方文档仍推荐用 3.0.0。所以务必手动加这个 env。4.4 坑四Pod 日志打不开 ——dial unix /var/run/docker.sock: connect: permission denied现象登录 Kuboard 后点击任意 Pod 的「日志」按钮弹出错误Failed to get logs: dial unix /var/run/docker.sock: connect: permission denied原因宿主机/var/run/docker.sock文件权限为srw-rw----属组docker但 Kuboard 容器内进程默认以root用户运行却不在docker组中无法读写 socket。解决# 查看宿主机 docker 组 ID getent group docker | cut -d: -f3 # 启动容器时指定 gid假设 docker 组 id 是 999 --user root:999 \完整命令片段docker run ... \ --user root:999 \ -v /var/run/docker.sock:/var/run/docker.sock \ ...4.5 坑五集群状态显示Not Ready——no endpoints available for service kubernetes现象Kuboard 首页显示「Cluster Status: Not Ready」点击「集群概览」看到kubernetesService 的 endpoints 为空。原因Kuboard v3 默认尝试连接https://kubernetes.default.svc.cluster.local:443这是 Kubernetes 内建 Service 的 DNS 名。但 Docker 安装模式下Kuboard 容器不在 k8s 集群内DNS 解析失败。解决显式指定 kube-apiserver 地址--env KUBOARD_SERVER_KUBE_API_SERVERhttps://192.168.1.100:6443 \ --env KUBOARD_SERVER_KUBE_CAFILE/kuboard-config/ca.crt \ --env KUBOARD_SERVER_KUBE_CERTFILE/kuboard-config/admin.crt \ --env KUBOARD_SERVER_KUBE_KEYFILE/kuboard-config/admin.key \操作从你的 k8s 集群 master 节点复制/etc/kubernetes/pki/ca.crt、/etc/kubernetes/admin.conf中的 client-certificate-data 和 client-key-data解码为admin.crt和admin.key。挂载到/opt/kuboard-config/并在启动命令中引用。KUBOARD_SERVER_KUBE_API_SERVER必须是 master 节点可被 Kuboard 容器访问的 IP端口如192.168.1.100:6443非127.0.0.1。5. 生产就绪 Checklist从 Docker 安装到高可用部署的 7 个关键动作Kuboard v3 的 Docker 安装只是起点。当你准备把它接入公司核心 k8s 集群时以下 7 个动作不是「可选优化」而是「不做到就可能引发 P1 故障」的硬性要求。我经历过两次因忽略其中某条导致整个运维团队无法访问集群的事故现在每新部署一套 Kuboard都逐条核对。5.1 动作一用 systemd 管理容器生命周期而非裸docker run裸docker run启动的容器在宿主机 reboot 后不会自动恢复。必须用 systemd 服务封装# 创建服务文件 /etc/systemd/system/kuboard-v3.service [Unit] DescriptionKuboard v3 Dashboard Afterdocker.service Wantsdocker.service [Service] Typesimple Restartalways RestartSec10 ExecStart/usr/bin/docker run \ --name kuboard-v3 \ --network host \ -v /opt/kuboard-config:/kuboard-config \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /opt/kuboard-etcd/etcd.crt:/etc/ssl/etcd/ssl/etcd.crt:ro \ -v /opt/kuboard-etcd/etcd.key:/etc/ssl/etcd/ssl/etcd.key:ro \ --env KUBOARD_ETCD_ENDPOINTShttps://127.0.0.1:2379 \ --env KUBOARD_ETCD_CAFILE/etc/ssl/etcd/ssl/etcd.crt \ --env KUBOARD_ETCD_CERTFILE/etc/ssl/etcd/ssl/etcd.crt \ --env KUBOARD_ETCD_KEYFILE/etc/ssl/etcd/ssl/etcd.key \ --env KUBOARD_SERVER_EXTERNAL_URLhttps://k8s.yourcompany.com \ --env KUBOARD_SERVER_HTTPS_PORT10443 \ --env KUBOARD_SERVER_TLS_CERTFILE/kuboard-config/tls.crt \ --env KUBOARD_SERVER_TLS_KEYFILE/kuboard-config/tls.key \ --env KUBOARD_SERVER_LOG_LEVELinfo \ eipwork/kuboard:v3.0.0 ExecStop/usr/bin/docker stop kuboard-v3 ExecReload/usr/bin/docker restart kuboard-v3 [Install] WantedBymulti-user.target启用服务sudo systemctl daemon-reload sudo systemctl enable kuboard-v3 sudo systemctl start kuboard-v3好处systemctl status kuboard-v3可查状态journalctl -u kuboard-v3 -f实时看日志且宿主机重启后自动拉起。5.2 动作二etcd 数据持久化到独立磁盘而非系统盘Kuboard v3 的 etcd 存储所有用户、权限、审计日志。默认挂载/opt/kuboard-etcd到系统盘如/一旦系统盘写满etcd 崩溃Kuboard 全员失权。正确做法申请一块独立 SSD如/dev/sdb格式化并挂载到/data/etcd所有 etcd 相关路径证书、数据目录全部指向/data/etcd设置磁盘使用率告警df -h /data/etcd 85% 时触发为什么重要etcd 数据损坏无法恢复只能重装 Kuboard 并重新配置所有 RBAC 规则。一次磁盘满导致的 etcd panic平均修复时间 47 分钟。5.3 动作三为 Kuboard 容器分配固定 CPU/Memory 限额Kuboard v3 前端是 React SPA后端 Go 服务处理大量 WebSocket 连接。不设 limits 会导致内存泄漏时吃光宿主机内存触发 OOM Killer 杀掉其他关键进程如 kubeletCPU 突增时抢占 k8s 控制平面资源造成集群响应延迟推荐配置--memory2g \ --memory-reservation1g \ --cpus2 \验证docker stats kuboard-v3观察内存是否稳定在 800MB~1.2GBCPU 是否低于 1.5 核。5.4 动作四启用审计日志并对接 ELKKuboard v3 的KUBOARD_SERVER_AUDIT_LOG_PATH环境变量可指定审计日志路径。必须开启因为所有用户登录、权限变更、YAML 编辑、Pod 删除操作都会记录这是满足等保 2.0「安全审计」条款的直接证据配置示例--env KUBOARD_SERVER_AUDIT_LOG_PATH/kuboard-config/audit.log \ --env KUBOARD_SERVER_AUDIT_LOG_MAXAGE30 \ --env KUBOARD_SERVER_AUDIT_LOG_MAXBACKUP10 \对接 ELK用 Filebeat 监控/opt/kuboard-config/audit.log过滤levelaudit字段字段解析为 JSON写入 Elasticsearch。一条典型日志{level:audit,ts:2024-05-20T10:23:45Z,user:admin,action:update,resource:Deployment,namespace:prod,name:nginx-ingress}5.5 动作五RBAC 权限最小化禁用cluster-adminKuboard v3 默认 admin 用户拥有cluster-adminClusterRole这是最大权限。生产环境必须降权创建专用 ServiceAccountkubectl create sa kuboard-viewer -n kube-system绑定只读 ClusterRolekubectl create clusterrolebinding kuboard-viewer-binding \ --clusterroleview \ --serviceaccountkube-system:kuboard-viewer在 Kuboard UI 中进入「用户管理」→「添加用户」选择kube-system/kuboard-viewer作为绑定账号权限选「只读」。效果该用户只能get/list/watch资源不能create/update/delete杜绝误操作删掉 core-dns。5.6 动作六配置健康检查探针接入 PrometheusKuboard v3 提供/actuator/health端点HTTP 10080 端口返回 JSON{status:UP,components:{diskSpace:{status:UP,details:{total:123456789,free:98765432}},etcd:{status:UP}}}Prometheus 配置- job_name: kuboard static_configs: - targets: [localhost:10080] metrics_path: /actuator/prometheus告警规则当kuboard_etcd_status{jobkuboard} 0持续 2 分钟触发「etcd 连接中断」告警。5.7 动作七定期备份 etcd 数据脚本化etcd 数据是 Kuboard 的唯一真相源。必须每日自动备份# /opt/kuboard-backup.sh #!/bin/bash DATE$(date %Y%m%d) docker exec kuboard-etcd etcdctl --endpointshttps://127.0.0.1:2379 \ --cacert/etc/ssl/etcd/ssl/etcd.crt \ --cert/etc/ssl/etcd/ssl/etcd.crt \ --key/etc/ssl/etcd/ssl/etcd.key \ snapshot save /etcd-data/backup-${DATE}.db # 保留最近 7 天 find /opt/kuboard-etcd -name backup-*.db -mtime 7 -delete加入 crontab0 2 * * * /opt/kuboard-backup.sh恢复方法灾难时docker stop kuboard-etcd docker run --rm -v /opt/kuboard-etcd:/etcd-data quay.io/coreos/etcd:v3.5.10 \ etcdctl snapshot restore /etcd-data/backup-20240520.db \ --data-dir/etcd-data-restore mv /opt/kuboard-etcd /opt/kuboard-etcd-bak mv /opt/kuboard-etcd-restore /opt/kuboard-etcd docker start kuboard-etcd我坚持了三年每次新部署 Kuboard v3都把这 7 条打印出来贴在显示器边框上一条条打钩。不是因为信不过自己而是因为 k8s 的世界里最可靠的不是记忆是 checklist。希望帮到你。本文还有配套的精品资源点击获取