k8s申请ingress后,为什么服务地址被设置为节点的IP地址?

时间:2021-07-25 18:38:46

标签: kubernetes kubernetes-ingress nginx-ingress

ingress 中应用 k8s 后,我看到服务地址被设置为 node's IP 地址?

首先,我添加了入口控制器

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.48.1/deploy/static/provider/baremetal/deploy.yaml

其次,我添加了入口 yml:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: minimal-ingress1
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - host: "n1.avocado.work"
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: node1
            port:
              number: 80

然后我检查了入口:

kubectl get ingress minimal-ingress1

地址是节点的IP,为什么不是主节点的IP

我试了很多次,结果都是一样的。我该如何解决?请问有什么线索吗?

1 个答案:

答案 0 :(得分:2)

如果您使用的是裸机,则这是按照设计进行的。查看this了解更多信息。

<块引用>

MetalLB 为 Kubernetes 提供网络负载均衡器实现 不在受支持的云提供商上运行的集群,有效地 允许在任何集群中使用 LoadBalancer 服务。

本节演示如何使用二层配置模式 MetalLB 与 Kubernetes 中的 NGINX Ingress 控制器 具有可公开访问节点的集群。在这种模式下,一个节点 为 ingress-nginx 服务 IP 吸引所有流量。看 交通政策了解更多详情。