【问题标题】:AKS NGINX use static internal IPAKS NGINX 使用静态内部 IP
【发布时间】:2020-12-01 12:19:32
【问题描述】:

我有一个在 Azure (AKS) 上运行的 Kubernetes 集群,它使用 NGINX 作为前面的入口。 Nginx 的安装非常简单:

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

但是,负载均衡器是使用公共 IP 创建的。这就是我更改服务并添加两个注释的原因:

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/azure-load-balancer-internal: "true"
    loadBalancerIP: 10.29.30.250
  labels:
    helm.sh/chart: ingress-nginx-3.10.1
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/version: 0.41.2
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/component: controller
  name: ingress-nginx-controller
  namespace: ingress-nginx
spec:
  type: LoadBalancer
  externalTrafficPolicy: Local
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: http
    - name: https
      port: 443
      protocol: TCP
      targetPort: https
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/component: controller

现在 LoadblancerIP 是私有的。但不是注释中的IP。

我的子网:10.29.30.240/28

结果:

$ sudo kubectl get svc --all-namespaces --watch
NAMESPACE       NAME                                 TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)                      AGE
...
ingress-nginx   ingress-nginx-controller             LoadBalancer   10.0.125.51   10.29.30.248   80:30158/TCP,443:32714/TCP   57s

我做错了什么?

【问题讨论】:

    标签: nginx nginx-ingress azure-aks azure-virtual-network


    【解决方案1】:

    您使用错误的方式为 LoadBalancer 指定静态 IP 地址。应该是这样的:

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.beta.kubernetes.io/azure-load-balancer-internal: "true"
      labels:
        helm.sh/chart: ingress-nginx-3.10.1
        app.kubernetes.io/name: ingress-nginx
        app.kubernetes.io/instance: ingress-nginx
        app.kubernetes.io/version: 0.41.2
        app.kubernetes.io/managed-by: Helm
        app.kubernetes.io/component: controller
      name: ingress-nginx-controller
      namespace: ingress-nginx
    spec:
      type: LoadBalancer
      loadBalancerIP: 10.29.30.250     # here is the location for the special IP address
      externalTrafficPolicy: Local
      ports:
        - name: http
          port: 80
          protocol: TCP
          targetPort: http
        - name: https
          port: 443
          protocol: TCP
          targetPort: https
      selector:
        app.kubernetes.io/name: ingress-nginx
        app.kubernetes.io/instance: ingress-nginx
        app.kubernetes.io/component: controller
    

    参见示例here。注意你使用的是哪个子网,与 AKS 集群不同或相同。

    【讨论】:

      猜你喜欢
      • 2022-11-05
      • 1970-01-01
      • 1970-01-01
      • 2019-12-19
      • 1970-01-01
      • 2021-02-01
      • 1970-01-01
      • 2019-05-25
      • 2019-01-13
      相关资源
      最近更新 更多