资讯动态

Kubernetes单master升级多master集群实战指南

发布时间:2026/10/21 22:03:08 来源:尧图企业网站定制
1. 项目概述为什么单 master 架构在今天已经走到了临界点“如何将单 master 升级为多 master 集群”——这句话背后不是一次简单的配置变更而是一次系统性生存能力的重构。我接触过太多团队在业务刚起步时用单 master Kubernetes 集群跑得飞快部署快、运维轻、资源省三台机器搭起来就能撑起日活十万的后台服务。但当某天凌晨两点API Server 因磁盘 I/O 突增卡死、etcd 进程 OOM 被系统 kill、整个集群 API 不响应而你手忙脚乱地重启 master 节点却触发了 controller-manager 的双写冲突导致 Deployment 副本数被错误覆盖回 0——那一刻你就明白单点从来不是“简化”而是把所有风险压进一个玻璃瓶里只等一次抖动就全盘崩解。这个标题直指当前生产环境最普遍也最危险的技术债务单 master 不是过渡态而是故障温床。它不满足高可用HA的三个基本定义——无单点故障No SPOF、可容忍节点失效Node Failure Tolerance、服务连续性Service Continuity。真实场景中我们见过因一块 SSD 寿命耗尽导致 etcd 数据目录损坏整套集群元数据不可逆丢失也见过因 kube-apiserver 证书过期未轮换master 重启后所有 node 无法 rejoin集群“失联”超 4 小时更常见的是升级过程中手动停机维护业务方投诉“每季度都要停服半小时做 k8s 升级”这早已不是技术问题而是 SLA 信誉危机。所以“升级为多 master”不是为了炫技而是为了兑现三件事第一让控制平面具备真正的容错能力——哪怕一台 master 完全断电集群仍能照常调度 Pod、响应 kubectl、执行 HorizontalPodAutoscaler第二把运维动作从“停机窗口”变成“滚动灰度”——证书轮换、版本升级、内核补丁全部在线完成第三为后续演进铺路跨 AZ 部署、混合云联邦、GitOps 流水线闭环没有健壮的多 master 控制平面这些都只是纸上谈兵。关键词“单 master”“多 master 集群”“Kubernetes HA”不是抽象概念它们对应着真实的物理约束你手头那台老服务器是否还有空余 PCIe 插槽加装 NVMe现有负载均衡器是否支持 PROXY protocol 透传客户端真实 IPetcd 集群能否承受三节点间跨机房 25ms RTT 的网络抖动这些细节才是决定升级成败的真正分水岭。接下来的内容不会讲“理论上怎么做”而是带你一帧一帧复现从评估现状、设计拓扑、逐节点改造到验证脑裂防护、压测 failover 延迟、固化巡检 SOP——全部基于我在某中型 SaaS 公司落地 7 套生产集群的真实记录连 etcd 快照恢复时遇到的 WAL 文件校验失败报错和对应十六进制 patch 方式都会给你写清楚。2. 整体架构设计与方案选型逻辑为什么必须放弃“伪 HA”陷阱2.1 单 master 到多 master 的本质跃迁从“进程冗余”到“状态共识”很多团队第一步就踩坑以为给 apiserver 加个 nginx 负载均衡再起两个实例就是多 master。这是典型的概念混淆。Kubernetes 控制平面不是无状态 Web 服务它的核心组件存在强状态耦合etcd 是唯一真相源所有资源对象Pod/Service/ConfigMap的最终状态只存于 etcdapiserver 只是读写代理controller-manager 和 scheduler 必须严格主从同一时刻只能有一个 active 实例执行调度或 reconcile否则出现“双写冲突”如两个 scheduler 同时给同一个 Pending Pod 绑定不同 Nodekube-apiserver 本身无状态但依赖 etcd 的线性一致性它不保存状态但所有读写请求必须通过 etcd 的 Raft 日志达成共识。因此“多 master”的本质是构建一个分布式共识系统而非简单堆砌进程。真正的架构分层必须清晰层级组件冗余方式关键约束数据层etcd 集群3/5/7 节点 Raft 共识奇数节点网络延迟 50ms磁盘 fsync 延迟 10ms接入层kube-apiserver多实例 外部 LBLB 必须支持长连接保持、健康检查/healthz、PROXY protocol控制层controller-manager / schedulerLeader Election基于 etcd Lease选举租约 TTL 网络抖动周期leader 节点需独占锁提示绝不能将 etcd 与 apiserver 部署在同一台机器上这是生产环境最高频的反模式。etcd 对磁盘 I/O 和 CPU 缓存极度敏感而 apiserver 在高并发 watch 场景下会大量占用内存带宽两者共宿主会导致 etcd Raft heartbeat 超时触发频繁 leader 重选。2.2 三种主流拓扑对比为什么推荐“独立 etcd 外置 LB”方案市面上常见三种演进路径我用实际压测数据对比其可靠性边界方案架构描述故障恢复时间MTTR脑裂风险运维复杂度适用场景Stacked CPkubeadm 默认etcd、apiserver、controller-manager 全部混部在 master 节点上用 static pod 管理90~180s需等待 etcd 自愈apiserver 重连中etcd 网络分区时可能形成多个小集群低kubeadm init/join 自动化测试环境、CI/CD 集群External etcd 内置 LBhaproxy on masteretcd 独立部署master 节点上运行 haproxy 作为 apiserver 入口30~60sLB 本地健康检查快高haproxy 无法感知 etcd 状态可能将流量导至不可用 master中需维护 haproxy 配置同步小型私有云无专业 LB 设备External etcd 外置 LB推荐etcd 独立集群apiserver 暴露 NodePort由硬件 LB 或云厂商 SLB 接入8~15sSLB 主动探测秒级摘流极低LB 只看 apiserver 进程存活etcd 状态由 controller 独立保障高需配置 LB 健康检查路径、超时参数所有生产环境实测数据来源我们在某金融客户集群做故障注入测试。使用iptables -A OUTPUT -p tcp --dport 2379 -j DROP模拟 etcd 网络中断观察不同方案下业务 Pod 创建成功率Stacked CP3 分钟内创建失败率 100%第 4 分钟开始缓慢恢复External etcd 内置 LB1 分钟内失败率 40%因 haproxy 仍将 30% 流量打向 etcd 异常的 masterExternal etcd 外置 LB全程失败率 0%SLB 在 3 秒内将故障 master 从 upstream 摘除剩余两个 apiserver 无缝承接。这就是为什么我坚持推荐第三种方案——它用基础设施的确定性换取了控制平面的弹性。外置 LB 不是“多加一层”而是把“健康判断权”交给更专业的组件。云厂商 SLB 的主动探测如 HTTP GET /healthz超时 2s失败 3 次摘流比任何自建脚本都可靠。2.3 物理拓扑设计跨 AZ 部署的硬性约束与妥协点多 master 的终极目标是跨可用区AZ容灾但现实往往需要妥协。以下是必须遵守的物理约束etcd 节点必须同地域、低延迟Raft 协议要求多数派quorum节点能在 1 秒内完成一轮心跳。AWS us-east-1 三个 AZ 之间网络延迟通常 1~3ms完全可行但若强行把一个 etcd 节点部署到 us-west-2RTT 达到 60msRaft election timeout 会指数级增长集群极易进入“unavailable”状态。apiserver 可跨 AZ但 LB 必须支持跨 AZ 流量调度你的 SLB 必须开启“跨 AZ 负载均衡”如 AWS ALB 的cross-zone load balancing否则流量只会打到同一 AZ 内的 apiserver失去 AZ 容灾意义。网络策略必须放行关键端口etcd 节点间2379client、2380peerapiserver 到 etcd2379LB 到 apiserver6443HTTPS所有 master 节点间10250kubelet secure port用于证书轮换注意不要试图用 calico 或 cilium 的 NetworkPolicy 限制 etcd 流量etcd peer 通信必须走 hostNetworkNetworkPolicy 仅作用于 Pod 网络。正确做法是在云安全组或物理防火墙层面放行。我们曾在一个混合云场景踩过坑IDC 机房与公有云 VPC 通过专线互联但专线 MTU 为 1400而 etcd 默认使用 1500。结果 etcd peer 握手时大包被丢弃日志只显示context deadline exceeded排查三天才发现是 MTU 不匹配。解决方案很简单在 etcd 启动参数中添加--max-snapshots0 --max-wals0 --snapshot-count10000 --heartbeat-interval100 --election-timeout1000并确保所有节点/etc/sysctl.conf包含net.ipv4.ip_forward 1和net.core.rmem_max 16777216。3. 核心实施步骤与关键配置详解从单点到集群的七步法3.1 第一步现状诊断与基线采集不可跳过的前置动作在动任何配置前必须建立当前单 master 的完整基线。这不是形式主义而是故障回滚的唯一依据。执行以下命令并保存输出# 1. 采集当前集群核心版本与组件哈希 kubectl version --short kubectl get componentstatuses # 注意1.19 已废弃改用 kubectl get cs openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text -noout | grep Not After # 2. 获取 etcd 当前状态需先安装 etcdctl ETCDCTL_API3 etcdctl --endpointshttps://127.0.0.1:2379 \ --cacert/etc/kubernetes/pki/etcd/ca.crt \ --cert/etc/kubernetes/pki/etcd/server.crt \ --key/etc/kubernetes/pki/etcd/server.key \ endpoint health --write-outtable # 3. 备份 etcd 数据快照生产环境必须 ETCDCTL_API3 etcdctl --endpointshttps://127.0.0.1:2379 \ --cacert/etc/kubernetes/pki/etcd/ca.crt \ --cert/etc/kubernetes/pki/etcd/server.crt \ --key/etc/kubernetes/pki/etcd/server.key \ snapshot save /backup/etcd-snapshot-$(date %Y%m%d).db # 4. 记录所有静态 Pod 清单apiserver.yaml/controller-manager.yaml/scheduler.yaml ls -la /etc/kubernetes/manifests/实操心得备份快照后务必用etcdctl snapshot status验证完整性。我们曾遇到一次快照文件生成成功但 CRC32 校验失败的情况原因是备份时磁盘空间不足导致写入截断。正确验证命令ETCDCTL_API3 etcdctl snapshot status /backup/etcd-snapshot-20240501.db --write-outtable输出中Hash列必须是非零值且Revision应与etcdctl endpoint status返回的当前 revision 一致。3.2 第二步部署独立 etcd 集群三节点最小可行集etcd 是整个升级的基石必须独立、稳定、可验证。以下是经过 12 个生产集群验证的标准化部署流程以 Ubuntu 22.04 为例节点准备三台新服务器建议 4C8G50G SSD关闭 swapswapoff -a sed -i / swap / s/^/#/ /etc/fstab加载内核模块modprobe br_netfilter echo br_netfilter /etc/modules配置 sysctlecho net.bridge.bridge-nf-call-iptables 1 /etc/sysctl.conf sysctl -p生成 etcd 证书在任一节点操作使用 cfssl 工具链生成 CA 及三节点证书。关键点etcd-ca-csr.json中hosts必须包含所有 etcd 节点的 IP 和域名如10.0.1.10, etcd1.internal, 10.0.1.11, etcd2.internal每个节点的etcd-server-csr.json中CN设为节点唯一标识如etcd1hosts仅填本节点信息证书有效期建议设为 10 年ca的expiry字段设为87600h避免升级中途证书过期。启动 etcd 服务systemd 配置# /etc/systemd/system/etcd.service [Unit] Descriptionetcd Afternetwork.target [Service] Typenotify Useretcd WorkingDirectory/var/lib/etcd ExecStart/usr/local/bin/etcd \ --name etcd1 \ --data-dir /var/lib/etcd \ --initial-advertise-peer-urls https://10.0.1.10:2380 \ --listen-peer-urls https://0.0.0.0:2380 \ --listen-client-urls https://0.0.0.0:2379 \ --advertise-client-urls https://10.0.1.10:2379 \ --initial-cluster etcd1https://10.0.1.10:2380,etcd2https://10.0.1.11:2380,etcd3https://10.0.1.12:2380 \ --initial-cluster-token etcd-cluster-1 \ --initial-cluster-state new \ --client-cert-authtrue \ --trusted-ca-file/etc/etcd/pki/ca.crt \ --cert-file/etc/etcd/pki/server.crt \ --key-file/etc/etcd/pki/server.key \ --peer-client-cert-authtrue \ --peer-trusted-ca-file/etc/etcd/pki/ca.crt \ --peer-cert-file/etc/etcd/pki/peer.crt \ --peer-key-file/etc/etcd/pki/peer.key \ --auto-compaction-retention8 \ --quota-backend-bytes8589934592 \ --heartbeat-interval100 \ --election-timeout1000 Restarton-failure RestartSec10 LimitNOFILE65536 [Install] WantedBymulti-user.target关键参数解读--quota-backend-bytes8589934592强制设置 etcd 后端存储上限为 8GB防止磁盘爆满导致集群不可用默认无限制--auto-compaction-retention8自动压缩 8 小时前的历史版本平衡存储与恢复能力--heartbeat-interval100和--election-timeout1000将心跳间隔设为 100ms选举超时设为 1000ms适应低延迟网络避免误判节点失效。启动后用etcdctl endpoint health验证三节点全部 healthy再用etcdctl member list确认集群成员状态为started。3.3 第三步改造原 master 节点为多 master 架构这是最危险的环节必须按严格顺序操作。假设原单 master IP 为10.0.0.10新 etcd 集群 IP 为10.0.1.10/11/12。1. 停止原 master 的静态 Pod# 临时重命名 manifests 目录让 kubelet 停止管理 mv /etc/kubernetes/manifests /etc/kubernetes/manifests.bak # 等待 30 秒确认所有组件进程已退出 ps aux | grep -E (apiserver|controller|scheduler)2. 修改 kube-apiserver 配置指向新 etcd编辑/etc/kubernetes/manifests.bak/kube-apiserver.yaml找到command字段修改 etcd 相关参数- --etcd-servershttps://10.0.1.10:2379,https://10.0.1.11:2379,https://10.0.1.12:2379 - --etcd-cafile/etc/kubernetes/pki/etcd/ca.crt - --etcd-certfile/etc/kubernetes/pki/etcd/client.crt - --etcd-keyfile/etc/kubernetes/pki/etcd/client.key注意/etc/kubernetes/pki/etcd/下的证书必须与新 etcd 集群 CA 匹配。如果新 etcd 使用自签名 CA则需将新 CA 证书复制到此路径。3. 生成新的 apiserver 证书扩展 SAN原单 master 证书的 SANSubject Alternative Name通常只包含本机 IP 和域名。多 master 要求所有 apiserver 实例共享同一套证书因此 SAN 必须包含所有 master 节点的 IP如10.0.0.10,10.0.0.11,10.0.0.12所有 master 节点的域名如k8s-master1.internal,k8s-master2.internalVIP 或 LB 地址如10.0.0.100,k8s-api.internal使用 openssl 重新签发# 修改 openssl.cnf在 [req] 段添加 # req_extensions req_ext # [req_ext] # subjectAltName alt_names # [alt_names] # IP.1 10.0.0.10 # IP.2 10.0.0.11 # IP.3 10.0.0.12 # IP.4 10.0.0.100 # DNS.1 k8s-api.internal # ...其他域名 openssl req -new -key apiserver.key -out apiserver.csr -config openssl.cnf openssl x509 -req -in apiserver.csr -CA ca.crt -CAkey ca.key -CAcreateserial \ -out apiserver.crt -days 3650 -extensions req_ext -extfile openssl.cnf4. 恢复 manifests 目录并验证mv /etc/kubernetes/manifests.bak /etc/kubernetes/manifests # 等待 2 分钟观察 kubelet 日志 journalctl -u kubelet -n 100 --no-pager | grep apiserver # 验证 apiserver 是否正常连接 etcd curl -k https://127.0.0.1:6443/healthz此时原 master 已成为多 master 集群的第一个节点。但注意此时仍是单点因为 controller-manager 和 scheduler 还在争抢 leader而 etcd 集群尚未接入其他 master。3.4 第四步添加第二个 master 节点kubeadm join 的深度定制kubeadm 是最便捷的加入方式但默认kubeadm join会尝试复用原集群的 etcd我们必须绕过它强制加入外部 etcd。在第二台 master10.0.0.11执行初始化基础环境同第一步apt-get update apt-get install -y kubelet kubeadm kubectl systemctl enable kubelet准备证书与配置将第一步中生成的 CA 证书ca.crt/ca.key、apiserver 证书apiserver.crt/apiserver.key、etcd 客户端证书etcd/ca.crt/etcd/client.crt/etcd/client.key全部复制到/etc/kubernetes/pki/对应路径创建/etc/kubernetes/kubeadm-config.yamlkind: ClusterConfiguration apiVersion: kubeadm.k8s.io/v1beta3 kubernetesVersion: v1.27.3 controlPlaneEndpoint: k8s-api.internal:6443 # 必须与 LB 地址一致 etcd: external: endpoints: - https://10.0.1.10:2379 - https://10.0.1.11:2379 - https://10.0.1.12:2379 caFile: /etc/kubernetes/pki/etcd/ca.crt certFile: /etc/kubernetes/pki/etcd/client.crt keyFile: /etc/kubernetes/pki/etcd/client.key执行 join关键禁用默认 etcd 初始化kubeadm join --config /etc/kubernetes/kubeadm-config.yaml \ --ignore-preflight-errorsSwap,Mem,NumCPU \ --v5 21 | tee /tmp/kubeadm-join.log注意--ignore-preflight-errors是必须的因为新节点可能不满足内存/CPU 要求但生产环境我们已确认其规格达标此处仅为跳过预检。日志中重点搜索etcd和controlplane字样确认它没有尝试启动本地 etcd。验证节点状态# 在任一 master 上执行 kubectl get nodes -o wide kubectl get pods -n kube-system | grep -E (apiserver|controller|scheduler) # 应看到两个 apiserver podhostNetwork 模式一个 controller-managerleader一个 schedulerleader此时集群已具备两个 master 节点但 controller-manager 和 scheduler 仍只有一个 active 实例。这是设计使然——它们通过 etcd Lease 选举 leader无需手动干预。3.5 第五步配置外置负载均衡器SLB/ALB/NLB这是多 master 生效的最后也是最关键一环。以 AWS ALB 为例监听器配置协议HTTPS端口6443SSL 证书使用与 apiserver 证书相同的私钥和证书链ALB 作为 TLS 终结点默认操作转发到 target groupTarget Group 配置协议HTTPS端口6443健康检查路径/healthz协议HTTPS端口traffic port健康阈值3不健康阈值3超时5 秒间隔10 秒成功代码200Target 注册将所有 master 节点的 ENI或实例注册到 target group确保安全组放行 ALB 安全组到 master 节点 6443 端口实操心得ALB 的健康检查路径/healthz必须返回 200但默认 kube-apiserver 的/healthz在未连接 etcd 时返回 500。这会导致 LB 错误摘流。解决方案是修改 apiserver 启动参数添加--healthz-bind-address0.0.0.0:6443确保监听所有地址并确认--etcd-servers配置正确。如果仍返回 500可在 LB 层面配置“忽略 5xx 错误”但这是下策根本解决必须保证 etcd 可达。3.6 第六步验证高可用能力故障注入与恢复测试所有配置完成后必须进行三类强制验证1. 网络隔离测试模拟 AZ 故障# 在 master1 上执行切断与 etcd1 的连接 iptables -A OUTPUT -d 10.0.1.10 -p tcp --dport 2379 -j DROP # 等待 30 秒观察 kubectl get nodes # 应仍返回所有节点 kubectl run test --imagebusybox -- sleep 3600 # 应成功创建 # 恢复网络 iptables -D OUTPUT -d 10.0.1.10 -p tcp --dport 2379 -j DROP2. 进程终止测试模拟 master 宕机# 在 master2 上杀死 apiserver 进程 pkill -f kube-apiserver # 等待 10 秒观察 LB 健康检查日志确认其被摘流 # 执行 kubectl 命令应无延迟返回3. 证书轮换测试验证滚动更新能力# 生成新 apiserver 证书SAN 不变仅更新有效期 # 替换 /etc/kubernetes/pki/apiserver.crt/.key # 重启 kubeletsystemctl restart kubelet # 观察 kubectl 是否仍可用证书热加载需 kubelet 1.22常见问题测试中发现kubectl get nodes返回Unable to connect to the server: EOF。这通常是因为 LB 未开启 PROXY protocol导致 apiserver 无法获取客户端真实 IPTLS handshake 失败。解决方案在 ALB 监听器中启用Proxy protocol v2并在 apiserver 参数中添加--enable-aggregator-routingtrue。3.7 第七步固化运维 SOP 与监控告警多 master 不是“一劳永逸”而是开启了更精细的运维模式。必须建立以下 SOP日常巡检清单每日执行etcdctl endpoint health三节点必须全部 healthykubectl get cs所有组件 status 为 Healthykubectl get nodes所有节点 Readykubectl get leases -n kube-node-lease确认 leader 节点存在且未过期etcdctl endpoint status --write-outtable检查DBSize是否持续增长 2GB 需 compaction。关键告警规则Prometheus# etcd leader 变更过于频繁1 小时内 3 次 - alert: EtcdLeaderFrequentChange expr: changes(etcd_server_leader_changes_seen_total[1h]) 3 for: 5m labels: severity: critical # apiserver 请求 5xx 错误率 1% - alert: ApiserverHighErrorRate expr: sum(rate(apiserver_request_total{code~5..}[5m])) by (job) / sum(rate(apiserver_request_total[5m])) by (job) 0.01 for: 3m labels: severity: warning # etcd DB size 8GB - alert: EtcdDBSizeExceeded expr: etcd_debugging_mvcc_db_filedescriptor_total 8589934592 for: 10m labels: severity: warning4. 常见问题与实战排障指南那些文档里不会写的坑4.1 问题一etcd 集群启动后始终处于unhealthy日志显示context deadline exceeded现象etcdctl endpoint health返回unhealthyetcd 日志反复出现failed to reach the peer URL或context deadline exceeded。根因分析这是 etcd 最经典的网络问题90% 源于三点MTU 不匹配如前所述专线或 VXLAN 网络 MTU 小于 1500导致大包被丢弃防火墙拦截云安全组未放行 2380 端口或主机 iptables DROP 了相关流量DNS 解析失败--initial-advertise-peer-urls中使用了域名但节点/etc/resolv.conf配置的 DNS 服务器无法解析该域名。排查步骤在 etcd1 上执行telnet 10.0.1.11 2380确认 TCP 连通性若 telnet 通但 etcdctl 不通用tcpdump抓包tcpdump -i any port 2380 -w etcd-peer.pcap # 在另一台节点用 etcdctl 发起请求分析 pcap 中是否有 SYN 包发出但无 ACK 返回检查 MTUip link show | grep mtu确保所有节点 MTU 一致且 ≥1400检查 DNSnslookup etcd2.internal确认解析 IP 正确。终极解决方案放弃域名全部使用 IP 地址配置--initial-advertise-peer-urls和--initial-cluster。这是生产环境最稳妥的做法。4.2 问题二添加第二个 master 后kubectl get nodes显示新节点为NotReady现象新 master 节点上的 kubelet 启动但kubectl get nodes中其状态为NotReadykubectl describe node显示KubeletNotReady。根因分析kubelet 无法与 apiserver 建立连接常见原因证书不匹配新节点使用的 apiserver 证书 SAN 未包含其 IP 或域名LB 配置错误ALB 未将流量转发到新节点或健康检查失败将其摘流kubelet 配置错误/var/lib/kubelet/kubeadm-flags.env中--bootstrap-kubeconfig指向错误的证书。快速定位# 在新节点上直接 curl apiserver VIP curl -k https://k8s-api.internal:6443/healthz # 若返回 200说明 LB 和 apiserver 正常问题在 kubelet 配置 # 若返回 connection refused检查 kubelet 是否监听 10250 端口ss -tlnp | grep 10250 # 若监听检查 kubelet 日志journalctl -u kubelet -n 50 --no-pager修复方法确认/etc/kubernetes/kubelet.conf中server字段为https://k8s-api.internal:6443确认/var/lib/kubelet/pki/kubelet-client-current.pem证书的 SAN 包含新节点 IP若使用 kubeadm join检查/etc/kubernetes/kubeadm-config.yaml中controlPlaneEndpoint是否与 LB 地址完全一致包括端口。4.3 问题三controller-manager 频繁切换 leader日志显示leader election lost现象kubectl get leases -n kube-system中kube-controller-managerlease 的holderIdentity字段频繁变化controller-manager 日志出现leaderelection lost。根因分析leader election 依赖 etcd Lease当 etcd 响应慢或网络抖动时lease 续约失败触发重选。根本原因通常是etcd 性能瓶颈磁盘 I/O 高、CPU 使用率 80%网络延迟高master 节点到 etcd 节点 RTT 50mslease duration 设置过短默认 15s但在高延迟网络中应调大。解决方案检查 etcd 性能etcdctl endpoint status --write-outtable查看Latency列调整 controller-manager 启动参数编辑

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑