我们在一组(虚拟)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 接口