在京东云(JD Cloud)上部署 Kubernetes(K8s)集群,通常推荐使用官方提供的 ACK(阿里云版 K8s 的对应产品是京东云的“容器服务”),或者使用 Cloud Provider Integration 手动搭建。考虑到稳定性和运维效率,首选方案是使用京东云托管的容器服务(Container Service for Kubernetes, CSK),它支持一键创建、自动升级和完善的监控告警。
以下是基于京东云托管容器服务(推荐)和手动安装 KubeKey/Kubeadm(高级/自定义需求)两种场景的完整步骤指南。
方案一:使用京东云托管容器服务(CSK)—— 推荐
这是最稳定、维护成本最低的方式,适合生产环境。
1. 准备工作
- 注册与实名认证:确保已在京东云完成账号注册和实名认证。
- 开通服务:登录 京东云控制台,搜索并进入“容器服务”或“容器引擎”。
- 网络规划:
- 准备一个 VPC(专有网络)。
- 划分好 子网(Subnet),用于放置节点。
- 配置好 安全组,开放必要端口(如 6443, 2379-2380 等)。
- 资源配额:确认账户内有足够的 ECS 实例配额和带宽预算。
2. 创建集群
- 在容器服务控制台点击 “创建集群”。
- 基础信息:
- 选择地域(Region)和可用区(Zone)。
- 设置集群名称、版本(建议选择最新稳定版 LTS)。
- 选择 VPC 和子网。
- 节点配置:
- 选择节点类型(ECS 实例规格,如 t5, c5 等)。
- 设置节点数量(至少 3 个用于高可用 Master 节点,或 1 个 Master + 多个 Worker)。
- 配置系统盘和数据盘大小。
- 选择镜像来源(通常默认即可)。
- 网络插件:
- 选择 CNI 插件(推荐 Terway 或 Flannel)。Terway 性能更好,支持弹性网卡;Flannel 兼容性广。
- 其他配置:
- 开启监控告警(对接云监控)。
- 配置日志服务(SLS),用于收集 Pod 日志。
- 确认并创建:
- 检查配置无误后提交订单,等待集群初始化(通常需要 10-15 分钟)。
3. 连接与管理
- 集群创建完成后,在控制台点击 “查看详情”。
- 下载
kubeconfig文件(或使用控制台内置的 Web Shell)。 - 将 kubeconfig 配置到本地:
mkdir -p $HOME/.kube cp /path/to/kubeconfig $HOME/.kube/config chmod 600 $HOME/.kube/config - 验证集群状态:
kubectl get nodes kubectl get pods --all-namespaces
方案二:手动在京东云 ECS 上部署 K8s(使用 KubeKey 或 Kubeadm)
适用于需要深度定制、特殊网络拓扑或学习原理的场景。
1. 基础设施准备
- 购买 ECS 实例:
- Master 节点:建议 3 台(奇数),配置至少 2 核 4G(生产建议更高),系统盘 40G+。
- Worker 节点:根据负载需求购买,配置可灵活调整。
- 操作系统:推荐 CentOS 7.9 或 Ubuntu 20.04/22.04(需内核版本 >= 3.10)。
- 网络与安全组配置:
- 所有节点必须在同一个 VPC 内,且处于同一子网(或互通的子网)。
- 安全组规则:
- 允许 TCP 6443 (API Server)
- 允许 TCP 2379-2380 (Etcd)
- 允许 TCP 10250 (Kubelet)
- 允许 UDP 8472 (Flannel VXLAN,若使用 Flannel)
- 允许 ICMP (Ping)
- 允许 SSH (22) 仅从管理机访问。
- DNS 配置:确保所有节点能解析域名,建议修改
/etc/hosts绑定内部 IP 和主机名。
2. 系统环境初始化(在所有节点执行)
以 CentOS 为例:
# 1. 关闭防火墙和 SELinux
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 2. 关闭 Swap 分区(K8s 要求)
swapoff -a
sed -i '/ swap / s/^(.*)$/#1/g' /etc/fstab
# 3. 加载内核模块
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
overlay
EOF
modprobe br_netfilter
# 4. 配置内核参数
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
# 5. 安装容器运行时 (Docker 或 Containerd)
# 这里以 Docker 为例(需安装旧版 docker-ce 19.03+ 或新版 containerd)
# 注意:京东云镜像源可能较慢,建议使用国内提速源
yum install -y docker-ce docker-ce-cli containerd.io
systemctl enable --now docker
3. 部署 K8s 集群(使用 KubeKey 简化流程)
相比 kubeadm init,KubeKey 工具更适合在批量机器上自动化部署。
- 准备主控机:在一台 ECS 上安装 Python 和 pip。
- 安装 KubeKey:
curl -sfL https://get.kubesphere.io/v2 | sh -s v2.1.0 - 生成配置文件:
./kk create config --with-kubernetes v1.28.0 --with-docker编辑生成的
config.yaml:- 在
nodes:下填入所有 Master 和 Worker 的内网 IP。 - 在
kubernetes:下配置 API Server 地址(通常填第一个 Master 的内网 IP)。
- 在
- 执行部署:
# 首次部署 ./kk deploy cluster my-cluster --yes该命令会自动分发二进制文件、初始化 Etcd、启动 API Server 并加入 Worker 节点。
4. 配置负载均衡(可选但推荐)
如果未使用托管服务,需自行配置 SLB(负载均衡)来暴露 API Server 或 Ingress。
- 在京东云控制台购买 SLB。
- 监听端口 6443,后端服务器指向 Master 节点。
- 更新
kubeconfig中的 server 地址为 SLB 的公网/内网 IP。
关键注意事项
- 网络安全:
- 严禁将 Kubernetes API Server (6443) 直接暴露在公网,除非做了严格的白名单限制。
- 务必配置好安全组规则,避免 Etcd 端口泄露导致数据被篡改。
- 时间同步:
- K8s 对时间非常敏感,请确保所有节点通过 NTP 服务保持时间同步(京东云 ECS 默认已开启 NTP,建议检查
chronyd状态)。
- K8s 对时间非常敏感,请确保所有节点通过 NTP 服务保持时间同步(京东云 ECS 默认已开启 NTP,建议检查
- 存储与网络:
- 如果使用持久化存储(PV/PVC),京东云提供 CBS(云硬盘) 和 CFS(文件存储) 作为后端 StorageClass。
- 网络插件选择 Terway 时,Pod IP 会直接使用 VPC IP,无需 NAT,性能更优。
- 备份与恢复:
- 定期备份 Etcd 数据(托管服务通常自动备份,自建需脚本定时备份)。
- 保存好
kubeconfig和etcd证书文件。
总结
对于绝大多数用户,直接在京东云控制台使用“容器服务”创建集群是最佳选择,它能屏蔽底层复杂的网络和安全配置,并提供原生的监控、日志和升级能力。只有在有特殊网络隔离、特定内核参数需求或学习目的时,才建议采用手动部署方案。
CLOUD技术笔记