【问题标题】:Failed to connect to port 8080: Connection timed out连接8080端口失败:连接超时
【发布时间】:2021-10-22 05:00:56
【问题描述】:

我正在尝试部署 bazel-remote,但是当我尝试部署时:

curl http://bazel-remote.dev.azr.myhost.com:80/status

进入入口主机,我得到:

<html>
<head><title>308 Permanent Redirect</title></head>
<body>
<center><h1>308 Permanent Redirect</h1></center>
<hr><center>nginx</center>
</body>
</html>

返回。作为参考,我试过了:

curl http://bazel-remote.dev.azr.myhost.com:8080/status

但它给出的结果与我将端口号指定为任意端口时相同,并且超时。

我检查了镜头上每个 pod、服务、入口的状态,它们似乎都运行良好。卷的类似故事。我已经通过 Terraform 部署了它们,它们似乎都运行良好。

我没有得到的奇怪的东西:

  • 当我尝试在 ConfigMap 中指定 BAZEL_REMOTE_HOST 时,pod 会输入 CrashLoop。很可能是因为this
  • http://bazel-remote.dev.azr.myhost.com:8080/metrics 可以通过我的网络浏览器访问,详细介绍了 bazel-remote 缓存功能。
  • 当我在 .bazelrc : build --remote_cache=http://bazel-remote.dev.azr.myhost.com:8080 中指定时,它不起作用,但是当我直接获取 pod IP 地址并改为使用它时,远程缓存按预期工作。

嫌疑人: 我怀疑我的入口有问题,因为这些 pod 肯定已经启动,并且如果我直接针对它们,它们就会正常运行。

入口:

---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  namespace: infra--bazel-remote-cache
  name: bazel-remote-cache
  annotations:
    kubernetes.io/ingress.class: nginx-internal
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    nginx.ingress.kubernetes.io/use-regex: "true"
    cert-manager.io/cluster-issuer: selfsigned-cluster-issuer
spec:
  tls:
  - hosts:
    - bazel-remote.dev.azr.myhost.com
    secretName: tls-secret
  rules:
  - host: bazel-remote.dev.azr.myhost.com:
    http:
      paths:
      - backend:
          serviceName: bazel-remote-service
          servicePort: 8080
        path: /(.*)



配置图

apiVersion: v1
kind: ConfigMap
metadata:
  name: bazel-remote-cache-config
  namespace: infra--bazel-remote-cache
data:
  BAZEL_REMOTE_DIR: /mnt/bazel_remote_backend
  BAZEL_REMOTE_MAX_SIZE: "10"
  BAZEL_REMOTE_GRPC_PORT: "9092"
  BAZEL_REMOTE_PORT: "8080"
  BAZEL_REMOTE_ENABLE_ENDPOINT_METRICS: "true"
  BAZEL_REMOTE_EXPERIMENTAL_REMOTE_ASSET_API: "true"

部署与服务

apiVersion: apps/v1
kind: Deployment
metadata:
  name: bazel-remote-cache
  namespace: infra--bazel-remote-cache
spec:
  replicas: 1
  selector:
    matchLabels:
      app: bazel-remote-cache
  template:
    metadata:
      labels:
        app: bazel-remote-cache
    spec:
      containers:
      - name: bazel-remote-cache
        image: buchgr/bazel-remote-cache:v2.1.1
        resources:
          limits:
            memory: 256Mi
            cpu: "200m"
          requests:
            memory: 256Mi
            cpu: "200m"
        volumeMounts:
        - mountPath: "/mnt/bazel_remote_backend"
          name: bazel-remote-cache
        ports:
        - containerPort: 8080
          protocol: TCP
        envFrom:
        - configMapRef:
            name: bazel-remote-cache-config
      volumes:
      - name: bazel-remote-cache
        persistentVolumeClaim:
          claimName: pvc-bazel-remote

---
apiVersion: v1
kind: Service
metadata:
  name: bazel-remote-service
  namespace: infra--bazel-remote-cache
spec:
  type: ClusterIP
  ports:
  - name: http
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: bazel-remote-cache

【问题讨论】:

  • 我正在尝试复制该问题,但是当我尝试通过托管网站(入口)访问应用程序或仅运行 curl 命令来调用服务时出现此错误 - resource name must be a SHA256 hash in hex. got '/' .如果我尝试了另一条路径,例如/status,我会得到:resource name must be a SHA256 hash in hex. got '/status 等。您是否收到以下错误?你能检查一下图片是否正确吗?
  • @MikolajS。我也没有得到错误。并且图像肯定是正确的,因为远程缓存在指定 pod IP 时起作用。

标签: kubernetes port bazel


【解决方案1】:

NGINX 入口控制器仅使用 HTTP or HTTPS 工作:

Ingress 不会公开任意端口或协议。向 Internet 公开 HTTP 和 HTTPS 以外的服务通常使用 Service.Type=NodePort 或 Service.Type=LoadBalancer 类型的服务。

所以你不能使用自定义端口8080 - 它不起作用。

基于NGINX Ingress Controller docs

默认情况下,如果为该 Ingress 启用了 TLS,控制器会使用 308 永久重定向响应将 HTTP 客户端重定向到 HTTPS 端口 443。

这可以在 NGINX 配置映射中使用 ssl-redirect: "false" 全局禁用,或者在特定资源中使用 nginx.ingress.kubernetes.io/ssl-redirect: "false" 注释在 per-Ingress 中禁用。

您已设置 TLS,因此 Ingress Controller 会将您重定向到 HTTPS 端口。

将您的 curl 命令更改为:

curl https://bazel-remote.dev.azr.myhost.com/status

它应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 2016-01-02
    • 2015-09-10
    相关资源
    最近更新 更多