Как я могу использовать фланель, не отключая firewalld (Kubernetes) - PullRequest
1 голос
/ 16 марта 2020

Я новичок во фланели и К8. Я играю с ними на своем кластере с 1 главным и 2 узлами (созданным из KVM).

Я инициализировал свой кластер с помощью расширения фланелевой сети. И тогда я обнаружил, что не могу добраться до Внутреннего. Оказалось, что что-то не так с моей сетью или процессом DNS.

После https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/ я добавляю 8285 и 8472 к firewalld

[root@k8smaster ~]# firewall-cmd --list-port
6443/tcp 80/tcp 8285/udp 8472/udp 8472/tcp 8285/tcp

И я получил

[root@k8smaster ~]# kubectl exec -ti dnsutils -- nslookup kubernetes.default
;; connection timed out; no servers could be reached

command terminated with exit code 1

Однако, если я остановлю firewalld, все будет хорошо.

[root@k8smaster ~]# kubectl exec -ti dnsutils -- nslookup kubernetes.default
Server:     10.96.0.10
Address:    10.96.0.10#53

Name:   kubernetes.default.svc.cluster.local
Address: 10.96.0.1

Так что мой вопрос, есть ли порты, которые я должен добавить в firewalld? Дайте мне знать, если есть информация. Я должен добавить здесь. Спасибо.

Ответы [ 2 ]

1 голос
/ 18 марта 2020

Правила, которые вы применяете, относятся только к Фланельной связи, вам нужно разрешить всем портам Kubernetes, чтобы она работала.

В резюме вам необходимо применить правила для этих портов:

Control-plane node(s)
Protocol        Direction       Port Range      Purpose Used By
TCP     Inbound 6443*   Kubernetes API server   All
TCP     Inbound 2379-2380       etcd server client API  kube-apiserver, etcd
TCP     Inbound 10250   Kubelet API     Self, Control plane
TCP     Inbound 10251   kube-scheduler  Self
TCP     Inbound 10252   kube-controller-manager Self

Worker node(s)
Protocol        Direction       Port Range      Purpose Used By
TCP     Inbound 10250   Kubelet API     Self, Control plane
TCP     Inbound 30000-32767     NodePort Services†      All
† Default port range for NodePort Services.
~                                          

Здесь вы можете видеть все необходимые порты для узлов Control-plane и Worker.

И затем, после применения этих правил, вам нужно применить еще два других правила, чтобы разрешить фланелевую сеть, как упоминалось здесь .

Убедитесь, что правила брандмауэра разрешают UDP-порты 8285 и 8472 traffi c для всех хостов , участвующих в оверлейной сети. Раздел «Брандмауэр» руководства по устранению неполадок Flannel объясняет это более подробно.

1 голос
/ 17 марта 2020

По предложению @KoopaKiller, я действительно пропустил настройку портов для самого k8s. Я вставляю свой скрипт ниже для вашей справки.

# Master
firewall-cmd --permanent --add-port=6443/tcp # Kubernetes API server
firewall-cmd --permanent --add-port=2379-2380/tcp # etcd server client API
firewall-cmd --permanent --add-port=10250/tcp # Kubelet API
firewall-cmd --permanent --add-port=10251/tcp # kube-scheduler
firewall-cmd --permanent --add-port=10252/tcp # kube-controller-manager
firewall-cmd --permanent --add-port=8285/udp # Flannel
firewall-cmd --permanent --add-port=8472/udp # Flannel
firewall-cmd --add-masquerade --permanent
# only if you want NodePorts exposed on control plane IP as well
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd --reload
systemctl restart firewalld


# Node
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=8285/udp # Flannel
firewall-cmd --permanent --add-port=8472/udp # Flannel
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd --add-masquerade --permanent
firewall-cmd --reload
systemctl restart firewalld
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...