在京东云(JD Cloud)上搭建 Kubernetes (K8s) 集群,并不是简单地“点几下鼠标”就能搞定的。作为过来人,我直接给你拆解最核心的前置条件。这些条件如果不满足,你在控制台甚至找不到创建入口,或者创建了也跑不起来。
我们可以把前置条件分为三大类:账号与权限、网络基础架构、资源配额。
一、 账号与权限准备(门槛最低,但最容易忽略)
-
实名认证的京东云账号
- 这是废话,但必须强调。个人和企业账号在资源额度上有限制,建议直接使用企业账号或完成高级认证的账号。
- 关键点:确保账号状态正常,没有欠费或被冻结。
-
IAM 子账号权限(最佳实践)
- 不要用主账号的 AccessKey/SecretKey 去操作 K8s API 或进行自动化部署。
- 你需要:创建一个 IAM 子账号,并授予以下策略权限:
ReadOnlyAccess(至少需要读取 VPC、ECS 信息)EC2FullAccess(用于管理节点池的 ECS 实例)VPCFullAccess(用于配置负载均衡和安全组)- 如果涉及容器镜像仓库,还需要
CRFullAccess(Container Registry)。
- 为什么? K8s 集群中的 Worker Node 需要通过 IAM 临时凭证访问云上的其他服务(如挂载 OBS 对象存储、访问 CLB 等),这需要正确的角色信任关系配置。
-
开通相关云服务
- 虽然 K8s 是托管服务,但它底层依赖其他服务。你需要确认已开通:
- ECS(弹性云服务器):用于运行 Master 和 Worker 节点。
- VPC(虚拟私有云):K8s 集群必须运行在 VPC 内。
- SLB/CLB(负载均衡):用于暴露 Service 的外部访问。
- CBS(云硬盘):部分场景下用于持久化存储。
- 虽然 K8s 是托管服务,但它底层依赖其他服务。你需要确认已开通:
二、 网络基础架构(最复杂的部分,90% 的问题出在这里)
Kubernetes 对网络要求极高,网络不通 = 集群不可用。你必须提前规划好以下网络要素:
1. VPC 子网规划
- 必须存在一个可用的 VPC:新建 K8s 集群时,必须指定一个已有的 VPC ID。
- 子网划分:
- Master 节点子网:建议独立子网,CIDR 不要太小(至少 /24),因为 Master 节点数量固定(通常 3 个高可用)。
- Worker 节点子网:同样需要独立子网,CIDR 要足够大(推荐 /20 或更大),因为节点可能会自动扩缩容。
- 注意:两个子网必须在同一个 VPC 内,且路由表互通。
2. 安全组(Security Group)规则
这是新手踩坑最多的地方。不要只开 22 端口!
- Master 节点安全组:
- 开放 TCP 6443(Kube-apiserver)
- 开放 TCP 10250(Kubelet)
- 开放 TCP 2379-2380(etcd)
- 开放 TCP 10259(kube-scheduler)
- 开放 TCP 10257(kube-controller-manager)
- 允许来自 Worker 节点子网的 ICMP 和 TCP 通信。
- Worker 节点安全组:
- 开放 TCP 10250(Kubelet)
- 开放 TCP 30000-32767(NodePort 范围,默认)
- 允许来自 Master 节点子网的 ICMP 和 TCP 通信。
- 允许所有节点之间的 Pod CIDR 互通(通过 CNI 插件实现,但底层安全组需放行)。
3. CNI 插件选择与 IPAM
- 京东云支持多种 CNI 插件(如 VPC-CNI、Flannel 等)。
- VPC-CNI(推荐):Pod IP 直接从 VPC 子网分配,性能最好,无需 NAT 转换。
- 前置条件:你的子网必须有足够的空闲 IP 地址。如果一个 /24 子网有 254 个 IP,你最多只能跑 ~250 个 Pod。规划不足会导致 Pod 无法启动。
- Flannel/VXLAN:如果选择非 VPC-CNI,需要确保 VPC 支持 VXLAN 封装,且 MTU 值设置正确(通常需调整为 1450 或更低,避免分片问题)。
4. 负载均衡(SLB/CLB)
- 如果你需要对外暴露 Service(Type: LoadBalancer 或 Ingress),你需要提前准备好:
- 一个公网 SLB 实例(或绑定 EIP 的内网 SLB)。
- 确保 SLB 的健康检查端口与 K8s 节点端口匹配。
三、 资源配额与计算能力(决定集群能跑多大)
-
ECS 实例规格与镜像
- 操作系统:京东云 K8s 集群通常基于 CentOS 7.x 或 Ubuntu 20.04+ 定制镜像。确保你选择的 ECS 实例类型支持该 OS。
- 内核版本:建议使用较新的内核(4.19+),以支持 eBPF、Cgroup v2 等新特性。
- 实例规格:
- Master 节点:建议至少 2C4G 或更高,生产环境推荐 4C8G。
- Worker 节点:根据业务需求选择,通用型(ecs.g)适合大多数场景。
-
资源配额(Quota)
- 检查你的账户余额和资源上限:
- 每个区域(Region)对 ECS 实例总数、CPU 核数、内存大小都有默认配额。
- 例如:你可能只有 10 台 ECS 的配额,但想创建 20 节点的集群,会被拒绝。
- 操作:登录京东云控制台 -> 费用中心 -> 资源配额申请,提前提交扩容申请。
- 检查你的账户余额和资源上限:
-
存储后端(可选但重要)
- 如果你需要使用动态 PV(Persistent Volume),需要提前规划:
- CBS(云硬盘):确保所选可用区有 CBS 配额。
- OBS(对象存储):如果集成 CSI 驱动,需要创建 OBS Bucket 并配置好 AK/SK。
- 如果你需要使用动态 PV(Persistent Volume),需要提前规划:
四、 客户端工具准备(别忘了这一步)
集群建好后,你要怎么管它?
- kubectl 命令行工具:安装对应版本的 kubectl,确保与集群 API 版本兼容。
- kubeconfig 文件:创建集群后,京东云会提供下载 kubeconfig 的链接。务必妥善保管,这是集群的“钥匙”。
- Helm(可选):如果你计划使用 Helm 管理应用,提前安装 Helm CLI。
✅ 总结清单(Checklist)
| 类别 | 具体项 | 是否完成 |
|---|---|---|
| 账号 | 实名认证 + 企业级账号 | ☐ |
| 权限 | IAM 子账号 + 必要策略(EC2, VPC, CR) | ☐ |
| 网络 | 已创建 VPC + 两个独立子网(Master/Worker) | ☐ |
| 安全 | 已配置 Master/Worker 安全组规则(含 K8s 端口) | ☐ |
| 资源 | 已申请足够 ECS/CPU/内存 配额 | ☐ |
| 存储 | (如需)已创建 CBS/OBS 资源 | ☐ |
| 工具 | 已安装 kubectl | ☐ |
最后提醒:
- 不要在生产环境直接用默认配置。特别是安全组和子网 IP 规划,一旦出错,排查成本极高。
- 优先使用京东云的“托管版 K8s”(CKS),而不是自己手动用 kubeadm 在 ECS 上搭。托管版会自动处理 Master 节点的高可用、升级和安全补丁,你只需要关注 Worker 节点和网络。
按这个清单逐项核对,基本可以避开 90% 的坑。祝你部署顺利!
云知道CLOUD