【发布时间】: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