是否可以更改 Ingress 的 IP?

时间:2021-04-13 20:36:07

标签: kubernetes

是否可以更改 Ingress 的 IP?

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: test-ingress
  spec:
  defaultBackend:
service:
  name: test-reg
  port:
    number: 5000

现在自动分配了 23,但我想更改它并保持静态

[ciuffoly@master-node ~]$ kubectl get ingresses
NAME           CLASS    HOSTS   ADDRESS        PORTS   AGE
test-ingress   <none>   *       192.168.1.23   80      5m9s

1 个答案:

答案 0 :(得分:1)

“更改 IP 地址”的可能性在很大程度上取决于所使用的 Kubernetes 解决方案以及 Ingress 在集群内的处理方式。

考虑到缺乏有关设置的信息,可能很难指出正确的方向。我决定发布一个社区 wiki 答案,以提供更多基本想法并指出在哪里寻找可能的答案。

随意扩展它。


如果 Kubernetes 集群是受管理的(GKEEKSAKS)并且您使用的是由您的云提供商管理的 Ingress,那么最好的选择是请参阅其有关 IP 分配的文档。某些提供程序通过 Ingress 注释允许您分配先前分配的特定 IP 地址(例如在 Web UI 中)。

如果 Kubernetes 集群是在本地配置的(kubespraykubeadmhard-way)或者类似于 minikubemicrok8s 或 {{ 1}} 对于 Kubernetes,检查它如何处理 Docker Desktop 资源仍然是最好的做法。例如,带有 Ingresskubespraymetallb 集群之间会存在差异。

我的意思是,在大多数情况下,microk8s 资源由 Ingress(集群内的 Ingress controller 或一组 Pod)处理。根据所使用的解决方案,它在大多数情况下的工作方式如下:

  • Pods 控制器(IngressClusterRolesValidatingWebhookConfiguration 等)创建资源
  • 创建特定类型的
  • RoleBindings(取决于解决方案)以指向 Service/Deployment,即 Daemonset(如 Ingress controllernginx-ingress 等)。
  • 创建 kong
  • Deployment/Daemonset 以接收流量并将其发送到 Ingress controller 资源中指定的 Services

对于 IP 地址更改,您需要专门查看此 Ingress 如何暴露给外部来源以及您是否/如何更改其配置。< /p>

使用 Ingress controllerkubeadm 创建的本地集群与使用 Kubernetes 的本地开发解决方案(例如 kubesprayminikube)之间也存在内在差异。

根据我的经验,我遇到过通过以下方式暴露的 Docker Desktop

  • Ingress controllers 类型为 Service - 假设您的设置允许这样的 LoadBalancer,您可以使用 metallb
  • Service(绑定到 HostNetwork 上的端口,因此使用它的 IP 地址)

补充参考: