Redian新闻
>
Kubernetes 配置Pod使用代理上网

Kubernetes 配置Pod使用代理上网

公众号新闻

配置Kubernetes Pod使用代理上网

在企业网络环境中进行Kubernetes集群的管理时,经常会遇到需要配置Pods通过HTTP代理服务器访问Internet的情况。这可能是由于各种原因,如安全策略限制、网络架构要求或者访问特定资源的需要。本文将介绍配置Kubernetes中Pod使用代理的两种常见方式:通过ConfigMap和直接在应用程序环境变量中设置。

使用场景

Kubernetes集群中配置Pod使用代理的场景可能包括:

  1. 执行出站流量控制和审计。

  2. 遵守网络访问策略,强制流量通过指定的出口点。

  3. 实现服务的代理隔离,以加强内网安全。

  4. 访问外部应用,我的场景是调用 discord api。

配置方式

接下来将介绍两种常用配置方法:

配置方式一:使用ConfigMap

步骤1:创建ConfigMap

创建一个名为proxy-config的ConfigMap以包含代理设置信息:

apiVersion: v1kind: ConfigMapmetadata:  name: proxy-configdata:  http_proxy: http://<proxy-server>:<port>  https_proxy: http://<proxy-server>:<port>  no_proxy: .cluster.local,.svc,.my-company.com,127.0.0.1

替换<proxy-server><port>为实际代理服务器的地址和端口。

步骤2:在Pod定义中引用ConfigMap

修改Pod的定义以使用ConfigMap中的环境变量:

apiVersion: v1kind: Podmetadata:  name: example-podspec:  containers:    - name: example-container      image: nginx      envFrom:        - configMapRef:            name: proxy-config
步骤3:确认应用程序能正确使用代理

在Pod应用程序中,确保这些环境变量能被正确地使用。比如,在诸如curl、wget这样的命令行工具中,HTTP_PROXY和HTTPS_PROXY环境变量是自动识别的,而一些编程语言的HTTP客户端库可能需要在代码中显式配置代理。

配置方式二:直接在部署的环境变量中设置

步骤1:在Pod定义中设置环境变量

与ConfigMap不同,可以直接在Pod或者Deployment的定义中设置环境变量,我这里是直接使用了环境变量的方式:

apiVersion: apps/v1kind: Deploymentmetadata:  name: example-deploymentspec:  replicas: 2  selector:    matchLabels:      app: example  template:    metadata:      labels:        app: example    spec:      containers:      - name: example-container        image: nginx        env:        - name: http_proxy          value: http://<proxy-server>:<port>        - name: https_proxy          value: http://<proxy-server>:<port>        - name: no_proxy          value: .cluster.local,.svc,.my-company.com,127.0.0.1

这种方法允许更灵活的设置,因为你可以为不同的Deployment指定不同的代理设置。

步骤2:应用更改并确认应用程序的代理配置

同样的,确保你的应用程序或服务读取并正确使用了这些环境变量设置。

参数解释

  • http_proxy / https_proxy: 指定HTTP/HTTPS的代理服务器,格式为http://<proxy-user>:<proxy-password>@<proxy-server>:<port>

  • no_proxy: 指定的地址不通过代理服务器访问。通常包括Kubernetes的服务发现后缀如.cluster.local.svc以及本地网络的范围。

测试代理设置

部署Pod后,我们可以测试这些设置是否生效:

  1. 进入Pod的shell环境:


    kubectl exec -it example-pod -- /bin/sh
  2. 使用curl测试代理是否工作:


 curl -I 'https://discord.com'


如果返回了正常的HTTP响应,表明代理设置生效并正确工作。如果出现连接超时或代理错误,可能需要检查代理服务器配置和网络策略设置。
测试一下小伙伴给的discord的接口:

 curl --location --request POST 'https://discord.com/api/v10/oauth2/token'

结语

正确配置Kubernetes中的Pod使用HTTP代理是满足企业网络要求的关键环节。通过使用ConfigMap或直接在环境变量中设置代理信息,可以为集群的出站流量提供控制和灵活性。不过,记得在部署之前详细测试以确保一切按预期工作。


链接:https://blog.51cto.com/saynaihe/9101344

(版权归原作者所有,侵删)

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
使用kind搭建kuberneteshé bàng?hé bèng?月薪$11k!Meta (US) 已开放Soft Engineer Intern/Co-op准备好屏幕 | 现场:BimBamBoom - Shinzo BakuBaku Ochokochoi @ 下北沢SHELTER重磅!DoorDash、UberEats、Grubhub和Relay通通惨败在养老院的生活 之一‘Princess Iron Fan’: The Height of Modern Chinese Animation[汽车] 一台合格的家用代步车 --- 十代半雅阁混动一周年使用分享周末厨房丨【乳酸菌气泡水】Yakult Soda/Sparkling WaterKubernetes高可用集群二进制部署v1.28.0版本容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档返老还童青春活力四射宾州吉姆索普(Jim Thorpe),一路秋景趣图:系统重构后保留的无用代码电影“花月部落的杀手们”观感Kubernetes:kube-scheduler 源码分析【JetBlue收购Spirit被判违反反垄断法】Frontier Airlines和Spirit Airlines宣布将合并!纯文本模型训出「视觉」表征!MIT最新研究:语言模型用代码就能作画精选DS岗位 | Uline、Autodesk、Tesla公司岗位发布!Kubernetes 中 Nginx 配置热加载Java连接kubernates集群最优雅的两种方式既然有了Kubernetes,为什么还需要 Istio?Kubernetes Gateway API 攻略:解锁集群流量服务新维度!Kubernetes 基础入门,还有谁不会?Nature重磅!mRNA疫苗会产生非预期蛋白,影响未知!辉瑞、Moderna尚未回应优化资源利用:Kubernetes 装箱的效益和挑战个人代理记账出事了!判刑+罚款!2024年起,代理记账必须按这个来,否则……kubernetes之nftables用法介绍At China Expo, a Next-Gen Prosthetic Knee Offers New HopeQuarkus 开发基于 LangChain4j 的扩展,方便将 LLM 集成到 Quarkus 应用程序中天堂流浪记(一)Eye on Climate Goals, China Names 15 Cities as New Energy HubsOne Year After Exit, Blizzard Games Eyes Return to China: ReportCIBC/Jefferies/Northwestern Mutual开放海量实习岗位, 留学生快冲!Moderna最新论文:用mRNA表达IgA单抗,被动防御病菌感染
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。