Рейтинг:0

Не удается получить доступ к поду из пода на некоторых машинах, но достигнут туннель в узле

флаг ma

У меня есть 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. Эта проблема возникает для некоторых узлов в одном из коммутаторов, однако, поскольку Блок Амашина была достигнута туннелем, это наблюдение не имеет значения.

Wytrzymały Wiktor avatar
флаг it
Привет @ChristianAlis. Не могли бы вы предоставить дополнительную информацию о настройке Calico? Какой режим сети вы настроили? Способ установки и оператор? В чем уникальность (разница) в настройке узлов, поскольку связь с рабочей нагрузкой не работает?
флаг ma
@WytrzymaÅyWiktor Я использую исключительно kubespray и его настройки по умолчанию. На данный момент все на kubespray 2.15.1. Узлы в первом коммутаторе, все они не имеют этой проблемы, были настроены еще в 2018 году и уже претерпели серьезные изменения в kubespray, например, переход на kubeadm и бязь из фланели. Узлы в другом коммутаторе, у более чем половины из которых есть эта проблема, были настроены в ноябре 2020 года. Я использую ipip, и я не обнаружил уникальной разницы в настройке узла.
Mikołaj Głodziak avatar
флаг id
Ваша проблема все еще не решена? Как именно вы настроили свой кластер? Вы видели [эту страницу] (https://github.com/projectcalico/calico/issues/2426)?
флаг ma
Частично. Проблема в конкретной настройке, на которой я основывал этот вопрос, связана с автоматически созданным netpol, требующим для подключения определенного тега. Однако вопрос о том, что некоторые модули с некоторых узлов не могут подключиться, остается открытым. Я создал новый пост, чтобы лучше описать его: https://serverfault.com/questions/1078384/getaddrinfo-does-not-resolve-in-some-kubernetes-pod-on-some-hosts.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.