172 похожих чатов

Привет. Имею кластер kubernetes из 2 node с 2 pod,

содержащими в себе nginx, который отвечает именем hostname по запросу к нему.
root@kubemaster:/home/vagrant# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
kubemaster Ready master 121m v1.19.1 100.110.0.228 <none> Ubuntu 16.04.7 LTS 4.4.0-189-generic docker://18.9.7
kubenode1 Ready <none> 119m v1.19.1 100.110.0.229 <none> Ubuntu 16.04.7 LTS 4.4.0-189-generic docker://18.9.7
kubenode2 Ready <none> 116m v1.19.1 100.110.0.230 <none> Ubuntu 16.04.7 LTS 4.4.0-189-generic docker://18.9.7
root@kubemaster:/home/vagrant# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-deployment-dbd6f9659-2c9jx 1/1 Running 0 111m 10.244.1.2 kubenode1 <none> <none>
my-deployment-dbd6f9659-675mt 1/1 Running 0 111m 10.244.2.2 kubenode2 <none> <none>
Каждый из 2 pod успешно работает. При пробрасывании порта через port-forward на каждый отдельный pod, тот успешно отвечает:
root@kubemaster:/home/vagrant# kubectl port-forward my-deployment-dbd6f9659-2c9jx 8000:80
Forwarding from 127.0.0.1:8000 -> 80
Forwarding from [::1]:8000 -> 80
Handling connection for 8000
root@kubemaster:/home/vagrant# curl localhost:8000
my-deployment-dbd6f9659-2c9jx
Теперь к проблеме. Имею Service:
---
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 80
root@kubemaster:/home/vagrant# kubectget services -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 124m <none>
my-service ClusterIP 10.111.253.173 <none> 80/TCP 114m app=my-app
Когда я запускаю тестовый контейнер, перехожу внутрь него, чтобы проверить работу my-service, то получаю следующее:
root@kubemaster:/home/vagrant# kubectl run -t -i --rm --image amouat/network-utils test bash
If you don't see a command prompt, try pressing enter.
root@test:/#
root@test:/# curl my-servise
curl: (6) Could not resolve host: my-servise
Однако, если я обращаюсь к сервису не по имени, а по прямому IP, то 50 на 50 получаю либо ответ пода, либо ошибку:
root@test:/# curl 10.111.253.173
curl: (7) Failed to connect to 10.111.253.173 port 80: No route to host
root@test:/# curl 10.111.253.173
curl: (7) Failed to connect to 10.111.253.173 port 80: No route to host
root@test:/# curl 10.111.253.173
my-deployment-dbd6f9659-2c9jx
root@test:/# curl 10.111.253.173
curl: (7) Failed to connect to 10.111.253.173 port 80: No route to host
root@test:/# curl 10.111.253.173
curl: (7) Failed to connect to 10.111.253.173 port 80: No route to host
root@test:/# curl 10.111.253.173
my-deployment-dbd6f9659-2c9jx
root@test:/# curl 10.111.253.173
curl: (7) Failed to connect to 10.111.253.173 port 80: No route to host
root@test:/# curl 10.111.253.173
curl: (7) Failed to connect to 10.111.253.173 port 80: No route to host
root@test:/# curl 10.111.253.173
my-deployment-dbd6f9659-2c9jx
root@test:/# curl 10.111.253.173
my-deployment-dbd6f9659-2c9jx
Почему так? Я ожидаю, что, во-первых, сервис будет резолвиться по имени my-service, но он не резолвится. Во-вторых, я ожидаю, что при обращении к сервису будут корректно отвечать оба pod, но отвечает только один. Как исправить это?

2 ответов

8 просмотров

CNI ставил в тот кластер, что ты имеешь?

вероятно у тебя сеть pod to pod не работает между нодами. Это объясняет чередование валидных запросов, скорее всего когда они идут на pod на той же ноде, и no route to host, когда идут на pod на другой ноде

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта