Skip to main content

通过为aws-eks托管的k8s中的service启用nlb以实现对外暴露服务

· One min read
orange
programmer on jvm platform

默认情况下k8s中的ServiceClusterIP类型, 即只能在集群内部访问, 无法通过外部访问(这里的外部指的是k8s集群外部, 即k8s集群所在的VPC外部).
NodeProt也存在同样的问题, 无法通过外部访问.
为了能够通过外部访问k8s中的service, 需要启用nlb以实现为aws-eks托管的k8s中的service启用外部访问能力.

解决方案

前提

kubernetes上存在aws-load-balancer-controller, 否则该功能无法使用

更新Service, 追加annotations以及修改typeLoadBalancer

apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
service.beta.kubernetes.io/aws-load-balancer-type: external
spec:
type: LoadBalancer

稍等片刻后通过kubectl get svc查看servicestatus信息, 可以看到status中的loadBalancer信息中包含了hostname信息. 通过hostname即可访问service.

参考