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

时间:2020-09-10 16:32:36

标签: kubernetes kubernetes-ingress nginx-ingress azure-aks azure-load-balancer

堆栈: Azure Kubernetes服务
NGINX入口控制器-https://github.com/kubernetes/ingress-nginx
AKS负载平衡器
Docker容器

我的目标是创建一个K8s集群,该集群将允许我在单个IP下使用多个Pod来创建微服务架构。经过大量的教程和文档工作之后,我对最终目标一无所获。我的观点是可以使用Loadbalancer访问单个部署,但是到目前为止,引入该入口并没有成功。这些服务分为各自的文件,以提高可读性和易于控制。

此外,还按照安装说明中的说明,使用kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.35.0/deploy/static/provider/cloud/deploy.yaml

将Ingress Controller添加到了我的集群中

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请求,并且仅收到我的请求超时。

1 个答案:

答案 0 :(得分:1)

经过足够的狩猎后找到了我的答案。基本上,问题是入口控制器在yaml中内置了负载均衡器,如上面的注释中所述。但是,该LoadBalancer的选择器需要将您的Ingress服务标记为该类的一部分。然后,该Ingress服务指向附加到您的pod的每个服务。我还必须进行一些小的修改,以允许在提供的负载均衡器中使用静态IP。

相关问题