代码之家  ›  专栏  ›  技术社区  ›  nickponline

为什么Kubernetes入口不接受流量?

  •  0
  • nickponline  · 技术社区  · 5 年前

    我试图在Kubernetes上建立一个简单的HTTP web服务器,并用短暂的外部IP暴露它。但是,当启动它并尝试访问 x.x.x.x/something 我得到:

    Error: Server Error
    The server encountered a temporary error and could not complete your request.
    Please try again in 30 seconds.
    

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: web
      labels:
        app: web
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: web
      template:
        metadata:
          labels:
            app: web
        spec:
          containers:
          - name: web
            image: gcr.io/my-repo-name
            ports:
            - containerPort: 8080
            livenessProbe:
              httpGet:
                path: /healthz
                port: 8080
            readinessProbe:
              initialDelaySeconds: 10
              httpGet:
                path: /healthz
                port: 8080
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: web-balancer-service
    spec:
      selector:
        app: web
      type: NodePort
      ports:
      - protocol: TCP
        port: 8080
        targetPort: 32111
    ---
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: my-ingress-app
    spec:
      backend:
        serviceName: web-balancer-service
        servicePort: 8080
    

    如果我描述 进入

    Name:             my-ingress-app
    Namespace:        default
    Address:          x.x.x.x
    Default backend:  web-balancer-service:8080 (10.60.0.57:32111)
    Rules:
      Host  Path  Backends
      ----  ----  --------
      *     *     web-balancer-service:8080 (10.60.0.57:32111)
    Annotations:
      ingress.kubernetes.io/backends:         {"k8s-be-30330--f4bbd8cbe40f4567":"Unknown"}
      ingress.kubernetes.io/forwarding-rule:  k8s-fw-default-my-ingress-app--f4bbd8cbe40f4567
      ingress.kubernetes.io/target-proxy:     k8s-tp-default-my-ingress-app--f4bbd8cbe40f4567
      ingress.kubernetes.io/url-map:          k8s-um-default-my-ingress-app--f4bbd8cbe40f4567
    Events:
      Type    Reason  Age    From                     Message
      ----    ------  ----   ----                     -------
      Normal  ADD     7m18s  loadbalancer-controller  default/my-ingress-app
      Normal  CREATE  6m12s  loadbalancer-controller  ip: x.x.x.x
    
    1 回复  |  直到 5 年前
        1
  •  2
  •   Utku Özdemir    5 年前

    您得到的错误消息是来自Google Kubernetes引擎(GKE)的错误,所以我假设您正在Google云上运行GKE。

    首先,确保容器(部署的pod)真正监听端口 32111 . 你把这个当作 targetPort 在服务上,这意味着服务将在端口上接收流量 8080 32111个 它匹配的豆荚。看起来像:

    --(traffic)---> :8080 (service) ---> :32111 (pods)
    

    我怀疑,因为在你的吊舱规格里 containerPort: 8080 ,这是pod实际监听的指示器 当然,不是 .

    因此,首先,尝试更改 对…的服务 8080个

    在给它一些时间之后,如果它没有开始工作,请检查集群中是否真正启用了HTTP负载平衡。在Google云控制台上创建集群时,如下所示: screenshot

    addons