enableServiceLinks=false 不会禁用 Kubernetes clusterIP 默认服务环境变量注入到 pod 中

hle*_*l18 7 environment-variables kubernetes

在 pod 规范中,有 选项enableServiceLinks。当设置为 false 时,与 Pod 创建时运行的服务相关的环境变量将不会注入到 Pod 中。

问题是我预计默认命名空间上的 kubernetes clusterIp 服务也会发生这种情况:

NAME                        TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
kubernetes                  ClusterIP   10.116.0.1     <none>        443/TCP    27d
Run Code Online (Sandbox Code Playgroud)

但它正在将环境变量注入到 pod 中,如下所示:

KUBERNETES_SERVICE_PORT=443
KUBERNETES_PORT=tcp://10.116.0.1:443
NODE_VERSION=12.18.0
HOSTNAME=static-web
YARN_VERSION=1.22.4
SHLVL=1
HOME=/root
test_value=8585
TERM=xterm
KUBERNETES_PORT_443_TCP_ADDR=10.116.0.1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT_443_TCP=tcp://10.116.0.1:443
KUBERNETES_SERVICE_HOST=10.116.0.1
PWD=/indecision-app
Run Code Online (Sandbox Code Playgroud)

用于部署的部署文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: indecision-app-deployment
  labels:
    app: indecision-app
spec:
  selector:
    matchLabels:
      app: indecision-app
  template:
    metadata:
      labels:
        app: indecision-app
    spec:
      enableServiceLinks: false
      containers:
      - name: indecision-app
        image: hleal18/indecision-app:latest
        ports:
        - containerPort: 8080
Run Code Online (Sandbox Code Playgroud)

这是正确的行为吗?是否有 API 支持的方法来避免注入这些服务环境变量?

OhH*_*ark 3

根据源代码

我们总是希望从主服务命名空间添加主服务的环境变量,即使是enableServiceLinksfalse。

这基本上意味着您将且不应该阻止将这些特定的环境变量注入到 Pod 中。

我希望这能解决您的问题。