目地
为k8s的docker服务提供http/https代理,解决docker无法pull gcr.io/google_containers 谷歌镜像问题
环境
简要步骤
1. 直接使用apt-get install 安装
apt-get install squid3 -y
注意:配置文件在/etc/squid或/etc/squid3下,根据系统不同可能会有一点差异,由于这里进行快速安装,不需要暴露端口给外部使用,也不需要密码,所以配置文件我这里保持默认
1. stunnel主要用来在GCE和k8s机器上代理的数据传输进行加密,否则明文传输很快会被GFW拦截.注意stunnel分为服务端和客户端,GCE上安装服务端,在k8s集群上安装客户端
2. 直接使用apt-get install 安装服务端
apt-get install stunnel4 -y
如果遇到
使用dpkg强制覆盖安装:
cd /var/cache/apt/archives
dpkg -i --force-overwrite xxx.deb
编辑配置文件 vim /etc/stunnel/stunnel.conf
client = no #是否为客户端 这里是服务端填写no
[squid]
accept = 65501
connect = 127.0.0.1:3128 #本地squid服务地址
cert = /etc/stunnel/stunnel.pem #下一步生成的证书地址
openssl生成证书,用户stunnel加密解密
openssl genrsa -out key.pem 2048
openssl req -new -x509 -key key.pem -out cert.pem -days 1095
cat key.pem cert.pem >> /etc/stunnel/stunnel.pem
注意:创建证书时,系统会要求您提供一些国家/地区信息,可随便输入,但是当被要求输入“Common Name”时,您必须输入正确的hostname或IP地址(VPS),我这里输入的ip地址。
通过配置/etc/default/stunnel4文件启用自动启动,vim /etc/default/stunnel4
#将ENABLED更改为1:
ENABLED=1
重新启动Stunnel使配置生效,使用以下命令:
/etc/init.d/stunnel4 restart
1. 安装步骤几乎和上面相同
2. scp或其他方法把证书拷贝到k8s集群中
3. 配置文件不同(注意不要#号,systemctl status stunnel4.service)
cert = /etc/stunnel/stunnel.pem #和服务端完全相同的证书
client = yes #声明为客户端
[squid]
accept = 127.0.0.1:65502 #本地代理的端口,即为http/https代理地址
connect = {GCE_IP}:65501 #GCE 服务端ip和端口
1. 配置添加http代理127.0.0.1:65502 即可
https://docs.docker.com/engine/admin/systemd/#start-manually