День добрый, есть тестовый кластер на bare metal(3 ноды, 3 мастера) - ноды находятся в сети 192.168.57.0/24.
[root@kub-master-1 practice]# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
kub-master-1 Ready master 4d17h v1.19.2 192.168.57.169 <none> CentOS Linux 8 4.18.0-240.10.1.el8_3.x86_64 docker://20.10.3
kub-master-2 Ready master 4d17h v1.19.2 192.168.57.173 <none> CentOS Linux 8 4.18.0-240.10.1.el8_3.x86_64 docker://20.10.3
kub-master-3 Ready master 4d17h v1.19.2 192.168.57.174 <none> CentOS Linux 8 4.18.0-240.10.1.el8_3.x86_64 docker://20.10.3
kub-worker-1 Ready node 4d17h v1.19.2 192.168.57.207 <none> CentOS Linux 8 4.18.0-240.10.1.el8_3.x86_64 docker://20.10.3
kub-worker-2 Ready node 4d17h v1.19.2 192.168.57.203 <none> CentOS Linux 8 4.18.0-240.10.1.el8_3.x86_64 docker://20.10.3
kub-worker-3 Ready node 4d17h v1.19.2 192.168.57.204 <none> CentOS Linux 8 4.18.0-240.10.1.el8_3.x86_64 docker://20.10.3
[root@kub-master-1 practice]# kubectl get pods -n ingress-nginx -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
ingress-nginx-admission-create-wjkj9 0/1 Completed 0 151m 10.233.69.25 kub-worker-2 <none> <none>
ingress-nginx-admission-patch-t9mm8 0/1 Completed 0 151m 10.233.69.26 kub-worker-2 <none> <none>
ingress-nginx-controller-67897c9494-pzd9w 1/1 Running 0 151m 10.233.69.27 kub-worker-2 <none> <none>
Для теста ingres controller`a задеплоил приложение (слушает на порут 8080), service (пробовал и clusterIp и nodePort) вот пример с nodePort:
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
ports:
- port: 80
targetPort: 8080
selector:
app: test
type: NodePort
Ingress manifest:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: minimal-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: "tomcat.tom"
http:
paths:
- pathType: Prefix
path: "/tomcat"
backend:
service:
name: tomcat-service
port:
number: 80
- pathType: Prefix
path: "/nodejs"
backend:
service:
name: my-service
port:
number: 80
[root@kub-master-1 practice]# kubectl get -n ingress-nginx svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller NodePort 10.233.60.106 <none> 80:30192/TCP,443:30222/TCP 160m
ingress-nginx-controller-admission ClusterIP 10.233.33.131 <none> 443/TCP 160m
my-service NodePort 10.233.22.254 <none> 80:32741/TCP 113m
tomcat-service ClusterIP 10.233.11.6 <none> 80/TCP 37m
[root@kub-master-1 practice]# kubectl get -n ingress-nginx ingress
Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
minimal-ingress <none> tomcat.tom 192.168.57.203 80 24m
В логах пода ingress controller`a ошибок нет, services получили все нужные endpoints подов, ingress так же увидел прописаные services. Вопрос в следующем как мне получить доступ к моему приложению из моей сети где крутятся ноды - 192.168.57.0/24? ingress controller встал на воркер ноду с ip 192.168.57.203, ingress тоже получил этот address. На машинке с которой проверяю доступ в etc/hosts прописал 192.168.57.203 tomcat.tom. Пробую по 192.168.57.203:80/«мой путь в ingress» - не заходит. Пробовал по ip каждой ноды - тоже без результатов. Должен ли я вообще попасть в приложение таким способом, потому что не совсем догоняю как вообще должен работать nginx-ingress-controller и есть сомнения что где-то что-то недонастроил или что-то встало криво в кластере ? ПОка что могу получить доступ только через nodeport(192.168.57.203:nodeport) в service или через metalLB.