Я пытаюсь изучить kubernetes и ingress. Я что-то неправильно понял?
Я использую proxmox с 3vm
kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8sm Ready control-plane,master 127d v1.22.4
k8sn1 Ready <none> 127d v1.22.4
k8sn2 Ready <none>
127d v1.22.4
У меня есть 2 модуля nginx в качестве развертывания.
kubectl get pod
NAME READY STATUS RESTARTS AGE
curl-test 1/1 Running 0 5d11h
frontend-86968456b9-jnbqf 1/1 Running 0 5d11h
frontend-86968456b9-tj2w9 1/1 Running 0 5d11h
1 сервис используется с ярлыком
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 127d
my-service-ingress ClusterIP 10.104.228.72 <none> 80/TCP 25h
SVC .yaml
---
apiVersion: v1
kind: Service
metadata:
name: my-service-ingress
spec:
selector:
app: frontend
ports:
- port: 80
targetPort: 80
Я подключен к главному узлу по ssh
curl http://10.104.228.72
THIS IS CONTAINER : 1
Это мой входной файл, скопированный из официальной документации kubernetes.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: test-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /frontend
pathType: Prefix
backend:
service:
name: my-service-ingress
port:
number: 80
Входной ресурс:
kubectl get ingress -o wide
NAME CLASS HOSTS ADDRESS PORTS AGE
test-ingress <none> * 80 39m
информация о входном контроллере
kubectl get all -n ingress-nginx
NAME READY STATUS RESTARTS AGE
pod/ingress-nginx-admission-create--1-tnglj 0/1 Completed 0 24h
pod/ingress-nginx-admission-patch--1-97n79 0/1 Completed 1 24h
pod/ingress-nginx-controller-547f579dc-ssf5r 1/1 Running 0 24h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/ingress-nginx-controller NodePort 10.100.181.85 <none> 80:32412/TCP,443:32016/TCP 24h
service/ingress-nginx-controller-admission ClusterIP 10.98.29.50 <none> 443/TCP 24h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/ingress-nginx-controller 1/1 1 1 24h
NAME DESIRED CURRENT READY AGE
replicaset.apps/ingress-nginx-controller-547f579dc 1 1 1 24h
NAME COMPLETIONS DURATION AGE
job.batch/ingress-nginx-admission-create 1/1 4s 24h
job.batch/ingress-nginx-admission-patch 1/1 5s 24h
curl test с IP-узлами не работает:
kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
k8sm Ready control-plane,master 127d v1.22.4 192.168.1.38 <none> Debian GNU/Linux 10 (buster) 4.19.0-18-amd64 docker://20.10.11
k8sn1 Ready <none> 127d v1.22.4 192.168.1.39 <none> Debian GNU/Linux 10 (buster) 4.19.0-18-amd64 docker://20.10.11
k8sn2 Ready <none> 127d v1.22.4 192.168.1.40 <none> Debian GNU/Linux 10 (buster) 4.19.0-18-amd64 docker://20.10.11
rbo@K8sM:~/elearning/kubernestes_admin_course/Zeal_Vora/Ingress$ curl http://192.168.1.39
curl: (7) Failed to connect to 192.168.1.39 port 80: Connexion refusée
В Ingress вы использовали путь /frontend
, но не нажимаете его, пока
Кроме того, используйте Node Port
с Node IP
, если вы используете внутренний IP-адрес службы.
Что-то вроде :
curl http://192.168.1.39:32412/frontend
я не уверен, какова ваша фактическая настройка, если вы используете публично вне сети, вам нужно использовать IP-адрес узла, IP-адрес кластера работает только внутри кластера
Понял, дорогая, теперь у меня есть веб-страница с URL-адресом 192.168.1.39:32412/интерфейс с ошибкой 404, не найденная страница
Работал нормально, я добавил kubernetes.io/ingress.class: nginx в аннотацию. Не могу полностью понять, почему я должен добавить порт обслуживания.
Итак, теперь вы нажимаете на nginx, так как получаете ошибку 404, которая будет на стороне nginx.
clusterip используется для внутренней связи, если вы хотите получить доступ из кластера с портом узла, вы должны использовать только IP-адрес узла.
IP-адрес узла и порт узла вместе предоставляют общедоступную службу, в то время как clusterip разрешается только внутренне из другого модуля или службы.
Привет, дорогой, спасибо за ответ. Вы уверены насчет нодпорта? в документации по входу сказано, что я должен использовать ClusterIp. Не могли бы вы привести пример yaml? Я уже пробовал с 192.168.1.39/интерфейс и тот же результат