参照 node-cache 代码,扣出 dummy 接口的部分,可以用在 k8s 里 initContainer阶段设置一个 dummy 接口, 以及守护进程,kube-proxy 的 ipvs 模式就是把 svc 的 ip 配置在 dummy 接口上,然后 lvs 的 nat 规则。
registry.aliyuncs.com/zhangguanzhang/dummy-tool:v0.1.1
# https://cr.loongnix.cn/search loongarch64 镜像
registry.aliyuncs.com/zhangguanzhang/dummy-tool:v0.1.1-loong64
Usage of /dummy-tool:
Run as a dummy interface tool at initContainer or a Container in kubernetes pod
-check-interval duration
interval(in seconds) to check for interface status and addr (default 5s)
-health-port string
port used by health check, ex: 0.0.0.0:8080 (default "8080")
-interface-name string
name of the interface to be created (default "nodelocaldns")
-local-ip string
comma-separated string of ip addresses to bind localdns process to
-setup-interface
indicates whether network interface should be setup (default true)
-exit-remove
will remove the interface when exit (default true)
-version
print version info and exit
/dummy-tool -local-ip 169.254.10.10,172.26.0.2 -health-port 8070
/dummy-tool -local-ip 169.254.10.10 -health-port 8070
/dummy-tool -local-ip 169.254.10.10 -health-port=""
部署一个本地 dns
docker-compose.yml
:
version: '3.5'
services:
dns: # port: tcp/80
image: coredns/coredns:1.8.3
hostname: coredns
restart: always
container_name: wps-coredns
network_mode: host
cap_drop:
- ALL
cap_add:
- NET_BIND_SERVICE
depends_on:
- dummy
volumes:
- ./coredns/:/etc/coredns
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro
command: ["-conf", "/etc/coredns/Corefile"]
logging:
driver: json-file
options:
max-file: '3'
max-size: 70m
dummy:
image: registry.aliyuncs.com/zhangguanzhang/dummy-tool:v0.1.1
hostname: dummy
restart: always
container_name: wps-dummy
network_mode: host
cap_add:
- NET_ADMIN
volumes:
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro
command:
- -local-ip=169.254.20.10
- -check-interval=5s
- -health-port=
- -interface-name=nodelocaldns
- -setup-interface
- -exit-remove=false
logging:
driver: json-file
options:
max-file: '3'
max-size: 7m
./coredns/Corefile
:
.:53 {
bind 169.254.20.10
errors
health :8079
hosts /etc/coredns/hosts {
no_reverse
reload 5s
fallthrough
}
prometheus :9153
forward . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}