首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure AKS应用网关502坏网关

Azure AKS应用网关502坏网关
EN

Stack Overflow用户
提问于 2022-08-11 13:15:51
回答 1查看 147关注 0票数 0

我一直在这里学习教程:Azure女士

这很好。但是,部署本地配置文件时,我会得到一个"502 Gate“错误。这个配置是很好的,并且按预期的方式工作。

有人能看到任何显而易见的东西吗?在这一点上,我不知道从哪里开始。

我正在尝试实现使用入口控制器,即应用网关。然后添加部署并应用附加的入口规则。

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: one-api
  namespace: default
  annotations:
    imageregistry: "gcr.io/google-samples/hello-app:1.0"
spec:
  replicas: 3
  selector:
    matchLabels:
      run: one-api
  template:
    metadata:
      labels:
        run: one-api
    spec:
      containers:
        - image: gcr.io/google-samples/hello-app:1.0
          imagePullPolicy: IfNotPresent
          name: one-api
          ports:
            - containerPort: 80
              protocol: TCP

---
apiVersion: v1
kind: Service
metadata:
  name: one-api
  namespace: default
spec:
  ports:
    - port: 80
      protocol: TCP
      targetPort: 80
  selector:
    run: one-api
  type: NodePort

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: two-api
  namespace: default
  annotations:
    imageregistry: "gcr.io/google-samples/hello-app:1.0"
spec:
  replicas: 3
  selector:
    matchLabels:
      run: two-api
  template:
    metadata:
      labels:
        run: two-api
    spec:
      containers:
        - image: gcr.io/google-samples/hello-app:1.0
          imagePullPolicy: IfNotPresent
          name: two-api
          ports:
            - containerPort: 80
              protocol: TCP

---
apiVersion: v1
kind: Service
metadata:
  name: two-api
  namespace: default
spec:
  ports:
    - port: 80
      protocol: TCP
      targetPort: 80
  selector:
    run: two-api
  type: NodePort

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: strata-2022
  labels:
    app: my-docker-apps
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
spec:
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: one-api
                port:
                  number: 80
          - path: /two-api
            pathType: Prefix
            backend:
              service:
                name: two-api
                port:
                  number: 80

输出:kubectl describe ingress strata-2022

代码语言:javascript
复制
Name:             strata-2022

标签: app=my-docker-apps名称空间:默认地址: 51.142.191.83进入类:默认后端:规则:主机路径后端

  • / one-api:80 (10.224.0.15:80,10.224.0.59:80,10.224.0.94:80) /two-api two-api:80 (10.224.0.13:80,10.224.0.51:80,10.224.0.82:80)

注释:kubernetes.io/inress.class:azure/application-网关事件:

kubectl describe ingress

代码语言:javascript
复制
Name:             strata-2022
Labels:           app=my-docker-apps
Namespace:        default
Address:          51.142.191.83
Ingress Class:    <none>
Default backend:  <default>
Rules:
  Host        Path  Backends
  ----        ----  --------
  *
              /          one-api:80 (10.224.0.15:80,10.224.0.59:80,10.224.0.94:80)
              /two-api   two-api:80 (10.224.0.13:80,10.224.0.51:80,10.224.0.82:80)
Annotations:  kubernetes.io/ingress.class: azure/application-gateway
Events:       <none>

使用Azure CLI创建AKS的命令。

az aks create -n myCluster -g david-tutorial --network-plugin azure --enable-managed-identity -a ingress-appgw --appgw-name testApplicationGateway --appgw-subnet-cidr "10.225.0.0/16" --generate-ssh-keys

//获取凭据并切换到此上下文

az aks get-credentials -n myCluster -g david-tutorial

//这一行来自本教程-如预期的那样工作

//kubectl应用-f https://raw.githubusercontent.com/Azure/application-gateway-kubernetes-ingress/master/docs/examples/aspnetapp.yaml

//这就是我跑的路。它在本地工作。

kubectl apply -f nano new-deploy.yaml

//获取地址

kubectl get ingress

kubectl get configmap

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-12 00:33:52

我尝试在我的终端上重新创建相同的设置,在运行相同的az aks创建命令之后,我就可以识别出以下问题:一个或多个后端池中的所有实例都是不健康的。

由于这似乎表明后端池是不可访问的,所以一开始很奇怪,所以我尝试根据您正在使用的hello-app映像查看其中一个吊舱的日志,并立即注意到这一点:

代码语言:javascript
复制
> kubectl logs one-api-77f9b4b9f-6sv6f
2022/08/12 00:22:04 Server listening on port 8080

因此,我的直接想法是,在您正在使用的Docker映像中,没有任何配置可以侦听端口80,这是您在kubernetes资源定义中使用的端口。

在更新部署和服务定义以使用端口8080而不是80之后,一切都很好,我开始在浏览器中获得以下响应:

代码语言:javascript
复制
Hello, world!
Version: 1.0.0
Hostname: one-api-d486fbfd7-pm8kt

下面可以找到用于成功部署所有资源的更新的YAML文件:

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: one-api
  namespace: default
  annotations:
    imageregistry: "gcr.io/google-samples/hello-app:1.0"
spec:
  replicas: 3
  selector:
    matchLabels:
      run: one-api
  template:
    metadata:
      labels:
        run: one-api
    spec:
      containers:
        - image: gcr.io/google-samples/hello-app:1.0
          imagePullPolicy: IfNotPresent
          name: one-api
          ports:
            - containerPort: 8080
              protocol: TCP

---
apiVersion: v1
kind: Service
metadata:
  name: one-api
  namespace: default
spec:
  ports:
    - port: 8080
      protocol: TCP
      targetPort: 8080
  selector:
    run: one-api
  type: NodePort

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: two-api
  namespace: default
  annotations:
    imageregistry: "gcr.io/google-samples/hello-app:1.0"
spec:
  replicas: 3
  selector:
    matchLabels:
      run: two-api
  template:
    metadata:
      labels:
        run: two-api
    spec:
      containers:
        - image: gcr.io/google-samples/hello-app:1.0
          imagePullPolicy: IfNotPresent
          name: two-api
          ports:
            - containerPort: 8080
              protocol: TCP

---
apiVersion: v1
kind: Service
metadata:
  name: two-api
  namespace: default
spec:
  ports:
    - port: 8080
      protocol: TCP
      targetPort: 8080
  selector:
    run: two-api
  type: NodePort

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: strata-2022
  labels:
    app: my-docker-apps
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
spec:
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: one-api
                port:
                  number: 8080
          - path: /two-api
            pathType: Prefix
            backend:
              service:
                name: two-api
                port:
                  number: 8080
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73321328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档