我了解我们可以将Serive作为负载均衡器公开。
kubectl expose deployment hello-world --type=LoadBalancer --name=my-service
kubectl get services my-service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-service LoadBalancer 10.3.245.137 104.198.205.71 8080/TCP 54s
Namespace: default
Labels: app.kubernetes.io/name=load-balancer-example
Annotations: <none>
Selector: app.kubernetes.io/name=load-balancer-example
Type: LoadBalancer
IP: 10.3.245.137
LoadBalancer Ingress: 104.198.205.71
我已经创建了一个静态IP。
是否可以用静态IP替换 LoadBalancer Ingress ?
答案 0 :(得分:2)
tl; dr =是,但是尝试在Service
资源中编辑IP并不能达到您的期望-只是向您报告世界的当前状态
是否可以用静态IP替换LoadBalancer Ingress?
首先,当Kubernetes要求LoadBalancer创建负载均衡器时,它就是您的云提供商创建的。您有a lot of annotations(这是一个适用于AWS的,但您的云提供商也应该有一个)会影响创建,并且看来EIPs for NLBs是其中的一员,但我怀疑这样做会如何你在问
第二,type: LoadBalancer
只是方便-不需要将Service
暴露在集群之外。替换为创建Service
的{{1}},然后创建外部负载均衡器资源,将群集中的所有节点与该负载均衡器相关联,指向节点上的NodePort来从外界进入集群。如果您已经有一个静态的IP负载均衡器,则可以更新其注册以指向现有type: NodePort
的NodePort分配,然后就可以重新使用