Kubernetes Traefik,不断获取服务不可用
Kubernetes Traefik, keep getting service unavailable
任何人都知道为什么我总是无法获得以下 YAML 代码的服务。入口指向指向容器的服务,它应该可以正常工作。对于此示例,我只是使用 NGINX 容器进行测试。
apiVersion: v1
kind: Service
metadata:
name: frontend
spec:
selector:
k8s-app: traefik-ingress-lb
app: nginx
ports:
- name: web
port: 80
targetPort: 80
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: frontend
spec:
rules:
- host: test.example.services
http:
paths:
- path: /
backend:
serviceName: frontend
servicePort: web
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.15.4
ports:
- containerPort: 80
---
该服务有一个应用程序没有的选择器。删除标签 k8s-app: traefik-ingress-lb
后一切正常。
感谢 Traefik Slack 频道的 Daniel Tomcej 在这里帮助我。
如果您使用 traefik 作为入口控制器,那么文档可能会产生误导。下面你可以看到一个来自 traefik 网站的入口控制器的例子。相同的配置为我的应用程序返回 503 错误。结果是,我必须将 servicePort: http
更改为 servicePort: 80
,此更改解决了问题!
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: cheese
annotations:
kubernetes.io/ingress.class: traefik
spec:
rules:
- host: stilton.minikube
http:
paths:
- path: /
backend:
serviceName: stilton
servicePort: http
...
任何人都知道为什么我总是无法获得以下 YAML 代码的服务。入口指向指向容器的服务,它应该可以正常工作。对于此示例,我只是使用 NGINX 容器进行测试。
apiVersion: v1
kind: Service
metadata:
name: frontend
spec:
selector:
k8s-app: traefik-ingress-lb
app: nginx
ports:
- name: web
port: 80
targetPort: 80
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: frontend
spec:
rules:
- host: test.example.services
http:
paths:
- path: /
backend:
serviceName: frontend
servicePort: web
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.15.4
ports:
- containerPort: 80
---
该服务有一个应用程序没有的选择器。删除标签 k8s-app: traefik-ingress-lb
后一切正常。
感谢 Traefik Slack 频道的 Daniel Tomcej 在这里帮助我。
如果您使用 traefik 作为入口控制器,那么文档可能会产生误导。下面你可以看到一个来自 traefik 网站的入口控制器的例子。相同的配置为我的应用程序返回 503 错误。结果是,我必须将 servicePort: http
更改为 servicePort: 80
,此更改解决了问题!
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: cheese
annotations:
kubernetes.io/ingress.class: traefik
spec:
rules:
- host: stilton.minikube
http:
paths:
- path: /
backend:
serviceName: stilton
servicePort: http
...