首页 > 其他分享 >Kubernetes 配置Pod使用代理上网

Kubernetes 配置Pod使用代理上网

时间:2024-01-04 15:01:02浏览次数:52  
标签:ConfigMap name Kubernetes 代理 上网 proxy 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: v1
kind: ConfigMap
metadata:
  name: proxy-config
data:
  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: 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://<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
  1. 使用curl测试代理是否工作:
 curl -I 'https://discord.com'

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

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

image.png

结语

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

标签:ConfigMap,name,Kubernetes,代理,上网,proxy,Pod,环境变量
From: https://blog.51cto.com/saynaihe/9101344

相关文章

  • VMware Tanzu Kubernetes Grid (TKG) 1.4 下载 - VMware Kubernetes 分发版
    作者:gc,主页:www.sysin.orgTanzuKubernetes集群是由VMware构建、签名和支持的开源Kubernetes容器编排平台的完整分发版。可以通过使用TanzuKubernetesGrid服务在主管集群上置备和运行TanzuKubernetes集群。主管集群是启用了vSpherewithTanzu的vSphere集群。Tanzu......
  • 跨集群流量调度实现 Kubernetes 集群金丝雀升级
    有了多集群服务和跨集群的流量调度之后,使用Kubernetes的方式会发生很大的变化。流量的管理不再限制单一集群内,而是横向跨越了多个集群。最重要的是这一切“静悄悄地”发生,对应用来说毫无感知。就拿Kubernetes版本升级来说吧。记得曾经经历过集群的原地升级:团队的几个人经过多次......
  • VMware Tanzu Community Edition (TCE) 0.9 - 适合所有人的 Tanzu Kubernetes
    作者:gc,主页:www.sysin.org2021.10.04,VMware宣布了一个非常令人兴奋的新项目,称为TanzuCommunityEdition。以下TanzuCommunityEdition介绍翻译自VMware相关博客。什么是Tanzu社区版,为什么要关心?今天,最终用户(管理员、架构师、开发人员、平台运营商等)很难获得VMware的Tan......
  • VMware Tanzu Kubernetes Grid Integrated Edition (TKGI) 1.12 下载
    作者:gc,主页:www.sysin.orgVMwareTanzuKubernetesGridIntegratedEdition(TKGI)使运营商能够使用BOSH和OpsManager配置、运营和管理企业级Kubernetes集群。VMwareTanzuKubernetesGridIntegratedEdition(以前称为VMwareEnterprisePKS)是基于Kubernetes的容器解决......
  • K8S_IPV6 POD与数据库联通方法以及快速网络调试的一个思路
    K8S_IPV6POD与数据库联通方法以及快速网络调试的一个思路背景前端时间搭建了一套K8SonlyIPV6SingleStack的测试环境因为自己长时间不搞K8S了,并且IPV6的搭建方法墙内的文档很不完整我这边仅是搭建了一套比较基本的K8S_calico_ingress的单栈IPV6的环境但是同事一直要求......
  • 片上网络相关知识总结
    什么是片上网络片上网络(On-ChipNetwork)是指在集成电路芯片上实现的一种通信网络结构,用于连接芯片上的各个功能模块、处理器核心、存储单元以及其他重要组件。随着芯片上集成度的提高和多核处理器的兴起,片上网络变得愈加重要,因为它在芯片内部提供了高效、低延迟的通信方式。以下......
  • 非Kubernetes工作负载(如虚拟机或裸机服务器)加入网格(续)
    摘要:workloadgroup类似于deployment;workloadentry类似于pod;存活探针不是服务网格的关注点;workloadgroup必须配置应用程序的就绪探针关键点:在vm上输入所有节点的路由routeadd-net172.25.244.192/26gw 192.168.31.211......;将东西向网关的主机名硬编码到vm的hosts文件中;istio-......
  • Kubernetes与Docker"分手"之后如何设计DevOps流水线
    一、前言总所周知,从Kubernetes1.24版本开始已经弃用Docker这个陪伴它风声水起的"初恋女友",届时在Kubernetes社区掀起了异常"轩然大波",影响甚至波及到社区之外的,也导致了Kubernetes不得不写好几篇博客来反复解释这么做的原因,虽然是老生常谈的问题了,如今距离1.24版本正式发布已过去......
  • 一文带你深入理解K8s-Pod的意义和原理
    本文分享自华为云社区《深入理解K8s-Pod的意义和原理》,作者:breakDawn。在Kubernetes概念中,有以下五种概念:容器container:镜像管理的最小单位生产任务Pod:容器组,资源调度最小单位节点Node:对应集群中的单台机器,是硬件单元的最小单位集群Cluster:对应整个集群,是处理元数据的最小单位集群......
  • kubernetes 集群 oom 导致集群无法访问
    现象执行kubectlgetnode无法获取集群状态。日志截图:查看message日志,发现报错存在OOM,并与应用测试的容器相关,截图如下:分析首先,定位最初的oom发生的时间点,是2023年12月15日,如图按照正常逻辑来讲,应用实例做了limit限制,如果应用超出内存限制,应该被杀掉并且进行重新调度。进一步......