You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将外部服务器/VPS添加到Amazon EKS集群作为工作节点?

外部VPS接入Amazon EKS集群作为工作节点操作方案

前置要求

  • 外部VPS安装的kubelet、kubeadm、kubectl版本与EKS集群的Kubernetes版本完全一致
  • EKS控制平面的443、6443端口对外部VPS公网/私网开放,外部VPS的10250、30000-32767端口对EKS控制平面开放,网络延迟建议控制在1s以内,避免节点心跳异常
  • 外部VPS使用EKS支持的操作系统(Amazon Linux 2、Ubuntu 20.04/22.04等)
  • 本地已配置好有权限操作EKS集群的aws、kubectl命令行工具

操作步骤

1. 生成EKS集群加入凭证

在本地操作终端执行以下命令,生成节点加入所需的token和命令:

# 先获取EKS集群的访问凭证
aws eks update-kubeconfig --name <你的集群名称> --region <集群所在区域>
# 生成有效期2小时的加入token
kubeadm token create --ttl 2h --print-join-command

保存输出的kubeadm join命令备用。

2. 外部VPS环境初始化

登录外部VPS执行以下配置:

  • 关闭swap分区
    swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
    
  • 加载Kubernetes必需内核模块
    modprobe br_netfilter
    echo 'net.bridge.bridge-nf-call-iptables=1' >> /etc/sysctl.conf
    echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
    sysctl -p
    
  • 安装容器运行时,推荐使用EKS默认的containerd,安装完成后执行systemctl enable --now containerd启动服务
  • 安装对应版本的kubelet、kubeadm、kubectl,执行systemctl enable --now kubelet启动kubelet服务

3. 执行节点加入操作

在外部VPS上执行之前保存的kubeadm join命令,格式参考:

kubeadm join <EKS控制平面端点>:6443 --token <生成的token> --discovery-token-ca-cert-hash sha256:<CA证书哈希>

命令执行完成后,回到本地终端执行kubectl get nodes,即可看到新节点已出现在节点列表中。

4. 配置节点权限与网络

  • 编辑EKS的aws-auth配置,给新节点授予集群访问权限:kubectl edit configmap aws-auth -n kube-system,在mapUsers或mapRoles字段中添加节点的认证身份
  • 安装兼容跨节点网络的CNI插件,如果默认的AWS VPC CNI无法适配外部节点,可以替换为Calico、Flannel等通用CNI插件
  • 等待节点状态变为Ready,即完成接入操作

特定Deployment调度配置

为了只让指定业务部署到该外部节点,可通过节点标签、污点、容忍度组合实现:

  1. 给外部节点打专属地理标签:
    kubectl label nodes <新节点名称> location=local-target-region
    
  2. 给节点添加污点,避免普通Pod被调度上来:
    kubectl taint nodes <新节点名称> dedicated=local-only:NoSchedule
    
  3. 在目标Deployment的Pod模板中添加节点选择器和容忍度:
    spec:
      template:
        spec:
          nodeSelector:
            location: local-target-region
          tolerations:
          - key: "dedicated"
            operator: "Equal"
            value: "local-only"
            effect: "NoSchedule"
    

完成配置后,只有添加了对应容忍度的Deployment才会被调度到该外部VPS节点上。

注意事项

  • EKS 1.24及以上版本已废弃dockershim,请勿使用Docker作为容器运行时,避免兼容性问题
  • 若外部节点和EKS控制平面公网通信不安全,可配置WireGuard、IPsec等加密隧道承载集群内流量
  • 建议为外部节点单独配置适配本土云存储的StorageClass,满足有状态业务的存储需求

内容的提问来源于stack exchange,提问作者ATheCoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 05:24:02