不能在AKS中工作的Ngix入口始终为404

mtb9vblg  于 2022-10-23  发布在  Docker
关注(0)|答案(1)|浏览(134)

我有一个设置的AKS和
1.已部署电影服务
1.已部署nginx入口

NAME                                           READY   STATUS    RESTARTS   AGE
movie-service-7bbf464749-ffxh6                 1/1     Running   0          45m
nginx-release-nginx-ingress-7c97fd9dd7-qdcjw   1/1     Running   0          3m38s

Kubectl描述入口输出

Name:             movie-service
Labels:           app.kubernetes.io/instance=movie-service
                  app.kubernetes.io/managed-by=Helm
                  app.kubernetes.io/name=movie-service
                  app.kubernetes.io/version=1.16.0
                  helm.sh/chart=movie-service-0.1.0
Namespace:        default
Address:          
Ingress Class:    nginx
Default backend:  <default>
Rules:
  Host                                       Path  Backends
  ----                                       ----  --------
  suchait-ingress.eastus.cloudapp.azure.com  
                                             /movie-service(/|$)(.*)   movie-service:8080 (10.244.0.8:8080)
Annotations:                                 kubernetes.io/ingress.class: nginx
                                             kubernetes.io/tls-acme: false
                                             meta.helm.sh/release-name: movie-service
                                             meta.helm.sh/release-namespace: default
                                             nginx.com/health-checks: true
                                             nginx.ingress.kubernetes.io/rewrite-target: /$1
                                             nginx.ingress.kubernetes.io/ssl-redirect: false
                                             nginx.ingress.kubernetes.io/use-regex: true
Events:
  Type     Reason          Age                From                      Message
  ----     ------          ----               ----                      -------
  Normal   AddedOrUpdated  128m               nginx-ingress-controller  Configuration for default/movie-service was added or updated
  Normal   AddedOrUpdated  44m (x3 over 44m)  nginx-ingress-controller  Configuration for default/movie-service was added or updated

但是,当我检查nginx容器中的路径配置时,我什么也看不到

kubectl exec -it nginx-release-nginx-ingress-7c97fd9dd7-qdcjw sh 
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
$ ls -lrt /etc/nginx/conf.d
total 0 ```

Observations :

1. My movie-service api is working fine - when i go inside container and hit with localhost.
2. /nginx-health url works fine and gives 200 OK response.

**Note : I have deployed this whole setup using helm charts**

ingress deployment.yml template
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "3"
    meta.helm.sh/release-name: nginx-release
    meta.helm.sh/release-namespace: default
  creationTimestamp: "2022-10-19T17:57:16Z"
  generation: 9
  labels:
    app.kubernetes.io/instance: nginx-release
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: nginx-release-nginx-ingress
    helm.sh/chart: nginx-ingress-0.15.0
  name: nginx-release-nginx-ingress
  namespace: default
  resourceVersion: "329441"
  uid: 908f50a6-a8a5-49c2-802b-cb5a75aa0299
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: nginx-release-nginx-ingress
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      annotations:
        prometheus.io/port: "9113"
        prometheus.io/scheme: http
        prometheus.io/scrape: "true"
      creationTimestamp: null
      labels:
        app: nginx-release-nginx-ingress
    spec:
      automountServiceAccountToken: true
      containers:
      - args:
        - -nginx-plus=false
        - -nginx-reload-timeout=60000
        - -enable-app-protect=false
        - -enable-app-protect-dos=false
        - -nginx-configmaps=$(POD_NAMESPACE)/nginx-release-nginx-ingress
        - -default-server-tls-secret=$(POD_NAMESPACE)/nginx-release-nginx-ingress-default-server-tls
        - -ingress-class=nginx
        - -health-status=true
        - -health-status-uri=/nginx-health
        - -nginx-debug=true
        - -v=5
        - -nginx-status=true
        - -nginx-status-port=8080
        - -nginx-status-allow-cidrs=127.0.0.1
        - -report-ingress-status
        - -external-service=nginx-release-nginx-ingress
        - -enable-leader-election=true
        - -leader-election-lock-name=nginx-release-nginx-ingress-leader-election
        - -enable-prometheus-metrics=true
        - -prometheus-metrics-listen-port=9113
        - -prometheus-tls-secret=
        - -enable-custom-resources=true
        - -enable-snippets=false
        - -include-year=false
        - -disable-ipv6=false
        - -enable-tls-passthrough=false
        - -enable-preview-policies=false
        - -enable-cert-manager=false
        - -enable-oidc=false
        - -enable-external-dns=false
        - -ready-status=true
        - -ready-status-port=8081
        - -enable-latency-metrics=false
        env:
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        - name: POD_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.name
        image: nginx/nginx-ingress:2.4.0
        imagePullPolicy: IfNotPresent
        name: nginx-release-nginx-ingress
        ports:
        - containerPort: 80
          name: http
          protocol: TCP
        - containerPort: 443
          name: https
          protocol: TCP
        - containerPort: 9113
          name: prometheus
          protocol: TCP
        - containerPort: 8081
          name: readiness-port
          protocol: TCP
        readinessProbe:
          failureThreshold: 3
          httpGet:
            path: /nginx-ready
            port: readiness-port
            scheme: HTTP
          periodSeconds: 1
          successThreshold: 1
          timeoutSeconds: 1
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
        securityContext:
          allowPrivilegeEscalation: true
          capabilities:
            add:
            - NET_BIND_SERVICE
            drop:
            - ALL
          runAsNonRoot: false
          runAsUser: 101
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      serviceAccount: nginx-release-nginx-ingress
      serviceAccountName: nginx-release-nginx-ingress
      terminationGracePeriodSeconds: 30
status:
  availableReplicas: 1
  conditions:
  - lastTransitionTime: "2022-10-19T17:57:16Z"
    lastUpdateTime: "2022-10-20T17:13:56Z"
    message: ReplicaSet "nginx-release-nginx-ingress-7c97fd9dd7" has successfully
      progressed.
    reason: NewReplicaSetAvailable
    status: "True"
    type: Progressing
  - lastTransitionTime: "2022-10-20T17:27:50Z"
    lastUpdateTime: "2022-10-20T17:27:50Z"
    message: Deployment has minimum availability.
    reason: MinimumReplicasAvailable
    status: "True"
    type: Available
  observedGeneration: 9
  readyReplicas: 1
  replicas: 1
  updatedReplicas: 1

我已经花了大约4天的时间尝试多种可能的组合,任何帮助或建议都将非常感激。

tkclm6bt

tkclm6bt1#

这里也有同样的问题。
在虚拟机器中使用VMS安装K8以及Inress nginx-2.4.1 https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-manifests/

  • 路径:/applike

基于路径的路由根本不起作用......

  • 路径:/-只有默认路径才起作用,并提供来自指定服务的响应。

请帮忙。

相关问题