【问题标题】:can't acces to K8s ingress server无法访问 K8s 入口服务器
【发布时间】:2021-05-03 18:03:09
【问题描述】:

我无法访问 Ingress Kubernetes 部署的服务器。

我的项目结构如下: 我有一个 delpoy.sh 构建图像并将其推送到 dockerhub。有两个图像“信息”和“图像”。为了将这些图像链接到 Kubernetes,我有一个 yaml 文件:


apiVersion: apps/v1
kind: Deployment
metadata:
  name: info-v1-deployment
  labels:
    app: info-v1
spec:
  replicas: 2
  selector:
    matchLabels:
      app: info-v1
  template:
    metadata:
      labels:
        app: info-v1
    spec:
      containers:
        - name: info-v1
          image: cloudcomputing2021/info:latest
          ports:
            - containerPort: 80
          env:
            - name: FLASK_RUN_HOST
              value: 0.0.0.0
            - name: FLASK_RUN_PORT
              value: "1080"
            - name: FLASK_APP
              value: server.py
            - name: DB_HOST
              value: db_ip 
            - name: DB_PORT
              value: "3306"
            - name: DB_DBNAME
              value: watches
            - name: DB_USER
              value: user
            - name: DB_PASS
              value: password
            - name: HTTP_USER
              value: cloud
            - name: HTTP_PASS
              value: computing
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: image-v1-deployment
  labels:
    app: image-v1
spec:
  replicas: 2
  selector:
    matchLabels:
      app: image-v1
  template:
    metadata:
      labels:
        app: image-v1
    spec:
      containers:
        - name: image-v1
          image: cloudcomputing2021/image:latest
          ports:
            - containerPort: 80
          env:
            - name: FLASK_RUN_HOST
              value: 0.0.0.0
            - name: FLASK_RUN_PORT
              value: "1080"
            - name: FLASK_APP
              value: server.py
            - name: HTTP_PASS
              value: computing
            - name: HTTP_USER
              value: cloud
      
---
apiVersion: v1
kind: Service
metadata:
  name: info-v1-service
spec:
  type: NodePort
  selector:
    app: info-v1
  ports:
    - protocol: TCP
      port: 80
      targetPort: 1080
      nodePort: 30036

---
apiVersion: v1
kind: Service
metadata:
  name: image-v1-service
spec:
  type: NodePort
  selector:
    app: image-v1
  ports:
    - protocol: TCP
      port: 80
      targetPort: 1080
      nodePort: 30037
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: cloud-computing-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - http:
        paths:
          - path: /info/v1/*
            backend:
              serviceName: info-v1-service
              servicePort: 80
          - path: /image/v1/*
            backend:
              serviceName: image-v1-service
              servicePort: 80
---

此文件创建一个入口和两个服务(一个用于图像,一个用于信息)。这个过程顺利进行。但是,当我尝试通过集群 URL 访问服务器时,我收到 502 错误并显示以下消息:

"错误:服务器错误 服务器遇到临时错误,无法完成您的请求。 请在 30 秒后重试。”

使用 docker-compose up 指定图像在本地完美运行很重要,因此我推断问题不是来自图像。

Ingress 状态为:“一些后端服务处于 UNKNOWN 状态”

【问题讨论】:

  • 欢迎来到社区@IOrakle 请运行以下命令以获取有关您的入口的一些信息:kubectl describe ingress cloud-computing-ingress。您是使用 k8s 作为服务还是拥有自己的集群?

标签: kubernetes kubernetes-ingress


【解决方案1】:

有两件事:

  1. 您正在使用 nodeport 公开服务,在这种情况下,您可以点击 http://:30037/ 来访问您的应用程序。
  2. 你能检查你的入口定义吗?请参考ingress

此外,检查两个 pod/容器的事件可能会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 2021-05-10
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多