我知道我们可以将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 ?
最佳答案
tl; dr =是,但是尝试在Service
资源中编辑IP并不能达到您的期望-只是向您报告世界的当前状态
Is it possible to replace the LoadBalancer Ingress with static IP?
首先,当Kubernetes要求LoadBalancer创建负载均衡器时,它就是您的云提供商创建的。您有a lot of annotations(一个是用于AWS的,但您的云提供商也应该有一个)会影响创建,并且EIPs for NLBs似乎是其中之一,但是我怀疑您在做什么
其次,
type: LoadBalancer
只是方便-不需要将Service
暴露在集群之外。这是创建Service
的type: NodePort
,然后创建外部负载均衡器资源,将群集中的所有节点与该负载均衡器关联,指向节点上的NodePort以便将来自外部世界的流量引入群集的替代方法。如果您已经有一个静态的IP负载平衡器,则可以更新其注册以指向现有my-service
的NodePort分配,然后就可以重新开始工作了。
关于kubernetes - 使用静态IP公开Ladbalancer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62452557/