配置Kubernetes Pod使用代理上網(wǎng)
在企業(yè)網(wǎng)絡(luò)環(huán)境中進(jìn)行Kubernetes集群的管理時(shí),經(jīng)常會(huì)遇到需要配置Pods通過HTTP代理服務(wù)器訪問Internet的情況。這可能是由于各種原因,如安全策略限制、網(wǎng)絡(luò)架構(gòu)要求或者訪問特定資源的需要。本文將介紹配置Kubernetes中Pod使用代理的兩種常見方式:通過ConfigMap和直接在應(yīng)用程序環(huán)境變量中設(shè)置。
使用場(chǎng)景
Kubernetes集群中配置Pod使用代理的場(chǎng)景可能包括:
執(zhí)行出站流量控制和審計(jì)。
遵守網(wǎng)絡(luò)訪問策略,強(qiáng)制流量通過指定的出口點(diǎn)。
實(shí)現(xiàn)服務(wù)的代理隔離,以加強(qiáng)內(nèi)網(wǎng)安全。
訪問外部應(yīng)用,我的場(chǎng)景是調(diào)用 discord api。
配置方式
接下來(lái)將介紹兩種常用配置方法:
配置方式一:使用ConfigMap
步驟1:創(chuàng)建ConfigMap
創(chuàng)建一個(gè)名為proxy-config的ConfigMap以包含代理設(shè)置信息:
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中的環(huán)境變量:
apiVersion: v1 kind: Pod metadata: name: example-pod spec: containers: - name: example-container image: nginx envFrom: - configMapRef: name: proxy-config
步驟3:確認(rèn)應(yīng)用程序能正確使用代理
在Pod應(yīng)用程序中,確保這些環(huán)境變量能被正確地使用。比如,在諸如curl、wget這樣的命令行工具中,HTTP_PROXY和HTTPS_PROXY環(huán)境變量是自動(dòng)識(shí)別的,而一些編程語(yǔ)言的HTTP客戶端庫(kù)可能需要在代碼中顯式配置代理。
配置方式二:直接在部署的環(huán)境變量中設(shè)置
步驟1:在Pod定義中設(shè)置環(huán)境變量
與ConfigMap不同,可以直接在Pod或者Deployment的定義中設(shè)置環(huán)境變量,我這里是直接使用了環(huán)境變量的方式:
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
這種方法允許更靈活的設(shè)置,因?yàn)槟憧梢詾椴煌腄eployment指定不同的代理設(shè)置。
步驟2:應(yīng)用更改并確認(rèn)應(yīng)用程序的代理配置
同樣的,確保你的應(yīng)用程序或服務(wù)讀取并正確使用了這些環(huán)境變量設(shè)置。
參數(shù)解釋
http_proxy/https_proxy: 指定HTTP/HTTPS的代理服務(wù)器,格式為http://
no_proxy: 指定的地址不通過代理服務(wù)器訪問。通常包括Kubernetes的服務(wù)發(fā)現(xiàn)后綴如.cluster.local、.svc以及本地網(wǎng)絡(luò)的范圍。
測(cè)試代理設(shè)置
部署Pod后,我們可以測(cè)試這些設(shè)置是否生效:
進(jìn)入Pod的shell環(huán)境:
kubectl exec -it example-pod -- /bin/sh
使用curl測(cè)試代理是否工作:
curl -I 'https://discord.com'

如果返回了正常的HTTP響應(yīng),表明代理設(shè)置生效并正確工作。如果出現(xiàn)連接超時(shí)或代理錯(cuò)誤,可能需要檢查代理服務(wù)器配置和網(wǎng)絡(luò)策略設(shè)置。
測(cè)試一下小伙伴給的discord的接口:
curl --location --request POST 'https://discord.com/api/v10/oauth2/token'

結(jié)語(yǔ)
正確配置Kubernetes中的Pod使用HTTP代理是滿足企業(yè)網(wǎng)絡(luò)要求的關(guān)鍵環(huán)節(jié)。通過使用ConfigMap或直接在環(huán)境變量中設(shè)置代理信息,可以為集群的出站流量提供控制和靈活性。不過,記得在部署之前詳細(xì)測(cè)試以確保一切按預(yù)期工作。
審核編輯:湯梓紅
-
服務(wù)器
+關(guān)注
關(guān)注
14文章
10223瀏覽量
91406 -
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
8230瀏覽量
94423 -
HTTP
+關(guān)注
關(guān)注
0文章
535瀏覽量
35249 -
kubernetes
+關(guān)注
關(guān)注
0文章
257瀏覽量
9482
原文標(biāo)題:Kubernetes 配置Pod使用代理上網(wǎng)
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
阿里云容器Kubernetes監(jiān)控(二) - 使用Grafana展現(xiàn)Pod監(jiān)控?cái)?shù)據(jù)
Kubernetes 從懵圈到熟練:集群服務(wù)的三個(gè)要點(diǎn)和一種實(shí)現(xiàn)
在MATLAB/simulink中建模時(shí)的兩種不同實(shí)現(xiàn)方式
MATLAB/simulink中兩種實(shí)現(xiàn)建模方式的優(yōu)勢(shì)
Kubernetes中的Pod簡(jiǎn)易理解
Kubernetes Pod如何獨(dú)立工作
Kubernetes Pod如何獲取IP地址呢?
配置Kubernetes中Pod使用代理的兩種常見方式
評(píng)論