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

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

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

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