使主机端口可从 Kubernetes 中的容器内部访问

使主机端口可从 Kubernetes 中的容器内部访问

我们在一组(虚拟)Linux 主机上设置了一个 Kubernetes 集群。每个主机都在主机上运行内部 HTTP 代理127.0.0.1:3128。要从此网络访问外部 HTTP/HTTPS 资源,必须使用代理。

我们希望使集群中的容器能够访问外部网络。在给定主机上运行的容器应使用该主机的 HTTP(s) 代理实例。

我们如何才能在容器内部提供这些代理服务?

答案1

节点的 IP 始终可通过以下方式供容器使用fieldRef:,也可以指其他env:成员using$()语法(注意不是shell 语法,这是 kubernetes 插值语法)

spec:
  containers:
  - name: use-proxy
    env:
    - name: NODE_IP
      valueFrom:
        fieldRef:
          fieldPath: status.hostIP
    - name: HTTP_PROXY
      value: $(NODE_IP):3128
    - name: HTTPS_PROXY
      value: $(NODE_IP):3128

并且不要忘记,如果它确实存在 MITM 行为,你可能需要为 HTTPS 代理注入 CA

还要注意,如果它实际上绑定到节点上的 127.0.0.1,您将无法从 kubernetes 集群内部访问它,因为这些接口不被视为“localhost”。您需要使代理可用于 CNI 接口

相关内容