在京东云上搭建Kubernetes集群需要哪些前置条件?

在京东云(JD Cloud)上搭建 Kubernetes (K8s) 集群,并不是简单地“点几下鼠标”就能搞定的。作为过来人,我直接给你拆解最核心的前置条件。这些条件如果不满足,你在控制台甚至找不到创建入口,或者创建了也跑不起来。

我们可以把前置条件分为三大类:账号与权限、网络基础架构、资源配额。


一、 账号与权限准备(门槛最低,但最容易忽略)

  1. 实名认证的京东云账号

    • 这是废话,但必须强调。个人和企业账号在资源额度上有限制,建议直接使用企业账号或完成高级认证的账号。
    • 关键点:确保账号状态正常,没有欠费或被冻结。
  2. IAM 子账号权限(最佳实践)

    • 不要用主账号的 AccessKey/SecretKey 去操作 K8s API 或进行自动化部署。
    • 你需要:创建一个 IAM 子账号,并授予以下策略权限:
      • ReadOnlyAccess(至少需要读取 VPC、ECS 信息)
      • EC2FullAccess(用于管理节点池的 ECS 实例)
      • VPCFullAccess(用于配置负载均衡和安全组)
      • 如果涉及容器镜像仓库,还需要 CRFullAccess(Container Registry)。
    • 为什么? K8s 集群中的 Worker Node 需要通过 IAM 临时凭证访问云上的其他服务(如挂载 OBS 对象存储、访问 CLB 等),这需要正确的角色信任关系配置。
  3. 开通相关云服务

    • 虽然 K8s 是托管服务,但它底层依赖其他服务。你需要确认已开通:
      • ECS(弹性云服务器):用于运行 Master 和 Worker 节点。
      • VPC(虚拟私有云):K8s 集群必须运行在 VPC 内。
      • SLB/CLB(负载均衡):用于暴露 Service 的外部访问。
      • CBS(云硬盘):部分场景下用于持久化存储。

二、 网络基础架构(最复杂的部分,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 节点端口匹配。

三、 资源配额与计算能力(决定集群能跑多大)

  1. ECS 实例规格与镜像

    • 操作系统:京东云 K8s 集群通常基于 CentOS 7.x 或 Ubuntu 20.04+ 定制镜像。确保你选择的 ECS 实例类型支持该 OS。
    • 内核版本:建议使用较新的内核(4.19+),以支持 eBPF、Cgroup v2 等新特性。
    • 实例规格:
      • Master 节点:建议至少 2C4G 或更高,生产环境推荐 4C8G。
      • Worker 节点:根据业务需求选择,通用型(ecs.g)适合大多数场景。
  2. 资源配额(Quota)

    • 检查你的账户余额和资源上限:
      • 每个区域(Region)对 ECS 实例总数、CPU 核数、内存大小都有默认配额。
      • 例如:你可能只有 10 台 ECS 的配额,但想创建 20 节点的集群,会被拒绝。
      • 操作:登录京东云控制台 -> 费用中心 -> 资源配额申请,提前提交扩容申请。
  3. 存储后端(可选但重要)

    • 如果你需要使用动态 PV(Persistent Volume),需要提前规划:
      • CBS(云硬盘):确保所选可用区有 CBS 配额。
      • OBS(对象存储):如果集成 CSI 驱动,需要创建 OBS Bucket 并配置好 AK/SK。

四、 客户端工具准备(别忘了这一步)

集群建好后,你要怎么管它?

  1. kubectl 命令行工具:安装对应版本的 kubectl,确保与集群 API 版本兼容。
  2. kubeconfig 文件:创建集群后,京东云会提供下载 kubeconfig 的链接。务必妥善保管,这是集群的“钥匙”。
  3. 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 » 在京东云上搭建Kubernetes集群需要哪些前置条件?