Proxy

Kubernetes 集群中的 curling 服務被公司代理阻止

  • February 4, 2021

我有一個在公司代理後面執行的 Kubernetes 集群。我沒有使用 Minikube。我有http_proxy,https_proxyno_proxy設置在 //etc/environment. no_proxy 有 127.0.0.0 和每個 node-ip 定義。

如果我嘗試從我的主節點使用 ClusterIP 捲曲服務,我會陷入公司代理。我需要做什麼才能訪問該服務?將服務更改為 NodePort 並從集群外部訪問它是可行的。

我希望有人可以向我解釋我所缺少的。提前致謝。

部署和服務的 Yaml 文件

apiVersion: apps/v1
kind: Deployment
metadata:
 labels:
   run: app
 name: app-blue
spec:
 replicas: 1
 selector:
   matchLabels:
     run: app
     version: 0.0.1
 template:
   metadata:
     labels:
       run: app
       version: 0.0.1
   spec:
     containers:
     - name: app
       image: errm/versions:0.0.1
       ports:
       - containerPort: 3000
----



apiVersion: v1
kind: Service
metadata:
 name: app-service
spec:
 selector:
   run: app
   version: 0.0.1
 ports:
 - name: http
   port: 80
   protocol: TCP
   targetPort: 3000

Kubectl 描述服務

Name:              app-service
Namespace:         default
Labels:            <none>
Annotations:       <none>
Selector:          run=app,version=0.0.1
Type:              ClusterIP
IP Families:       <none>
IP:                10.107.64.107
IPs:               10.107.64.107
Port:              http  80/TCP
TargetPort:        3000/TCP
Endpoints:         10.244.2.4:3000
Session Affinity:  None
Events:            <none>

從主節點捲曲

curl 10.107.64.107:80
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="de" lang="de" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">

<!--Head-->
<head>
 <meta content="IE=11.0000" http-equiv="X-UA-Compatible">
 <meta http-equiv="content-type" content="text/html; charset=utf-8">
 <title>McAfee Web Gateway - Notification</title>
 <script src="/mwg-internal/de5fs23hu73ds/files/javascript/sw.js" type="text/javascript" ></script>
 <link rel="stylesheet" href="/mwg-internal/de5fs23hu73ds/files/default/web.css" />
</head>
<!--/Head-->
<!--Body-->
<body  onload="swOnLoad();" class="background">
<div class="inner_frame">
<div class="head_right_text">
<img alt="Logo" class="emblem" src='/mwg-internal/de5fs23hu73ds/files/default/img/wappen.png'>
</div>

<img alt="Logo" class="lion_left" src='/mwg-internal/de5fs23hu73ds/files/default/img/bg_loewe_links.png'>
<img alt="Logo" class="lion_right" src='/mwg-internal/de5fs23hu73ds/files/default/img/bg_loewe_rechts.png'>

<!--Contents-->
<div class="msg_border">
<div class="msg_head">
Keine Verbindung möglich.
</div>
<div class="msg_text">

<p>
Der Proxy hat eine ungültige Antwort erhalten.
</p>
</div>
</div>

<!--/Contents-->
</div>
</body>
<!--/Body-->
</html>

正如評論中所討論的:這裡的問題是代理仍在使用中,這可能是由於 no_proxy 不完整。

使用服務 IP 地址而不是 DNS 名稱仍會遵守 HTTP 代理環境配置。

為了避免 SDN 地址通過外部代理,您應該能夠將整個服務子網添加到您的 no_proxy,也許還包括 de Pods 子網,例如:

export NO_PROXY=<existing-exclusions>,10.233.0.0/18,10.233.64.0/18

引用自:https://serverfault.com/questions/1051866