Kubernetes、负载平衡和Nginx入口-AKS

Kubernetes、负载平衡和Nginx入口-AKS,kubernetes,kubernetes-ingress,nginx-ingress,azure-aks,azure-load-balancer,Kubernetes,Kubernetes Ingress,Nginx Ingress,Azure Aks,Azure Load Balancer,堆栈: Azure Kubernetes服务 NGINX入口控制器- AKS负载均衡器 码头集装箱 我的目标是创建一个K8s集群,它允许我在一个IP下使用多个POD来创建一个微服务体系结构。在使用了大量的教程和文档之后,我的最终目标没有任何进展。我已经能够使用Loadbalancer访问单个部署,但是引入入口到目前为止还没有成功。这些服务被分成各自的文件,以便于阅读和控制 此外,如安装说明中所述,已使用:kubectl apply-f将入口控制器添加到我的群集https://raw.github

堆栈: Azure Kubernetes服务
NGINX入口控制器-
AKS负载均衡器
码头集装箱

我的目标是创建一个K8s集群,它允许我在一个IP下使用多个POD来创建一个微服务体系结构。在使用了大量的教程和文档之后,我的最终目标没有任何进展。我已经能够使用Loadbalancer访问单个部署,但是引入入口到目前为止还没有成功。这些服务被分成各自的文件,以便于阅读和控制

此外,如安装说明中所述,已使用:
kubectl apply-f将入口控制器添加到我的群集https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.35.0/deploy/static/provider/cloud/deploy.yaml

LoadBalancer.yml:

apiVersion: v1
kind: Service
metadata:
  name: backend
spec:
  loadBalancerIP: x.x.x.x
  selector:
    app: ingress-service
    tier: backend
  ports:
  - name: "default"
    port: 80
    targetPort: 80
  type: LoadBalancer
IngressService.yml:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - http:
      paths:
      - path: /api
        backend:
          serviceName: api-service
          servicePort: 80
api-deployment.yml

apiVersion: v1
kind: Service
metadata:
  name: api-service
spec:
  selector:
    app: api
  ports:
    - port: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
   name: api-deployment
spec:
  selector:
    matchLabels:
      app: api
      tier: backend
      track: stable
  replicas: 1
  template:
    metadata:
      labels:
        app: api
        tier: backend
        track: stable
    spec:
      containers:
      - name: api
        image: image:tag
        ports:
        - containerPort: 80
        imagePullPolicy: Always
      imagePullSecrets:
      - name: SECRET
图像中的API正确地暴露在端口80上


在应用上述每个yml服务和部署后,我尝试通过LoadBalancer的IP向其中一个api资源发出web请求,但只收到一个请求超时。

在充分搜索后找到了我的答案。基本上,问题在于入口控制器在yaml中内置了一个负载平衡器,如上面的评论所述。但是,该LoadBalancer的选择器需要将入口服务标记为类的一部分。然后,入口服务指向连接到播客的每个服务。我还需要做一些小的修改,以允许在提供的负载平衡器中使用静态IP。

为什么需要loadbalancer.yaml?ingress部署中已经有负载平衡器,只需使用现有的lb并访问lb的IP即可。此外,我在你的ingress下没有看到主机名,不确定是否可以工作如果我没有使用Azure Loadbalancer,我如何设置IP以发送我的请求?如果你没有-可能没有简单的方法,请为每个节点设置节点端口和公共IP。非常脆弱