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

K8s新手求助:AWS环境下如何部署仅个人可访问的私有容器服务

解决AWS Kubernetes集群中私有容器服务的访问问题

Hey there! I totally get where you're coming from—you want your Kubernetes service accessible only to you, not the whole internet. Let's walk through a few proven methods to make this work in your AWS HA cluster setup:

1. 使用AWS Internal LoadBalancer(推荐长期使用)

AWS支持创建仅在VPC内部可见的负载均衡器,这样你的服务不会暴露公网IP,只有VPC内的资源或通过VPN/VPC对等连接接入的客户端能访问。

配置方法:

在你的Service YAML中添加AWS专属的注解,保持type: LoadBalancer:

apiVersion: v1
kind: Service
metadata:
  name: your-private-service
  annotations:
    # 关键注解:标记为内部LB
    service.beta.kubernetes.io/aws-load-balancer-internal: "true"
spec:
  type: LoadBalancer
  selector:
    app: your-app-label
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080 # 对应你的容器端口

访问方式:

  • 应用这个配置后,kubectl get service会返回一个VPC私有IP作为EXTERNAL-IP(实际是VPC内网IP)。
  • 你需要通过AWS VPN Client连接到你的VPC,或者通过Bastion主机跳转,就能访问这个私有IP了。

2. Kubectl Port-Forward(临时调试首选)

如果只是临时访问服务(比如调试),不需要修改任何服务配置,直接用kubectl port-forward把本地端口转发到集群内的服务:

# 转发本地8080端口到服务的80端口
kubectl port-forward service/your-service-name 8080:80

然后在本地浏览器访问http://localhost:8080即可。这个方式只有运行kubectl的机器能访问服务,完全私有。

3. Bastion主机端口转发

如果你的集群节点在私有子网(无法直接访问),可以部署一台Bastion堡垒机在公有子网,通过它做端口转发到NodePort服务:

步骤:

  1. 创建一台Bastion EC2实例,放在公有子网,安全组只允许你的公网IP访问SSH(22端口)。
  2. 获取你的NodePort服务端口和集群节点的私有IP:
    kubectl get service your-nodeport-service -o wide # 查看PORT(S)列,比如30080/TCP
    kubectl get nodes -o wide # 查看INTERNAL-IP列
    
  3. 用SSH做本地端口转发:
    ssh -i your-ssh-key.pem ec2-user@bastion-public-ip -L 8080:node-internal-ip:30080
    
  4. 本地浏览器访问http://localhost:8080就能访问服务了。

4. AWS VPN Client接入VPC

配置AWS Client VPN,让你的本地机器接入到VPC的内网环境,这样你就可以直接访问:

  • Internal LoadBalancer的私有IP
  • NodePort服务的节点私有IP:NodePort端口

这个方式适合长期需要访问集群私有资源的场景,配置一次后就能像访问本地网络一样访问服务。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:54:39