Я использую Docker для рабочего стола (Docker для Mac) и установил входной контроллер
$kubectl get pods -n ingress-nginx
NAME READY STATUS RESTARTS AGE
nginx-ingress-controller-78474696b4-8vmbr 1/1 Running 0 20d
, но не в состоянии обрабатывать трафик для примера службы.
Вот пример сервиса nginx:
$kubectl run --image nginx webserver
$kubectl expose deploy webserver --port 80 --type NodePort
, который работает как:
$kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 40d
webserver NodePort 10.109.250.166 <none> 80:31805/TCP 9m
и sample-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: webserver-sample
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /foo
backend:
serviceName: webserver
servicePort: 80
и применять:
kubectl apply -f sample-ingress.yaml
Вход работает как:
$kubectl get ing
NAME HOSTS ADDRESS PORTS AGE
webserver-sample * localhost 80 7m
служба работает должным образом (возвращает 200
):
curl http://localhost:31805/
но проблема в том, что я не могу нажать http://localhost/foo
$curl http://localhost/foo
curl: (7) Failed to connect to localhost port 80: Connection refused
Любое предложение о том, как отладить проблему, будет действительно оценено.
[Обновить] вот список всех услуг, запрошенных @ VKR
$kubectl get svc --all-namespaces -o wide
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 40d <none>
default webserver NodePort 10.107.135.81 <none> 80:32361/TCP 9h run=webserver
docker compose-api ClusterIP 10.108.251.142 <none> 443/TCP 40d com.docker.deploy-namespace=docker,com.docker.fry=compose.api,com.docker.image-tag=v0.4.12
ingress-nginx ingress-nginx NodePort 10.106.47.48 <none> 80:31448/TCP,443:31512/TCP 20d app.kubernetes.io/name=ingress-nginx,app.kubernetes.io/part-of=ingress-nginx
kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 40d k8s-app=kube-dns
а также вот описание входа:
$kubectl describe ing webserver-sample
Name: webserver-sample
Namespace: default
Address: localhost
Default backend: default-http-backend:80 (<none>)
Rules:
Host Path Backends
---- ---- --------
*
/foo webserver:80 (10.1.0.151:80)
Annotations:
kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"annotations":{"nginx.ingress.kubernetes.io/rewrite-target":"/"},"name":"webserver-sample","namespace":"default"},"spec":{"rules":[{"http":{"paths":[{"backend":{"serviceName":"webserver","servicePort":80},"path":"/foo"}]}}]}}
nginx.ingress.kubernetes.io/rewrite-target: /
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal CREATE 9m42s nginx-ingress-controller Ingress default/webserver-sample
Normal UPDATE 9m30s nginx-ingress-controller Ingress default/webserver-sample