这是我在 k8s.yml 文件中定义的:
apiVersion: v1
kind: Service
metadata:
name: myservice
namespace: mynamespace
labels:
app: myservice
annotations:
service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "true"
external-dns.alpha.kubernetes.io/hostname: "myservice."
spec:
selector:
app: myservice
type: LoadBalancer
ports:
- name: http
port: 8080
targetPort: 8080
protocol: TCP
运行此命令:
kubectl describe service myservice
给我这样的“LoadBalancer Ingress”:
类型:LoadBalancer IP:
25.0.162.225 LoadBalancer 入口:internal-a9716e......us-west-2.elb.amazonaws.com
据我了解,我使用的发布类型是“LoadBalancer”,它可以帮助我将我的服务公开给外部 IP 地址(请参阅https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/) . Ingress 是一个不同的东西,它位于服务的前面,我没有在我的 yml 文件中定义它。(参考:https ://medium.com/google-cloud/kubernetes-nodeport-vs-loadbalancer-vs-ingress-when-should-i-use-what-922f010849e0 )使用“LoadBalancer Ingress”我能够从集群外部访问我的服务,但我不明白为什么它被称为“LoadBalancer Ingress”?它与 Ingress 有什么关系?或者每个负载均衡器都配备了一个用于服务公开目的的入口是真的吗?