处理HTTPProxyCIDR警告并在位于代理后面的环境中设置no_proxy的正确方法是什么?

时间:2019-03-27 12:28:33

标签: kubernetes kubeadm

我对k8s比较陌生。现在,我已经多次建立集群,以确保我理解该过程。我在联网方面有些挣扎。我目前正在初始化,如下所示:

kubeadm init --apiserver-advertise-address=10.93.98.204 --pod-network-cidr=10.244.0.0/16

对此,我看到以下警告:

[WARNING HTTPProxyCIDR]: connection to "10.96.0.0/12" uses proxy "http://proxy.corp.sensis.                                                                                          com:3128". This may lead to malfunctional cluster setup. Make sure that Pod and Services IP ranges                                                                                           specified correctly as exceptions in proxy configuration

除其他事项外,我正在尝试确保正确配置群集和覆盖网络(法兰)。

我试图建立no_proxy环境变量(centos 7)。

我尝试如下的方法是如下更新/etc/profile.d/proxy.sh:

printf -v lan '%s,' "10.93.98.204","10.93.98.23","10.93.98.36","10.93.103.236","10.93.97.123","10.93.97.202"
printf -v service '%s,' 10.244.{1..255}.{1..255}
export no_proxy="${lan%,},${service%,},127.0.0.1";
#export no_proxy="${lan%,},10.244.0.0/16,127.0.0.1";
export NO_PROXY=$no_proxy

但是,这种方法会导致一个巨大的字符串($ no_proxy)远远超过Linux环境中的最大长度。

我还尝试在no_proxy中使用pod-network-cidr(10.244.0.0/16-在上面已注释掉)

两个问题: -处理此警告的正确方法是什么(警告HTTPProxyCIDR)? -如何设置no_proxy以使绒布网络覆盖层正常工作并且群集可以工作

2 个答案:

答案 0 :(得分:1)

应该使用no_proxy/NO_PROXY环境变量。但是,您不需要将每个IP添加到字符串中,只需添加整个子网即可。另外,您似乎从列表中丢失了10.96.0.0/12

例如(假设10.93.98.0/24是您的LAN子网):

export no_proxy="10.96.0.0/12,10.93.98.0/24,10.244.0.0/16,127.0.0.1"

此外,如果您使用的是Docker,请确保已配置Docker noProxy。

答案 1 :(得分:1)

在许多环境/应用程序中,CIDR / IP范围不适用于no_proxy。

我们可以合理地假设我们不会通过IP地址访问Web代理之外的网络节点。换句话说,我们使用FQDN来访问python.com,google.com,github.com,但不直接使用其IP地址。

基于这种假设,我们可以绕过网络代理进行所有直接IP地址访问。

export no_proxy=localhost,.svc
printf -v allip '%s,' .{0..255}
export no_proxy="$no_proxy,${allip%,}"

这会将.0,.1,.2,...,.255添加到no_proxy env变量。这里没有魔术。我们仅将IP地址视为FQDN,因此后缀匹配作为FQDN no_proxy设置。假设.120与所有IP地址x.x.x.120匹配。