通过为aws-eks托管的k8s中的service启用nlb以实现对外暴露服务
· One min read
默认情况下k8s
中的Service
为ClusterIP
类型, 即只能在集群内部访问, 无法通过外部访问(这里的外部指的是k8s
集群外部,
即k8s
集群所在的VPC
外部).
NodeProt
也存在同样的问题, 无法通过外部访问.
为了能够通过外部访问k8s
中的service
, 需要启用nlb
以实现为aws-eks
托管的k8s
中的service
启用外部访问能力.
解决方案
前提
kubernetes
上存在aws-load-balancer-controller
, 否则该功能无法使用
更新Service
, 追加annotations
以及修改type
为LoadBalancer
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
查看service
的status
信息, 可以看到status
中的loadBalancer
信息中包含了hostname
信息.
通过hostname
即可访问service
.