是否可以更改 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
答案 0 :(得分:1)
“更改 IP 地址”的可能性在很大程度上取决于所使用的 Kubernetes 解决方案以及 Ingress
在集群内的处理方式。
考虑到缺乏有关设置的信息,可能很难指出正确的方向。我决定发布一个社区 wiki 答案,以提供更多基本想法并指出在哪里寻找可能的答案。
随意扩展它。
如果 Kubernetes 集群是受管理的(GKE
、EKS
、AKS
)并且您使用的是由您的云提供商管理的 Ingress
,那么最好的选择是请参阅其有关 IP 分配的文档。某些提供程序通过 Ingress
注释允许您分配先前分配的特定 IP 地址(例如在 Web UI
中)。
如果 Kubernetes 集群是在本地配置的(kubespray
或 kubeadm
或 hard-way
)或者类似于 minikube
、microk8s
或 {{ 1}} 对于 Kubernetes,检查它如何处理 Docker Desktop
资源仍然是最好的做法。例如,带有 Ingress
和 kubespray
的 metallb
集群之间会存在差异。
我的意思是,在大多数情况下,microk8s
资源由 Ingress
(集群内的 Ingress controller
或一组 Pod
)处理。根据所使用的解决方案,它在大多数情况下的工作方式如下:
Pods
控制器(Ingress
、ClusterRoles
、ValidatingWebhookConfiguration
等)创建资源RoleBindings
(取决于解决方案)以指向 Service
/Deployment
,即 Daemonset
(如 Ingress controller
, nginx-ingress
等)。kong
的 Deployment
/Daemonset
以接收流量并将其发送到 Ingress controller
资源中指定的 Services
。立>
对于 IP 地址更改,您需要专门查看此 Ingress
如何暴露给外部来源以及您是否/如何更改其配置。< /p>
使用 Ingress controller
、kubeadm
创建的本地集群与使用 Kubernetes 的本地开发解决方案(例如 kubespray
和 minikube
)之间也存在内在差异。
根据我的经验,我遇到过通过以下方式暴露的 Docker Desktop
:
Ingress controllers
类型为 Service
- 假设您的设置允许这样的 LoadBalancer
,您可以使用 metallbService
(绑定到 HostNetwork
上的端口,因此使用它的 IP 地址)补充参考: