svclb pod 的 lb-tcp-443 容器启动找不到 iptables 命令 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dxdydz
V2EX    Kubernetes

svclb pod 的 lb-tcp-443 容器启动找不到 iptables 命令

  •  
  •   dxdydz 2024-07-07 10:13:14 +08:00 1555 次点击
    这是一个创建于 512 天前的主题,其中的信息可能已经有所发展或是发生改变。

    scclb event 概括:Back-off restarting failed container lb-tcp-443 in pod svclb-traefik-e91c51d8-5vt7w_kube-system(2a842b27-2c1f-42d7-b24a-2504dfdde6a7)

    使用kubectl logs svclb-traefik-e91c51d8-5vt7w -n kube-system -c lb-tcp-443,输出如下:

    + trap exit TERM INT + BIN_DIR=/sbin + check_iptables_mode + set +e + lsmod + grep nf_tables + '[' 1 '=' 0 ] + mode=legacy + set -e + info 'legacy mode detected' + echo '[INFO] ' 'legacy mode detected' [INFO] legacy mode detected + set_legacy + ln -sf /sbin/xtables-legacy-multi /sbin/iptables + ln -sf /sbin/xtables-legacy-multi /sbin/iptables-save + ln -sf /sbin/xtables-legacy-multi /sbin/iptables-restore + ln -sf /sbin/xtables-legacy-multi /sbin/ip6tables + start_proxy + echo 0.0.0.0/0 + grep -Eq : + iptables -t filter -I FORWARD -s 0.0.0.0/0 -p TCP --dport 443 -j ACCEPT /usr/bin/entry: line 46: iptables: not found 

    系统日志如下:

    Jul 07 09:45:10 ArchVF2 k3s[505]: I0707 09:45:10.681870 505 scope.go:115] "RemoveContainer" cOntainerID="3571d6d9336cdea67e4d6b4da173b5f519e5c1e48aa141d6cf40489eb8a6fc0e" Jul 07 09:45:10 ArchVF2 k3s[505]: I0707 09:45:10.682112 505 scope.go:115] "RemoveContainer" cOntainerID="df5231ece32ced969d38c5687d3559384c6791c65a2f484e1e84863e6d15efa9" Jul 07 09:45:10 ArchVF2 k3s[505]: E0707 09:45:10.687671 505 pod_workers.go:1294] "Error syncing pod, skipping" err="[failed to \"StartContainer\" for \"lb-tcp-80\" with CrashLoopBackOff: \"back-off 5m0s restarting failed cOntainer=lb-tcp-80 pod=svclb-traefik-e91c51d8-5vt7w_kube-system(2a842b27-2c1f-42d7-b24a-2504dfdde6a7)\", failed to \"StartContainer\" for \"lb-tcp-443\" with CrashLoopBackOff: \"back-off 5m0s restarting failed cOntainer=lb-tcp-443 pod=svclb-traefik-e91c51d8-5vt7w_kube-system(2a842b27-2c1f-42d7-b24a-2504dfdde6a7)\"]" pod="kube-system/svclb-traefik-e91c51d8-5vt7w" podUID=2a842b27-2c1f-42d7-b24a-2504dfdde6a7 Jul 07 09:45:14 ArchVF2 k3s[505]: I0707 09:45:14.448587 505 handler.go:232] Adding GroupVersion traefik.containo.us v1alpha1 to ResourceManager Jul 07 09:45:14 ArchVF2 k3s[505]: I0707 09:45:14.448982 505 handler.go:232] Adding GroupVersion traefik.containo.us v1alpha1 to ResourceManager Jul 07 09:45:14 ArchVF2 k3s[505]: I0707 09:45:14.451023 505 handler.go:232] Adding GroupVersion k3s.cattle.io v1 to ResourceManager Jul 07 09:45:14 ArchVF2 k3s[505]: I0707 09:45:14.452731 505 handler.go:232] Adding GroupVersion traefik.containo.us v1alpha1 to ResourceManager Jul 07 09:45:14 ArchVF2 k3s[505]: I0707 09:45:14.454400 505 handler.go:232] Adding GroupVersion traefik.containo.us v1alpha1 to ResourceManager Jul 07 09:45:14 ArchVF2 k3s[505]: I0707 09:45:14.454759 505 handler.go:232] Adding GroupVersion traefik.containo.us v1alpha1 to ResourceManager Jul 07 09:45:14 ArchVF2 k3s[505]: I0707 09:45:14.454992 505 handler.go:232] Adding GroupVersion helm.cattle.io v1 to ResourceManager Jul 07 09:45:14 ArchVF2 k3s[505]: I0707 09:45:14.455554 505 handler.go:232] Adding GroupVersion helm.cattle.io v1 to ResourceManager Jul 07 09:45:14 ArchVF2 k3s[505]: I0707 09:45:14.455838 505 handler.go:232] Adding GroupVersion traefik.containo.us v1alpha1 to ResourceManager Jul 07 09:45:14 ArchVF2 k3s[505]: I0707 09:45:14.456597 505 handler.go:232] Adding GroupVersion traefik.containo.us v1alpha1 to ResourceManager Jul 07 09:45:22 ArchVF2 k3s[505]: W0707 09:45:22.768545 505 sysinfo.go:203] Nodes topology is not available, providing CPU topology Jul 07 09:45:22 ArchVF2 k3s[505]: W0707 09:45:22.770967 505 machine.go:65] Cannot read vendor id correctly, set empty. Jul 07 09:45:23 ArchVF2 k3s[505]: I0707 09:45:23.681533 505 scope.go:115] "RemoveContainer" cOntainerID="3571d6d9336cdea67e4d6b4da173b5f519e5c1e48aa141d6cf40489eb8a6fc0e" Jul 07 09:45:23 ArchVF2 k3s[505]: I0707 09:45:23.681782 505 scope.go:115] "RemoveContainer" cOntainerID="df5231ece32ced969d38c5687d3559384c6791c65a2f484e1e84863e6d15efa9" Jul 07 09:45:23 ArchVF2 k3s[505]: E0707 09:45:23.687267 505 pod_workers.go:1294] "Error syncing pod, skipping" err="[failed to \"StartContainer\" for \"lb-tcp-80\" with CrashLoopBackOff: \"back-off 5m0s restarting failed cOntainer=lb-tcp-80 pod=svclb-traefik-e91c51d8-5vt7w_kube-system(2a842b27-2c1f-42d7-b24a-2504dfdde6a7)\", failed to \"StartContainer\" for \"lb-tcp-443\" with CrashLoopBackOff: \"back-off 5m0s restarting failed cOntainer=lb-tcp-443 pod=svclb-traefik-e91c51d8-5vt7w_kube-system(2a842b27-2c1f-42d7-b24a-2504dfdde6a7)\"]" pod="kube-system/svclb-traefik-e91c51d8-5vt7w" podUID=2a842b27-2c1f-42d7-b24a-2504dfdde6a7 

    补充,查找资料后提示似乎是宿主机iptablesiptables-nft内核模块问题,lsmod输出如下:

    Module Size Used by veth 45056 0 nft_log 12288 5 nft_limit 16384 5 xt_limit 12288 0 xt_NFLOG 12288 0 nfnetlink_log 28672 5 xt_physdev 12288 10 xt_comment 12288 172 ip_set 61440 0 vxlan 167936 0 nft_chain_nat 12288 6 nf_conntrack_netlink 65536 0 xt_addrtype 12288 13 tun 86016 4 overlay 217088 9 8188eu 1658880 0 rtl8xxxu 270336 0 mac80211 1032192 1 rtl8xxxu dwmac_starfive 12288 0 cfg80211 638976 2 mac80211,rtl8xxxu stmmac_platform 28672 1 dwmac_starfive stmmac 421888 4 dwmac_starfive,stmmac_platform rfkill 40960 3 cfg80211 vfat 28672 1 pcs_xpcs 24576 1 stmmac evdev 32768 1 libarc4 12288 1 mac80211 fat 122880 1 vfat phylink 69632 2 stmmac,pcs_xpcs ptp 36864 1 stmmac wave5 147456 0 pps_core 24576 1 ptp v4l2_mem2mem 36864 1 wave5 axp20x_pek 16384 0 imx708 28672 0 goodix_ts 40960 0 designware_i2s 36864 2 sch_fq_codel 24576 5 br_netfilter 40960 0 bridge 442368 1 br_netfilter stp 12288 1 bridge llc 16384 2 bridge,stp dm_mod 212992 0 zram 53248 2 
    3 条回复    2024-07-07 16:40:08 +08:00
    julyclyde
        1
    julyclyde  
       2024-07-07 11:56:16 +08:00
    不是缺命令吗?你咋会联想到模块去的?
    guanzhangzhang
        2
    guanzhangzhang  
       2024-07-07 16:28:44 +08:00
    1. 手动 docker run 下 image 看下有没有 iptables 命令,还是 PATH env 问题
    2. 你自己做的镜像还是官方的,skopeo list-tags 看看新版本
    dxdydz
        3
    dxdydz  
    OP
       2024-07-07 16:40:08 +08:00
    @guanzhangzhang 看到了:
    # cat /usr/bin/entry
    #!/bin/sh
    set -ex

    trap exit TERM INT

    BIN_DIR="/sbin"

    info()
    {
    echo '[INFO] ' "$@"
    }
    fatal()
    {
    echo '[ERROR] ' "$@" >&2
    exit 1
    }

    check_iptables_mode() {
    set +e
    lsmod | grep "nf_tables" 2> /dev/null
    if [ $? = 0 ]; then
    mode=nft
    else
    mode=legacy
    fi
    set -e
    }

    set_nft() {
    for i in iptables iptables-save iptables-restore ip6tables; do
    ln -sf /sbin/xtables-nft-multi "$BIN_DIR/$i";
    done
    }

    set_legacy() {
    for i in iptables iptables-save iptables-restore ip6tables; do
    ln -sf /sbin/xtables-legacy-multi "$BIN_DIR/$i";
    done
    }

    start_proxy() {
    for src_range in ${SRC_RANGES}; do
    if echo ${src_range} | grep -Eq ":"; then
    ip6tables -t filter -I FORWARD -s ${src_range} -p ${DEST_PROTO} --dport ${DEST_PORT} -j ACCEPT
    else
    iptables -t filter -I FORWARD -s ${src_range} -p ${DEST_PROTO} --dport ${DEST_PORT} -j ACCEPT
    fi
    done

    for dest_ip in ${DEST_IPS}; do
    if echo ${dest_ip} | grep -Eq ":"; then
    [ $(cat /proc/sys/net/ipv6/conf/all/forwarding) == 1 ] || exit 1
    ip6tables -t filter -A FORWARD -d ${dest_ip}/128 -p ${DEST_PROTO} --dport ${DEST_PORT} -j DROP
    ip6tables -t nat -I PREROUTING -p ${DEST_PROTO} --dport ${SRC_PORT} -j DNAT --to [${dest_ip}]:${DEST_PORT}
    ip6tables -t nat -I POSTROUTING -d ${dest_ip}/128 -p ${DEST_PROTO} -j MASQUERADE
    else
    [ $(cat /proc/sys/net/ipv4/ip_forward) == 1 ] || exit 1
    iptables -t filter -A FORWARD -d ${dest_ip}/32 -p ${DEST_PROTO} --dport ${DEST_PORT} -j DROP
    iptables -t nat -I PREROUTING -p ${DEST_PROTO} --dport ${SRC_PORT} -j DNAT --to ${dest_ip}:${DEST_PORT}
    iptables -t nat -I POSTROUTING -d ${dest_ip}/32 -p ${DEST_PROTO} -j MASQUERADE
    fi
    done
    }

    check_iptables_mode
    case $mode in
    nft)
    info "nft mode detected"
    set_nft
    ;;
    legacy)
    info "legacy mode detected"
    set_legacy
    ;;
    *)
    fatal "invalid iptables mode"
    ;;
    esac
    start_proxy

    if [ ! -e /pause ]; then
    mkfifo /pause
    fi
    </pause
    / # cat /usr/bin/entry
    #!/bin/sh
    set -ex

    trap exit TERM INT

    BIN_DIR="/sbin"

    info()
    {
    echo '[INFO] ' "$@"
    }
    fatal()
    {
    echo '[ERROR] ' "$@" >&2
    exit 1
    }

    check_iptables_mode() {
    set +e
    lsmod | grep "nf_tables" 2> /dev/null
    if [ $? = 0 ]; then
    mode=nft
    else
    mode=legacy
    fi
    set -e
    }

    set_nft() {
    for i in iptables iptables-save iptables-restore ip6tables; do
    ln -sf /sbin/xtables-nft-multi "$BIN_DIR/$i";
    done
    }

    set_legacy() {
    for i in iptables iptables-save iptables-restore ip6tables; do
    ln -sf /sbin/xtables-legacy-multi "$BIN_DIR/$i";
    done
    }

    start_proxy() {
    for src_range in ${SRC_RANGES}; do
    if echo ${src_range} | grep -Eq ":"; then
    ip6tables -t filter -I FORWARD -s ${src_range} -p ${DEST_PROTO} --dport ${DEST_PORT} -j ACCEPT
    else
    iptables -t filter -I FORWARD -s ${src_range} -p ${DEST_PROTO} --dport ${DEST_PORT} -j ACCEPT
    fi
    done

    for dest_ip in ${DEST_IPS}; do
    if echo ${dest_ip} | grep -Eq ":"; then
    [ $(cat /proc/sys/net/ipv6/conf/all/forwarding) == 1 ] || exit 1
    ip6tables -t filter -A FORWARD -d ${dest_ip}/128 -p ${DEST_PROTO} --dport ${DEST_PORT} -j DROP
    ip6tables -t nat -I PREROUTING -p ${DEST_PROTO} --dport ${SRC_PORT} -j DNAT --to [${dest_ip}]:${DEST_PORT}
    ip6tables -t nat -I POSTROUTING -d ${dest_ip}/128 -p ${DEST_PROTO} -j MASQUERADE
    else
    [ $(cat /proc/sys/net/ipv4/ip_forward) == 1 ] || exit 1
    iptables -t filter -A FORWARD -d ${dest_ip}/32 -p ${DEST_PROTO} --dport ${DEST_PORT} -j DROP
    iptables -t nat -I PREROUTING -p ${DEST_PROTO} --dport ${SRC_PORT} -j DNAT --to ${dest_ip}:${DEST_PORT}
    iptables -t nat -I POSTROUTING -d ${dest_ip}/32 -p ${DEST_PROTO} -j MASQUERADE
    fi
    done
    }

    check_iptables_mode
    case $mode in
    nft)
    info "nft mode detected"
    set_nft
    ;;
    legacy)
    info "legacy mode detected"
    set_legacy
    ;;
    *)
    fatal "invalid iptables mode"
    ;;
    esac
    start_proxy

    if [ ! -e /pause ]; then
    mkfifo /pause
    fi
    </pause

    / # ls /sbin/xtables-nft-multi
    /sbin/xtables-nft-multi
    / # ls /sbin/iptables
    /sbin/iptables
    / # ls /sbin/xtables-legacy-multi
    ls: /sbin/xtables-legacy-multi: No such file or directory
    我大概知道怎么改了,感谢你
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5254 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 08:09 PVG 16:09 LAX 00:09 JFK 03:09
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86