簡體   English   中英

Kubernetes nginx 入口找不到后端服務

[英]Kubernetes nginx ingress cannot find backend service

我已通過本地計算機上的 kubectl 命令將 API 部署到 AKS 上的 Kubernetes。 但是 nginx 入口無法解析后端端點。 入口日志有錯誤The service 'hello-world/filter-api' does not have any active endpoint

后續步驟:

在 AKS 上安裝 dapr

  • dapr init -k --set global.tag=1.1.2

在 AKS 上安裝 nginx 入口

  • helm repo 添加 ingress-nginx https://kubernetes.github.io/ingress-nginx
  • helm install ingress-nginx ingress-nginx/ingress-nginx -f...\dapr\components\dapr-annotations.yaml --set image.tag=1.11.1 -n ingress-nginx

應用清單

  • kubectl apply -f.\services\filter.yaml

我嘗試了什么?

我嘗試將其部署到 windows 上的本地 Kubernetes 集群和 docker 桌面。 這工作正常。 我錯過了什么?

過濾器.yaml

kind: ConfigMap
apiVersion: v1
metadata:
  name: filter-cm
  namespace: hello-world
  labels:
    app: hello-world
    service: filter
data:
  ASPNETCORE_ENVIRONMENT: Development
  ASPNETCORE_URLS: http://0.0.0.0:80
  PATH_BASE: /filter
  PORT: "80"

---

kind: Deployment
apiVersion: apps/v1
metadata:
  name: filter
  namespace: hello-world
  labels:
    app: hello-world
    service: filter
spec:
  replicas: 1
  selector:
    matchLabels:
      service: filter
  template:
    metadata:
      labels:
        app: hello-world
        service: filter
      annotations:
        dapr.io/enabled: "true"
        dapr.io/app-id: "filter-api"
        dapr.io/app-port: "80"
        dapr.io/config: "dapr-config"
    spec:
      containers:
        - name: filter-api
          image: client/hello-world-filter-api:0.0.1
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 80
              protocol: TCP
          envFrom:
            - configMapRef:
                name: filter-cm
      imagePullSecrets:
        - name: regcred

---

apiVersion: v1
kind: Service
metadata:
  name: filter-api
  namespace: hello-world
  labels:
    app: hello-world
    service: filter
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30001
      protocol: TCP
      name: http
  selector:
    service: filter

---

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: filter-ingress
  namespace: hello-world
  labels:
    app: hello-world
    service: filter
spec:
  rules:
  - http:
      paths:
      - path: /filter
        pathType: Prefix
        backend:
          service:
            name: filter-api
            port:
              number: 80

在服務選擇器中,為服務使用 matchLabels 來查找后端 pod

例子:

selector:
   matchLabels:
     service: filter

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM