0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

配置Kubernetes中Pod使用代理的两种常见方式

马哥Linux运维 来源:51CTO 2024-01-05 11:22 次阅读

配置Kubernetes Pod使用代理上网

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

使用场景

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

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

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

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

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

配置方式

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

配置方式一:使用ConfigMap

步骤1:创建ConfigMap

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

apiVersion: v1
kind: ConfigMap
metadata:
  name: proxy-config
data:
  http_proxy: http://:
  https_proxy: http://:
  no_proxy: .cluster.local,.svc,.my-company.com,127.0.0.1

替换为实际代理服务器的地址和端口

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

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

apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  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/v1
kind: Deployment
metadata:
  name: example-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: example
  template:
    metadata:
      labels:
        app: example
    spec:
      containers:
      - name: example-container
        image: nginx
        env:
        - name: http_proxy
          value: http://:
        - name: https_proxy
          value: http://:
        - name: no_proxy
          value: .cluster.local,.svc,.my-company.com,127.0.0.1

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

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

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

参数解释

http_proxy/https_proxy: 指定HTTP/HTTPS的代理服务器,格式为http://:@:

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

测试代理设置

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

进入Pod的shell环境:

kubectl exec -it example-pod -- /bin/sh

使用curl测试代理是否工作:

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

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

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

f4d582a2-ab0b-11ee-8b88-92fbcf53809c.jpg

结语

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

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    8116

    浏览量

    82509
  • 网络
    +关注

    关注

    14

    文章

    7251

    浏览量

    87440
  • HTTP
    +关注

    关注

    0

    文章

    466

    浏览量

    30314
  • kubernetes
    +关注

    关注

    0

    文章

    219

    浏览量

    8568

原文标题:Kubernetes 配置Pod使用代理上网

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    两种采样方式

    两种采样方式.....................................
    发表于 08-08 15:04

    Kubernetes的Device Plugin设计解读

    活跃的社区其实是Kubernetes打赢容器调度框架之战的核心法宝。先来简要介绍一下kubernetes个模块:Extended Resource: 一自定义资源扩展的
    发表于 03-12 16:23

    阿里云容器Kubernetes监控(二) - 使用Grafana展现Pod监控数据

    个版本的Grafana我们已经内置了个模板,一个负责展示节点级别的物理资源,一个负责展示Pod相关的资源。开发者也可以通过添加自定义的Dashboard的方式进行更复杂的展现,也可
    发表于 05-10 15:28

    常见两种串口通信

    常见两种串口通信在串行通信中,数据通常是在个站之间传送,按照数据在通信线路上的传送方向可分为3基本的传送方式:单工、半双工和全双工.
    发表于 06-10 16:20

    请问小车转向两种方式有什么优缺点?

    我知道的小车转向常见的有两种方式,一是通过舵机控制转向,另一是通过控制个轮子的转速,通过转
    发表于 05-21 02:37

    linux配置mysql的两种方式

    两种方式:a、$ find / -name mysql–print 查看是否有mysql文件夹b、$ netstat -a –n 查看是否打开3306端口
    发表于 07-26 07:46

    从零开始入门 K8s| 详解 Pod 及容器设计模式

    概念抽象出来呢?或者说能不能通过调度把 Pod 这个事情给解决掉呢?为什么 Pod 必须是 Kubernetes 里面的原子调度单位?下面我们通过一个例子来解释。假如现在有个容器,它
    发表于 09-20 15:12

    Kubernetes 从懵圈到熟练:集群服务的三个要点和一实现

    照进现实前边节,我们看到了,Kubernetes 集群的服务,本质上是负载均衡,即反向代理;同时我们知道了,在实际实现,这个反向代理,并
    发表于 09-24 15:35

    不吹不黑,今天我们来聊一聊 Kubernetes 落地的三方式

    Kubernetes 作为自己的基础设施重心,"一万个人眼中就有一万个哈姆雷特",虽说 Kubernetes 是容器管理领域的事实标准,但实际上在不同背景的企业Kubernetes
    发表于 10-12 16:07

    Pod资源配置

    Kubernetes进阶实战》第四章《管理Pod资源对象》
    发表于 10-22 14:39

    网络爬虫之关于爬虫http代理常见使用方式

    resp.status_codeprint resp.text这种是比较常见使用自动转发代理的demo,其他爬虫语言使用方式也大同小异。 以上是使用http代理
    发表于 04-26 17:43

    SQL语言的两种使用方式

    SQL语言的两种使用方式在终端交互方式下使用,称为交互式SQL嵌入在高级语言的程序中使用,称为嵌入式SQL―高级语言如C、Java等,称为宿主语言嵌入式SQL的实现方式源程序(用主语言
    发表于 12-20 06:51

    Kubernetes中的Pod简易理解

    PodKubernetes中非常重要的概念,也是Kubernetes管理的基本单位。正如其名,Pod像一个豌豆荚,可以容纳多个container,拥有相同的IP地址。
    的头像 发表于 02-15 10:44 929次阅读

    Kubernetes Pod如何独立工作

    在学习 Kubernetes 网络模型的过程中,了解各种网络组件的作用以及如何交互非常重要。本文就介绍了各种网络组件在 Kubernetes 集群中是如何交互的,以及如何帮助每个 Pod 都能获取 IP 地址。
    的头像 发表于 05-16 14:29 428次阅读
    <b class='flag-5'>Kubernetes</b> <b class='flag-5'>Pod</b>如何独立工作

    Kubernetes Pod如何获取IP地址呢?

    Kubernetes 网络模型的核心要求之一是每个 Pod 都拥有自己的 IP 地址并可以使用该 IP 地址进行通信。很多人刚开始使用 Kubernetes 时,还不清楚如何为每个 Pod
    的头像 发表于 07-21 10:00 538次阅读
    <b class='flag-5'>Kubernetes</b> <b class='flag-5'>Pod</b>如何获取IP地址呢?