办公网络访问K8S内虚拟网络

受新冠肺炎疫情影响,现在很多小伙伴都在家中远程办公;我们公司也不例外,这几天陆续给需要的同事们都开通了公司的VPN,以便大家远程办公。

前几天在测试环境挤出了些资源,使用Ansible工具给新项目搭建了K8S环境;今天,开发的同事想要从公司的网段能直接访问到K8S内部的虚拟网络。查找了下,在群集中的一个节点上使用 NAT 即可实现此功能。

现环境如下:

办公区网段 10.10.0.0/24,测试服务器网段 172.16.220.0/24;
K8S群集网段 172.20.0.0/16,K8S SVC 网段10.68.0.0/16。

在群集的任一节点上操作均可,这里就选在141上进行操作:

开启内核转发

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p

设置SNAT:

iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -d 172.20.0.0/16 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -d 10.68.0.0/16 -j MASQUERADE

三层交换上设置路由条目:

sys
ip route 10.68.0.0 255.255.0.0 172.16.220.141
ip route 172.20.0.0 255.255.0.0 172.16.220.141

至此网络已经打通,在办公区电脑上测试:

但是在 k8s 中,由于 pod ip 随时都可能在变化,service ip 也不是能轻松获取到的。我们希望内网 DNS 在解析 *.cluster.local,去coreDNS寻找解析结果。

于是在此台机上又搭建了Bind-DNS服务,我是源码部署的,具体过程就不再贴出,之前文章有,主要是配置*.cluster.local域名的解析:

vim /usr/local/bind9/etc/named.conf
// named.conf
options {
        listen-on port 53 { 172.16.220.141; };
        directory "/var/named";
        max-cache-size 128M;
        allow-query { any; };
        recursion yes;
        dnssec-enable no;         #需关闭dnssec,否则解析报错: 无有效签名
        version "Microsoft Windows 2008 DNS Server. (-_-)";
        forward first;
        forwarders {
                223.5.5.5;        #解析本地未有域名时将转发到这些DNS地址
                114.114.114.114;
        };
};

key "rndc-key" {
        algorithm hmac-sha256;
        secret "aI56kwUga+lVobWbqqiDItHDIsnlEBgS1egW+jTYv8w=";
};

controls {
        inet 127.0.0.1 port 953
                allow { 127.0.0.1; } keys { "rndc-key"; };
};

zone "." IN {
        type hint;
        file "named.ca";
};

include "/usr/local/bind9/etc/named.rfc1912.zones";
vim /usr/local/bind9/etc/named.rfc1912.zones
// named.rfc1912.zones
zone "localhost" IN {
        type master;
        file "localhost.zone";
        allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};

zone "cluster.local" IN {
        type forward;
forward only; forwarders { 10.68.0.2; }; };
rndc reload

DNS解析转发配置完成。

在办公区电脑查看:

《办公网络访问K8S内虚拟网络》有1条评论

发表评论

error: Content is protected !!