Kubernetes Ingress无法正常运作:预设后端404

时间:2019-01-08 12:11:49

标签: kubernetes kubernetes-ingress

我是Kubernertes的新手,我们有一个可以定制给多个客户的应用程序。

部署很好:它们正确运行Pod。问题是在集群外部访问API。

AWS路由正在按Kubernetes Ingress的要求创建。

现有的服务器工作正常,但是当我尝试使用新的服务器(让我们说client09)时,请始终返回default-backend-404

此外,当curl网址时,它会显示一条Kubernetes Ingress Controller Fake Certificate消息。

kubectl版本 客户端1.6 服务器1.9

我的用户也没有完全访问权限,因此我无法提供有关nginx controller的任何信息。对于新客户,我们只有相同的粘贴和复制,但不知道可能出什么问题。

有什么想法吗?

服务

apiVersion: v1
kind: Service
metadata:
 name: client09-svc
 labels:
   run: client09-deploy
 spec:
   type: ClusterIP
   ports:
     - port: 8080
       targetPort: 8080
       protocol: TCP
       name: api
   selector:
     run: client09-deploy

部署

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: client09-deploy
  namespace: default
spec:
  replicas: 1
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
    type: RollingUpdate
  template:
    metadata:
      labels:
        run: client09-deploy
    spec:
      terminationGracePeriodSeconds: 60
      containers:
      - name: client09
        image: myContainer
        ports:
        - containerPort: 8080
          name: api
        readinessProbe:
          httpGet:
            path: /health
            port: 8080
          initialDelaySeconds: 30
          periodSeconds: 10
        livenessProbe:
          httpGet:
            path: /health
            port: 8080
          initialDelaySeconds: 30
          periodSeconds: 10
        imagePullPolicy: Always
        resources:
          limits:
            cpu: 1800m
            memory: 2000Mi
          requests:
            cpu: 400m
            memory: 1000Mi
        volumeMounts:
          - mountPath: /secret-volume
            name: secretvolume
      imagePullSecrets:
        - name: dockerhubkey
      volumes:
        - name: secretvolume
          secret:
            secretName: client09-secret

入口

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    kubernetes.io/tls-acme: "true"
    ingress.kubernetes.io/ssl-redirect: "true"
    ingress.kubernetes.io/use-port-in-redirects: "true"
  namespace: default
spec:
  tls:
  - hosts:
    - client01.domain.com
    - client02.domain.com
    - client09.domain.com
  secretName: my-ingress-tls
rules:
- host: client01.domain.com
  http:
    paths:
    - backend:
        serviceName: client01-svc
        servicePort: 8080
      path: /
- host: client02.domain.com
  http:
    paths:
    - backend:
        serviceName: client02-svc
        servicePort: 8080
      path: /
- host: client09.domain.com
  http:
    paths:
    - backend:
        serviceName: client09-svc
        servicePort: 8080
      path: /

1 个答案:

答案 0 :(得分:0)

看起来像选择器问题。 您能否将Service YAML更新为此:

apiVersion: v1
kind: Service
metadata:
 name: client09-svc
 labels:
   run: client09-deploy
 spec:
   type: ClusterIP
   ports:
     - port: 8080
       targetPort: 8080
       protocol: TCP
       name: api
   selector:
     name: client09-deploy