目录

Kubernetes代理节点

概述

一般企业内的私有化 Kubernetes 集群都在局域网内,有时候在下载一些软件的时候会非常不方便,但是通过加入一个可以连接 Internet 的节点作为一个代理的节点并且给集群提供稳定的代理服务是一个不错的选择。

搭建和调度代理服务

下面是通过 ubuntu/squid 的运行 squid 服务的命令,生产环境下注意更换为 Deployment 等其他资源类型,因为创建了 Service 了,所以容器内其他服务在调用的时候直接使用 service name 就可以了,比如 squid.kube-system.svc.cluster.local:3128 或者短域名 squid:3128,DOK 的安装包里暂时没有内置这个镜像,如果有镜像需求的话,可以在公网节点上提前下载好。

1
2
kubectl -n kube-system run squid --image ubuntu/squid:4.13-21.10_edge
kubectl -n kube-system expose pod squid --port=3128 --target-port=3128

集群内Pod不同场景的代理设置

yum代理

1
2
3
kubectl run centos --image centos:7 --command -- sleep infinity
# /etc/yum.conf
proxy=http://squid.kube-system.svc.cluster.local:3128

pip代理

1
pip3 install numpy --proxy=http://squid.kube-system.svc.cluster.local:3128

普通HTTP/HTTPS代理

1
2
3
4
5
# 环境变量
export HTTP_PROXY=http://squid.kube-system.svc.cluster.local:3128
export HTTPS_PORXY=http://squid.kube-system.svc.cluster.local:3128
# 验证
curl -v https://baidu.com

Containerd代理

这个使用场景是这样的,假设集群内有一个节点可以访问公网,那么在该节点上部署了 squid 之后,其余节点的 Containerd 配置相关的代理,这样其余节点就可以去公网拉取镜像了,可以给 squid 创建一个 NodePort Service,这样其他节点就可以使用了。

1
2
3
4
[Service]
#uncomment to enable the experimental sbservice (sandboxed) version of containerd/cri integration
#Environment="ENABLE_CRI_SANDBOXES=sandboxed"
Environment="HTTP_PROXY=http://172.22.0.33:31214;HTTPS_PROXY=http://172.22.0.33:31214"
警告
本文最后更新于 2022年5月29日,文中内容可能已过时,请谨慎参考。