云计算k8s集群部署配置问题总结

根据 Kubernetes 多控制平面节点 的标准实践,必须修改其他 master 节点的 advertiseAddress 为各自独立的静态 IP。以下是详细解释和操作建议:


核心结论

必须修改 :每个控制平面节点应具有唯一的 advertiseAddress(对应自身固定 IP),而非重复使用同一 IP。

⚠️ 不修改的风险:可能导致以下问题:

  • 端口冲突:多个 API Server 尝试绑定同一 IP+Port;
  • 脑裂风险:不同控制平面节点互相干扰;
  • 证书校验失败:TLS 证书与实际访问 IP 不匹配;
  • 服务发现异常:工作节点无法稳定访问正确的控制平面。

具体操作指南

🔧 Step 1: 规划控制平面 IP 方案
节点角色 主机名 固定 IP advertiseAddress 设置值
Master Node 1 k8s-master01 192.168.170.151 192.168.170.151
Master Node 2 k8s-master02 192.168.170.152 → 修改为 192.168.170.152
Master Node 3 k8s-master03 192.168.170.153 → 修改为 192.168.170.153
📌 Step 2: 修改配置文件

在所有新增的控制平面节点上执行以下操作:

yaml 复制代码
# /root/kubeadm-config.yaml 示例片段
localAPIEndpoint:
  advertiseAddress: <该节点专属IP>  # e.g. 192.168.170.152 (for master02)
  bindPort: 6443                    # 保持默认即可
🛡️ Step 3: 确保配套措施同步更新
项目 要求
主机名解析 所有节点的 /etc/hosts 需包含所有控制平面节点的 IP ↔ 主机名映射
DNS 正向解析 内部 DNS 服务器需为每个控制平面 IP 提供 A 记录(如 api.cluster → LB VIP)
负载均衡器配置 若使用硬件负载均衡器,需将所有控制平面 IP 加入后端池
防火墙规则 开放所有控制平面 IP 的 6443/TCP 端口

关键注意事项

⚙️ 技术细节说明

1️⃣ 为什么不能用相同 IP?

  • advertiseAddress 决定 API Server 对外暴露的监听地址;
  • 如果两个节点使用同一 IP,后启动的节点会因端口已被占用而启动失败;
  • TLS 引导证书中嵌入了节点 IP 信息,重复会导致证书校验错误。

2️⃣ controlPlaneEndpoint 的区别

  • controlPlaneEndpoint: 集群级别的虚拟入口(通常配合负载均衡器使用);
  • advertiseAddress: 单个控制平面节点的实际服务地址;
  • 两者可以不同(推荐通过负载均衡器统一入口)。

3️⃣ 动态 IP 的风险

❗ 如果使用 DHCP 分配 IP,一旦重启导致 IP 变化,集群将不可用!

👉 强制要求:所有控制平面节点必须使用静态 IP。


验证方法

完成配置后,可通过以下命令验证各节点状态:

bash 复制代码
# 在任意节点查看集群成员列表
kubectl get nodes -o wide

# 检查控制平面组件运行状态
kubectl get pods -n kube-system --field-selector=observed_phase=Running

总结

场景 是否正确做法
单 Master 集群 无需修改(仅一个控制平面节点)
多 Master 高可用集群 ✔️ 每个节点必须使用唯一 IP
跨机房/云厂商混合部署 ✔️ 不同机房节点使用各自专线 IP
使用虚拟 IP(VIP)作为入口 ✔️ 但底层仍需真实 IP 支撑

请根据您的实际网络环境选择合适方案,并确保所有控制平面节点使用静态 IP。

相关推荐
Monly2123 分钟前
Docker:部署Java后端
java·docker·容器
Johny_Zhao3 小时前
Conda、Anaconda、Miniconda对比分析
linux·网络安全·信息安全·kubernetes·云计算·conda·shell·containerd·anaconda·yum源·系统运维·miniconda
小王努力学编程3 小时前
从零开始的 Docker 之旅
linux·运维·服务器·docker·容器·容器编排·镜像制作
陈陈CHENCHEN6 小时前
【Kubernetes】在 K8s 上部署 Alertmanager
kubernetes
斯普信专业组6 小时前
Caddy + CoreDNS 深度解析:从功能架构到性能优化实践(上)
性能优化·架构·kubernetes·coredns
道一云黑板报8 小时前
Spark云原生流处理实战与风控应用
大数据·ai·云原生·spark·kubernetes·ai编程
GGGGGGGGGGGGGG.10 小时前
CI/CD 全链路实践:从 Git 基础到 Jenkins + GitLab 企业级部署
运维·git·ci/cd·云原生·gitlab·jenkins
007php00710 小时前
使用 Docker、Jenkins、Harbor 和 GitLab 构建 CI/CD 流水线
数据库·ci/cd·docker·容器·golang·gitlab·jenkins
退役小学生呀15 小时前
十九、云原生分布式存储 CubeFS
分布式·docker·云原生·容器·kubernetes·k8s
香蕉割草机17 小时前
云原生、容器及数据中心网络相关名词记录
网络·云原生