kubernetes network troubleshooting

API 无法访问其他服务

最近安装了一个 kube 但是 api server,但是无法访问 mertics server 等组件,经排查

  • api server 运行在 master 节点上

  • 其他 组件运行在 worker 节点上
    核心原因是因为 flannel 打开了 DirectRouting 选项,导致了将宿主机网卡作为 host-gw 直接将 二层 数据包转发出去,并没有进行封装,在云上的网络(火山引擎)禁止此转发行为,表现为

Read More

Seal VPN Not Working in ubuntu 18+

1
2
3
4
5
6
7
8
Ubuntu18以上无法访问网络的解决办法
Ubuntu 18.04 以后,系统预设安装 systemd-resolved,劫持了 /etc/resolve.conf
用 symbolic link 指向 /run/systemd/resolve/stub-resolv.conf
NetworkManager 发现 /etc/resolv.conf 为 symbolic-link, 会忽略我们使用 dnsmasq 的要求。
解法:
sudo systemctl disable systemd-resolved
sudo rm -f /etc/resolv.conf # manually delete the /etc/resolv.conf
sudo systemctl reload NetworkManager # NM will regenerate /etc/resolv.conf

构建与调试 Linux 内核

Linux Kenrel

1
2
wget http://mirrors.ustc.edu.cn/kernel.org/linux/kernel/v4.x/linux-4.19.171.tar.gz
tar -xvf linux-4.19.171.tar.gz

Install Build

1
apt-get install -y libncurses5-dev libssl-dev bison flex libelf-dev gcc make openssl libc6-dev bc

CP Old Config

1
2
3
4
cp /boot/config-4.19.0-14-amd64 .config
make oldconfig
# for debian
sed -ri '/CONFIG_SYSTEM_TRUSTED_KEYS/s/=.+/=""/g' .config

Read More

Proxy

shadowsocks 代理

1
docker run -dt --name ss -p 6443:6443 mritd/shadowsocks -s "-s 0.0.0.0 -p 6443 -m aes-256-cfb -k Dangerous@123"

参考 README

Socket 5 代理

1
docker run -d --name socket5-proxy -p 80:1080 -e PROXY_USER=root  -e PROXY_PASSWORD=Dangerous@123 serjs/go-socks5-proxy

Read More

Tips

自定义指标前缀

istio 没有将所有的配置项都释放出来,因此我们可以通过 EnvoyFilter 这个 CRD 进行操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
kind: EnvoyFilter
apiVersion: networking.istio.io/v1alpha3
metadata:
annotations:
name: mysql-stats-settings
namespace: wordpress
spec:
configPatches:
- applyTo: NETWORK_FILTER
match:
context: ANY
listener:
filterChain:
filter:
name: envoy.filters.network.mysql_proxy
patch:
operation: MERGE
value:
typed_config:
"@type": "type.googleapis.com/envoy.extensions.filters.network.mysql_proxy.v3.MySQLProxy"
stat_prefix: egress_mysql

Envoy 指标对外暴露

istio 没有将所有的指标对外暴露,因此需要额外配置: envoy-stats

1
$ kubectl edit configmaps -n istio-system istio

Read More