0

我使用 spring boot 项目并部署在 Kubernetes 中,我想获取 pod 的 URL,

我提到了如何在 Kubernetes Java 应用程序中获取当前 Pod对我不起作用。

有不同的环境(DEV、QA 等),想要动态获取 URL,有吗?

我的服务 yaml

apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:
  name: test-service
  namespace: default
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/metric: concurrency
        # Disable scale to zero with a minScale of 1.
        autoscaling.knative.dev/minScale: "1"
        # Limit scaling to 100 pods.
        autoscaling.knative.dev/maxScale: "100"
    spec:
      containers:
        - image: testImage
          ports:
            - containerPort: 8080

是否可以添加

valueFrom:
     fieldRef:
     fieldPath: status.podIP

来自网址https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/#the-downward-api

4

1 回答 1

0

您的案例是关于 Knative 入口,而不是 Kubernetes。

从knative 文档的运行时合约的入站网络连接部分:

此外,必须在请求上设置以下基本的 HTTP/1.1 标头集:

  • 主机 - 由 RFC 7230 第 5.4 节指定

此外,必须设置以下特定于代理的请求标头:

  • 转发 - 由 RFC 7239 指定。

查看请求中的标头。

doGetservlet方法的示例:

Enumeration<String> headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
  String paramName = (String)headerNames.nextElement();
  out.print("<tr><td>" + paramName + "</td>\n");
  String paramValue = request.getHeader(paramName);
  out.println("<td> " + paramValue + "</td></tr>\n");
}
于 2020-04-01T10:46:54.993 回答