У меня есть pod с IP-адресом кластера 10.233.70.35 в кластере Kubernetes 1.19 без операционной системы с Calico 3.16.9 в качестве CNI. Давайте назовем это Блок А
. В большинстве узлов (отличных от узла Блок А
), стручок (Блок Б
) в одном и том же пространстве имен Kubernetes может достигать Блок А
как показано в pcap на узле, где Блок А
ниже:
# tcpdump -vv -i calib33bd7211a6|grep 10.233.109.62
tcpdump: прослушивание на calib33bd7211a6, тип ссылки EN10MB (Ethernet), размер захвата 262144 байт
10.233.109.62.60372 > 10.233.70.35.tproxy: флаги [S], cksum 0x16af (правильный), seq 2138999970, win 64240, параметры [mss 1460,sackOK,TS val 2089146656 ecr 0,nop,wscale 7], длина 0
10.233.70.35.tproxy> 10.233.109.62.60372: Flags [S.], CKSUM 0xc961 (неверный -> 0x579e), SEQ 3985188010, ACK 2138999971, Win 65160, Options 2060, SAKK, VAL 4061961156615. ,масштаб 7], длина 0
10.233.109.62.60372 > 10.233.70.35.tproxy: флаги [.], cksum 0x82fd (правильно), seq 1, ack 1, win 502, options [nop,nop,TS val 2089146656 ecr 4061902615], длина 0
# tcpdump -vv -i tunl0|grep 10.233.109.62
tcpdump: прослушивание на tunl0, тип ссылки RAW (Raw IP), размер захвата 262144 байт
10.233.109.62.34294 > 10.233.70.35.tproxy: флаги [S], cksum 0xbd5b (правильный), seq 1964000002, win 64240, параметры [mss 1460,sackOK,TS val 1018637359 ecr 0,nop,wscale 7], длина 0
10.233.70.35.tproxy> 10.233.109.62.34294: флаги [S.], CKSUM 0xc961 (неверный -> 0x7b0b), сентябрь 1667300057, ACK 1964000003, Win 65160, опции [MSS 1460, Sackok, TS Val 406198287870, Options [MSS 1460, Sackok, TS Val 4061982878787870, Options. ,масштаб 7], длина 0
10.233.109.62.34294 > 10.233.70.35.tproxy: флаги [.], cksum 0xa66a (правильно), seq 1, ack 1, win 502, options [nop,nop,TS val 1018637359 ecr 4061982287], длина 0
10.233.109.62.34294 > 10.233.70.35.tproxy: флаги [F.], cksum 0x592f (правильно), seq 1, ack 1, win 502, options [nop,nop,TS val 1018657129 ecr 4061982287], длина 0
10.233.70.35.tproxy > 10.233.109.62.34294: флаги [F.], cksum 0xc959 (неверно -> 0x0bec), seq 1, ack 2, win 510, options [nop,nop,TS val 4062002057 ecr 1018657129], длина 0
10.233.109.62.34294 > 10.233.70.35.tproxy: флаги [.], cksum 0x0bf3 (правильно), seq 2, ack 2, win 502, options [nop,nop,TS val 1018657130 ecr 4062002057], длина 0
Однако в некоторых машинах (что опять же отличается от узла Блок А
), стручок (Блок С
) в том же пространстве имен k8s не может достичь Блок А
хотя он может добраться до туннеля Блок А
как показано ниже:
# tcpdump -vv -i calib33bd7211a6|grep 10.233.82.51
tcpdump: прослушивание на calib33bd7211a6, тип ссылки EN10MB (Ethernet), размер захвата 262144 байт
# tcpdump -vv -i tunl0|grep 10.233.82.51
tcpdump: прослушивание на tunl0, тип ссылки RAW (Raw IP), размер захвата 262144 байт
10.233.82.51.35038 > 10.233.70.35.tproxy: флаги [S], cksum 0xc924 (правильный), seq 2532090843, win 64240, параметры [mss 1460,sackOK,TS val 3899329055 ecr 0,nop,wscale 7], длина 0
10.233.82.51.35038 > 10.233.70.35.tproxy: флаги [S], cksum 0xc529 (правильный), seq 2532090843, win 64240, параметры [mss 1460,sackOK,TS val 3899330074 ecr 0,nop,wscale 7], длина 0
10.233.82.51.35038 > 10.233.70.35.tproxy: флаги [S], cksum 0xbd49 (правильный), seq 2532090843, win 64240, параметры [mss 1460,sackOK,TS val 3899332090 ecr 0,nop,wscale 7], длина 0
10.233.82.51.35038 > 10.233.70.35.tproxy: флаги [S], cksum 0xacc9 (правильный), seq 2532090843, win 64240, параметры [mss 1460,sackOK,TS val 3899336314 ecr 0,nop,wscale 7], длина 0
10.233.82.51.35038 > 10.233.70.35.tproxy: флаги [S], cksum 0x8cc9 (правильный), seq 2532090843, win 64240, параметры [mss 1460,sackOK,TS val 3899344506 ecr 0,nop,wscale 7], длина 0
10.233.82.51.35038 > 10.233.70.35.tproxy: флаги [S], cksum 0x4dc9 (правильный), seq 2532090843, win 64240, параметры [mss 1460,sackOK,TS val 3899360634 ecr 0,nop,wscale 7], длина 0
10.233.82.51.35038 > 10.233.70.35.tproxy: флаги [S], cksum 0xc9c8 (правильный), seq 2532090843, win 64240, параметры [mss 1460,sackOK,TS val 3899394426 ecr 0,nop,wscale 7], длина 0
Что я мог сделать, чтобы исправить это, чтобы Блок А
доступен любому модулю в любом из узлов?
Все узлы находятся в одной подсети, но распределены по двум коммутаторам L2. Эта проблема возникает для некоторых узлов в одном из коммутаторов, однако, поскольку Блок А
машина была достигнута туннелем, это наблюдение не имеет значения.