Проблемы взаимодействия pod-to-pod в кластере k8s, созданном с помощью kubeadm

Я создал 2-узловой кластер k8s с kubeadm (1 мастер + 2 рабочих) на GCP, и все вроде бы нормально, кроме связи между модулями.

Итак, во-первых, в кластере нет видимых проблем. Все стручки работают. Никаких ошибок, никаких откатов, никаких ожидающих стручков.

Я использовал следующий сценарий для тестов:

NAMESPACE     NAME                                  READY   STATUS    RESTARTS   AGE   IP            NODE           
default       bb-9bd94cf6f-b5cj5                    1/1     Running   1          19h   192.168.2.3   worker-node-1  
default       curler-7668c66bf5-6c6v8               1/1     Running   1          20h   192.168.2.2   worker-node-1  
default       curler-master-5b86858f9f-c6zhq        1/1     Running   0          18h   192.168.0.6   master-node    
default       nginx-5c7588df-x42vt                  1/1     Running   0          19h   192.168.2.4   worker-node-1  
default       nginy-6d77947646-4r4rl                1/1     Running   0          20h   192.168.1.4   worker-node-2  
kube-system   calico-node-9v98k                     2/2     Running   0          97m   10.240.0.7    master-node    
kube-system   calico-node-h2px8                     2/2     Running   0          97m   10.240.0.9    worker-node-2  
kube-system   calico-node-qjn5t                     2/2     Running   0          97m   10.240.0.8    worker-node-1  
kube-system   coredns-86c58d9df4-gckhl              1/1     Running   0          97m   192.168.1.9   worker-node-2  
kube-system   coredns-86c58d9df4-wvt2n              1/1     Running   0          97m   192.168.2.6   worker-node-1  
kube-system   etcd-master-node                      1/1     Running   0          97m   10.240.0.7    master-node    
kube-system   kube-apiserver-master-node            1/1     Running   0          97m   10.240.0.7    master-node    
kube-system   kube-controller-manager-master-node   1/1     Running   0          97m   10.240.0.7    master-node    
kube-system   kube-proxy-2g85h                      1/1     Running   0          97m   10.240.0.8    worker-node-1  
kube-system   kube-proxy-77pq4                      1/1     Running   0          97m   10.240.0.9    worker-node-2  
kube-system   kube-proxy-bbd2d                      1/1     Running   0          97m   10.240.0.7    master-node    
kube-system   kube-scheduler-master-node            1/1     Running   0          97m   10.240.0.7    master-node  

А это услуги:

$ kubectl get svc --all-namespaces
NAMESPACE     NAME           TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
default       kubernetes     ClusterIP   10.96.0.1        <none>        443/TCP         21h
default       nginx          ClusterIP   10.109.136.120   <none>        80/TCP          20h
default       nginy          NodePort    10.101.111.222   <none>        80:30066/TCP    20h
kube-system   calico-typha   ClusterIP   10.111.238.0     <none>        5473/TCP        21h
kube-system   kube-dns       ClusterIP   10.96.0.10       <none>        53/UDP,53/TCP   21h

Службы nginx и nginy указывают на модули nginx-xxx и nginy-xxx и работают nginx, curlers - это модули с curl и ping. Один из них работает на главном узле, а другой - на рабочем узле-1. Если я обращаюсь к модулю curler, работающему на рабочем узле-1 (curler-7668c66bf5-6c6v8) и curl модулю nginx на том же узле, он работает нормально.

$ kubectl exec -it curler-7668c66bf5-6c6v8 sh
/ # curl 192.168.2.4 -I
HTTP/1.1 200 OK
Server: nginx/1.15.12
Date: Tue, 07 May 2019 10:59:06 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 16 Apr 2019 13:08:19 GMT
Connection: keep-alive
ETag: "5cb5d3c3-264"
Accept-Ranges: bytes

Если я попробую то же самое через имя службы, она работает наполовину, так как coredns работает; один на рабочем-узле-1, а другой на рабочем-узле-2. Я считаю, что если запрос поступает в модуль coredns, работающий на рабочем узле-1, он работает, но когда он поступает на рабочий узел-2, это не так.

/ # curl nginx -I
curl: (6) Could not resolve host: nginx

/ # curl nginx -I
HTTP/1.1 200 OK
Server: nginx/1.15.12
Date: Tue, 07 May 2019 11:06:13 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 16 Apr 2019 13:08:19 GMT
Connection: keep-alive
ETag: "5cb5d3c3-264"
Accept-Ranges: bytes

Итак, определенно мое общение между капсулами не работает. Я проверил журналы стручков calico daemonset, но ничего подозрительного. Хотя у меня есть несколько подозрительных журналов в kube-proxy модулях:

$ kubectl logs kube-proxy-77pq4 -n kube-system
W0507 09:16:51.305357       1 server_others.go:295] Flag proxy-mode="" unknown, assuming iptables proxy
I0507 09:16:51.315528       1 server_others.go:148] Using iptables Proxier.
I0507 09:16:51.315775       1 server_others.go:178] Tearing down inactive rules.
E0507 09:16:51.356243       1 proxier.go:563] Error removing iptables rules in ipvs proxier: error deleting chain "KUBE-MARK-MASQ": exit status 1: iptables: Too many links.
I0507 09:16:51.648112       1 server.go:464] Version: v1.13.1
I0507 09:16:51.658690       1 conntrack.go:52] Setting nf_conntrack_max to 131072
I0507 09:16:51.659034       1 config.go:102] Starting endpoints config controller
I0507 09:16:51.659052       1 controller_utils.go:1027] Waiting for caches to sync for endpoints config controller
I0507 09:16:51.659076       1 config.go:202] Starting service config controller
I0507 09:16:51.659083       1 controller_utils.go:1027] Waiting for caches to sync for service config controller
I0507 09:16:51.759278       1 controller_utils.go:1034] Caches are synced for endpoints config controller
I0507 09:16:51.759291       1 controller_utils.go:1034] Caches are synced for service config controller

Может ли кто-нибудь сказать мне, может ли проблема быть связана с kube-proxy неправильной конфигурацией iptables? Или указать на то, что мне не хватает?


person suren    schedule 07.05.2019    source источник
comment
Не могли бы вы опубликовать команду kubeadm, которую вы использовали для создания кластера. команды init и join, пожалуйста? Также выложите пожалуйста версию кубеадм и кубелет.   -  person Marek Counts    schedule 22.05.2019
comment
Проблема заключалась в том, что мне пришлось открыть IP in IP связь в правилах брандмауэра в GCP. Теперь это работает. Спасибо хоть.   -  person suren    schedule 22.05.2019


Ответы (1)


Проблема была решена с помощью исходного плаката со следующим решением:

Проблема заключалась в том, что мне пришлось открыть IP в IP-коммуникации в правилах моего брандмауэра в GCP. Теперь это работает

person Community    schedule 25.06.2019