Я настроил свой кластер Kubernetes, и как часть этой настройки я установил правило входа для пересылки трафика на веб-сервер.
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: alpha-ingress
annotations:
kubernetes.io/ingress.class: nginx
certmanager.k8s.io/cluster-issuer: letsencrypt-prod
spec:
tls:
- hosts:
- alpha.example.com
secretName: letsencrypt-prod
rules:
- host: alpha.example.com
http:
paths:
- backend:
serviceName: web
servicePort: 80
В конечном итоге время ожидания браузера составляет 504ошибка и в журнале входа я вижу
2019/01/27 23:45:38 [ошибка] 41 # 41: * 4943 тайм-аут восходящего потока (110: тайм-аут соединения) при чтении заголовка ответаиз апстрима, клиент: 10.131.24.163, сервер: alpha.example.com, запрос: «GET / HTTP / 2.0», апстрим: «http://10.244.93.12:80/", хост:« alpha.example.com »
У меня нет никаких служб на этом IP-адресе ...
╰─$ kgs --all-namespaces 130 ↵
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default database ClusterIP 10.245.181.187 <none> 5432/TCP 4d8h
default kubernetes ClusterIP 10.245.0.1 <none> 443/TCP 9d
default user-api ClusterIP 10.245.41.8 <none> 9000/TCP 4d8h
default web ClusterIP 10.245.145.213 <none> 80/TCP,443/TCP 34h
ingress-nginx ingress-nginx LoadBalancer 10.245.25.107 <external-ip> 80:31680/TCP,443:32324/TCP 50m
kube-system grafana ClusterIP 10.245.81.91 <none> 80/TCP 6d1h
kube-system kube-dns ClusterIP 10.245.0.10 <none> 53/UDP,53/TCP,9153/TCP 9d
kube-system prometheus-alertmanager ClusterIP 10.245.228.165 <none> 80/TCP 6d2h
kube-system prometheus-kube-state-metrics ClusterIP None <none> 80/TCP 6d2h
kube-system prometheus-node-exporter ClusterIP None <none> 9100/TCP 6d2h
kube-system prometheus-pushgateway ClusterIP 10.245.147.195 <none> 9091/TCP 6d2h
kube-system prometheus-server ClusterIP 10.245.202.186 <none> 80/TCP 6d2h
kube-system tiller-deploy ClusterIP 10.245.11.85 <none> 44134/TCP 9d
Если я просматриваю файл resolv.conf на входном модуле, он возвращает то, что должен ...
╰─$ keti -n ingress-nginx nginx-ingress-controller-c595c6896-klw25 -- cat /etc/resolv.conf 130 ↵
nameserver 10.245.0.10
search ingress-nginx.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
dig / nslookup / host не доступны в этом контейнере, но если я создаю простой экземпляр busybox, он получает правильный IP с той же конфигурацией:
╰─$ keti busybox -- nslookup web
Server: 10.245.0.10
Address 1: 10.245.0.10 kube-dns.kube-system.svc.cluster.local
Name: web
Address 1: 10.245.145.213 web.default.svc.cluster.local
Может кто-нибудь датьУ меня есть какие-либо идеи, что попробовать дальше?
Обновление # 1
Вот конфиг для web
, как и было запрошено вКомментарии.Я также исследую, почему я не могу напрямую wget
что-либо из web
, используя busybox внутри кластера.
apiVersion: v1
kind: Service
metadata:
labels:
io.kompose.service: web
app: web
name: web
spec:
ports:
- name: "80"
port: 80
targetPort: 80
- name: "443"
port: 443
targetPort: 443
selector:
io.kompose.service: web
status:
loadBalancer: {}
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: web
name: web
spec:
replicas: 1
strategy:
type: RollingUpdate
selector:
matchLabels:
app: web
template:
metadata:
labels:
io.kompose.service: web
app: web
spec:
containers:
- image: <private docker repo>
imagePullPolicy: IfNotPresent
name: web
resources: {}
imagePullSecrets:
- name: gcr
status: {}
Обновление 2
Asсогласно приведенному ниже комментарию Михаила, IP-адрес, разрешенный для web
, является одной из конечных точек:
╰─$ k get endpoints web 130 ↵
NAME ENDPOINTS AGE
web 10.244.93.12:443,10.244.93.12:80 2d