在我创建了一个traefik守护进程之后,我在端口80上创建了一个服务作为loadbalancer,这是Traefik代理端口,并且节点自动注册到它。如果我点击elb我得到代理404,这是好的,因为还没有注册服务
然后我为web-ui创建了一个nodeport服务。在pod中定位端口8080,在clusterip上定位80。我可以从集群内部卷曲traefik ui并重新运行traefik UI
然后我创建了一个入口,这样当我点击elb / ui时它会让我进入traefik的后端web-ui服务并且它失败了。我的入口中也有正确的注释但是elb没有将路径路由到后端运行正常的traefik ui
我在这里做错了什么?如果需要,我可以发布所有的yml文件
UPD
我的yaml文件:
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: traefik
labels:
app: traefik
spec:
template:
metadata:
labels:
app: traefik
spec:
containers:
- image: traefik
name: traefik
args:
- --api
- --kubernetes
- --logLevel=INFO
- --web
ports:
- containerPort: 8080
name: traefikweb
- containerPort: 80
name: traefikproxy
apiVersion: v1
kind: Service
metadata:
name: traefik-proxy
spec:
selector:
app: traefik
ports:
- port: 80
targetPort: traefikproxy
type: LoadBalancer
apiVersion: v1
kind: Service
metadata:
name: traefik-web-ui
spec:
selector:
app: traefik
ports:
- name: http
targetPort: 8080
nodePort: 30001
port: 80
type: NodePort
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
namespace: default
name: traefik-ing
annotations:
kubernetes.io/ingress.class: traefik
#traefik.ingress.kubernetes.io/rule-type: PathPrefixStrip:/ui
spec:
rules:
- http:
paths:
- path: /ui
backend:
serviceName: traefik-web-ui
servicePort: 80
答案 0 :(得分:0)
然后我创建了一个入口,这样当我点击elb / ui时,它会让我进入traefik的后端web-ui服务,但它失败了。"
它是如何失败的?您是否收到错误404,错误500或其他内容?
另外,对于traefik-web-ui
服务,您不需要设置type: NodePort
,它应该是type: ClusterIP
。
为Ingress配置后端时,唯一的要求是群集内部的可用性,因此ClusterIP
类型将足以满足要求。
您的服务应该是这样的:
apiVersion: v1
kind: Service
metadata:
name: traefik-web-ui
spec:
selector:
app: traefik
ports:
- name: http
targetPort: 8080
port: 80
选项PathPrefixStrip
非常有用,因为如果没有它,请求会转发到带有/ui
前缀的用户界面,您绝对不需要。
所有其他配置看起来都不错。
答案 1 :(得分:0)
如果您在Private_Subnets上,请使用
kind: Service
metadata:
name: traefik-proxy
> annotations:
> "service.beta.kubernetes.io/aws-load-balancer-internal": "0.0.0.0/0"
spec:
selector:
app: traefik
ports:
- port: 80
targetPort: traefikproxy
type: LoadBalancer```