【问题标题】:kubectl behind a proxy代理背后的 kubectl
【发布时间】:2017-05-19 20:18:01
【问题描述】:

我已经按照here 的说明使用 minikube 安装了本地 Kubernetes 集群。

我在公司代理下。因此我设置了 http_proxy 和 https_proxy 环境变量。在minikube start 命令之后启动集群后,我还将minikube ip 的值添加到 no_proxy 环境变量中。但是 kubectl 仍然无法连接到集群。

ubuntu@ros-2:~$ kubectl -v=7 get pods
I0105 10:31:47.773801   17607 loader.go:354] Config loaded from file /home/ubuntu/.kube/config
I0105 10:31:47.775151   17607 round_trippers.go:296] GET https://192.168.42.22:8443/api
I0105 10:31:47.778533   17607 round_trippers.go:303] Request Headers:
I0105 10:31:47.778606   17607 round_trippers.go:306]     Accept: application/json, */*
I0105 10:31:47.778676   17607 round_trippers.go:306]     User-Agent: kubectl/v1.5.1 (linux/amd64) kubernetes/82450d0
I0105 10:31:47.783069   17607 round_trippers.go:321] Response Status:  in 4 milliseconds
I0105 10:31:47.783166   17607 helpers.go:221] Connection error: Get https://192.168.42.22:8443/api: Forbidden port
F0105 10:31:47.783181   17607 helpers.go:116] Unable to connect to the server: Forbidden port

我假设这是因为 kubectl 不知道 no_proxy 设置。一个简单的 curl 到集群就可以了。

ubuntu@ros-2:~$ curl -v -k https://192.168.42.22:8443/api
* Hostname was NOT found in DNS cache
*   Trying 192.168.42.22...
* Connected to 192.168.42.22 (192.168.42.22) port 8443 (#0)
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Request CERT (13):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using ECDHE-RSA-AES128-GCM-SHA256
* Server certificate:
*        subject: CN=minikube
*        start date: 2017-01-04 16:04:47 GMT
*        expire date: 2018-01-04 16:04:47 GMT
*        issuer: CN=minikubeCA
*        SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway.
> GET /api HTTP/1.1
> User-Agent: curl/7.35.0
> Host: 192.168.42.22:8443
> Accept: */*
>
< HTTP/1.1 401 Unauthorized
< Content-Type: text/plain; charset=utf-8
< X-Content-Type-Options: nosniff
< Date: Thu, 05 Jan 2017 10:33:45 GMT
< Content-Length: 13
<
Unauthorized
* Connection #0 to host 192.168.42.22 left intact

关于如何解决这个问题的任何想法?

【问题讨论】:

    标签: proxy kubernetes kubectl minikube


    【解决方案1】:

    解决了这个问题。解决方法是在 NO_PROXY 中也包含 no_proxy 详细信息。

    export NO_PROXY=$no_proxy,$(minikube ip)
    

    Relevant thread。希望这对某人有用。

    【讨论】:

    • 对于任何另外被困在糟糕的 A 级 Cisco AnyConnect VPN 客户端之后的人,它有助于将所有发送到 192.168.99.100 的请求路由到一个黑洞 — 这样在 no_proxy 中包含该 IP 地址的任何内容不起作用——你可能也想看看这个解决方案:github.com/kubernetes/minikube/issues/…
    猜你喜欢
    • 2021-05-28
    • 2018-12-21
    • 1970-01-01
    • 2018-10-27
    • 2012-03-03
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多