Kubernetes Ingress不适用于traefisk
我在谷歌云平台上创建了一个kubernetes集群,之后,我在集群上安装了Helm/tiller,之后,我用Helm安装了traefik,就像官方文档所说的那样 现在我尝试为服务创建入口,但是如果我放置注释Kubernetes Ingress不适用于traefisk,kubernetes,kubernetes-ingress,Kubernetes,Kubernetes Ingress,我在谷歌云平台上创建了一个kubernetes集群,之后,我在集群上安装了Helm/tiller,之后,我用Helm安装了traefik,就像官方文档所说的那样 现在我尝试为服务创建入口,但是如果我放置注释kubernetes.io/ingres.class:traefik,则入口的负载平衡器不会创建。 但是如果没有注释,它可以使用默认入口。 (服务类型为nodeport) 编辑:我也在一个干净的google云kubernetes集群中尝试了这个例子:但它是一样的,当我选择kubernetes.
kubernetes.io/ingres.class:traefik
,则入口的负载平衡器不会创建。
但是如果没有注释,它可以使用默认入口。
(服务类型为nodeport)
编辑:我也在一个干净的google云kubernetes集群中尝试了这个例子:但它是一样的,当我选择kubernetes.io/ingres.class:traefik
时,不会为ingres创建负载平衡器
我的档案是:
anists svc.yaml:
---
apiVersion: v1
kind: Service
metadata:
name: bear
spec:
type: NodePort
ports:
- name: http
targetPort: 80
port: 80
selector:
app: animals
task: bear
---
apiVersion: v1
kind: Service
metadata:
name: moose
spec:
type: NodePort
ports:
- name: http
targetPort: 80
port: 80
selector:
app: animals
task: moose
---
apiVersion: v1
kind: Service
metadata:
name: hare
annotations:
traefik.backend.circuitbreaker: "NetworkErrorRatio() > 0.5"
spec:
type: NodePort
ports:
- name: http
targetPort: 80
port: 80
selector:
app: animals
task: hare
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: animals
annotations:
kubernetes.io/ingress.class: traefik
# kubernetes.io/ingress.global-static-ip-name: "my-reserved-global-ip"
# traefik.ingress.kubernetes.io/frontend-entry-points: http
# traefik.ingress.kubernetes.io/redirect-entry-point: http
# traefik.ingress.kubernetes.io/redirect-permanent: "true"
spec:
rules:
- host: hare.minikube
http:
paths:
- path: /
backend:
serviceName: hare
servicePort: http
- host: bear.minikube
http:
paths:
- path: /
backend:
serviceName: bear
servicePort: http
- host: moose.minikube
http:
paths:
- path: /
backend:
serviceName: moose
servicePort: http
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: bear
labels:
app: animals
animal: bear
spec:
replicas: 2
selector:
matchLabels:
app: animals
task: bear
template:
metadata:
labels:
app: animals
task: bear
version: v0.0.1
spec:
containers:
- name: bear
image: supergiantkir/animals:bear
ports:
- containerPort: 80
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: moose
labels:
app: animals
animal: moose
spec:
replicas: 2
selector:
matchLabels:
app: animals
task: moose
template:
metadata:
labels:
app: animals
task: moose
version: v0.0.1
spec:
containers:
- name: moose
image: supergiantkir/animals:moose
ports:
- containerPort: 80
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: hare
labels:
app: animals
animal: hare
spec:
replicas: 2
selector:
matchLabels:
app: animals
task: hare
template:
metadata:
labels:
app: animals
task: hare
version: v0.0.1
spec:
containers:
- name: hare
image: supergiantkir/animals:hare
ports:
- containerPort: 80
动物入口。yaml:
---
apiVersion: v1
kind: Service
metadata:
name: bear
spec:
type: NodePort
ports:
- name: http
targetPort: 80
port: 80
selector:
app: animals
task: bear
---
apiVersion: v1
kind: Service
metadata:
name: moose
spec:
type: NodePort
ports:
- name: http
targetPort: 80
port: 80
selector:
app: animals
task: moose
---
apiVersion: v1
kind: Service
metadata:
name: hare
annotations:
traefik.backend.circuitbreaker: "NetworkErrorRatio() > 0.5"
spec:
type: NodePort
ports:
- name: http
targetPort: 80
port: 80
selector:
app: animals
task: hare
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: animals
annotations:
kubernetes.io/ingress.class: traefik
# kubernetes.io/ingress.global-static-ip-name: "my-reserved-global-ip"
# traefik.ingress.kubernetes.io/frontend-entry-points: http
# traefik.ingress.kubernetes.io/redirect-entry-point: http
# traefik.ingress.kubernetes.io/redirect-permanent: "true"
spec:
rules:
- host: hare.minikube
http:
paths:
- path: /
backend:
serviceName: hare
servicePort: http
- host: bear.minikube
http:
paths:
- path: /
backend:
serviceName: bear
servicePort: http
- host: moose.minikube
http:
paths:
- path: /
backend:
serviceName: moose
servicePort: http
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: bear
labels:
app: animals
animal: bear
spec:
replicas: 2
selector:
matchLabels:
app: animals
task: bear
template:
metadata:
labels:
app: animals
task: bear
version: v0.0.1
spec:
containers:
- name: bear
image: supergiantkir/animals:bear
ports:
- containerPort: 80
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: moose
labels:
app: animals
animal: moose
spec:
replicas: 2
selector:
matchLabels:
app: animals
task: moose
template:
metadata:
labels:
app: animals
task: moose
version: v0.0.1
spec:
containers:
- name: moose
image: supergiantkir/animals:moose
ports:
- containerPort: 80
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: hare
labels:
app: animals
animal: hare
spec:
replicas: 2
selector:
matchLabels:
app: animals
task: hare
template:
metadata:
labels:
app: animals
task: hare
version: v0.0.1
spec:
containers:
- name: hare
image: supergiantkir/animals:hare
ports:
- containerPort: 80
动物部署。yaml:
---
apiVersion: v1
kind: Service
metadata:
name: bear
spec:
type: NodePort
ports:
- name: http
targetPort: 80
port: 80
selector:
app: animals
task: bear
---
apiVersion: v1
kind: Service
metadata:
name: moose
spec:
type: NodePort
ports:
- name: http
targetPort: 80
port: 80
selector:
app: animals
task: moose
---
apiVersion: v1
kind: Service
metadata:
name: hare
annotations:
traefik.backend.circuitbreaker: "NetworkErrorRatio() > 0.5"
spec:
type: NodePort
ports:
- name: http
targetPort: 80
port: 80
selector:
app: animals
task: hare
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: animals
annotations:
kubernetes.io/ingress.class: traefik
# kubernetes.io/ingress.global-static-ip-name: "my-reserved-global-ip"
# traefik.ingress.kubernetes.io/frontend-entry-points: http
# traefik.ingress.kubernetes.io/redirect-entry-point: http
# traefik.ingress.kubernetes.io/redirect-permanent: "true"
spec:
rules:
- host: hare.minikube
http:
paths:
- path: /
backend:
serviceName: hare
servicePort: http
- host: bear.minikube
http:
paths:
- path: /
backend:
serviceName: bear
servicePort: http
- host: moose.minikube
http:
paths:
- path: /
backend:
serviceName: moose
servicePort: http
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: bear
labels:
app: animals
animal: bear
spec:
replicas: 2
selector:
matchLabels:
app: animals
task: bear
template:
metadata:
labels:
app: animals
task: bear
version: v0.0.1
spec:
containers:
- name: bear
image: supergiantkir/animals:bear
ports:
- containerPort: 80
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: moose
labels:
app: animals
animal: moose
spec:
replicas: 2
selector:
matchLabels:
app: animals
task: moose
template:
metadata:
labels:
app: animals
task: moose
version: v0.0.1
spec:
containers:
- name: moose
image: supergiantkir/animals:moose
ports:
- containerPort: 80
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: hare
labels:
app: animals
animal: hare
spec:
replicas: 2
selector:
matchLabels:
app: animals
task: hare
template:
metadata:
labels:
app: animals
task: hare
version: v0.0.1
spec:
containers:
- name: hare
image: supergiantkir/animals:hare
ports:
- containerPort: 80
已创建服务,但未创建入口负载平衡器:
但是,如果我删除行
kubernetes.io/ingres.class:traefik
它与默认的kubernetes入口一起工作,您可以尝试添加更多注释,如下所示
traefik.ingress.kubernetes.io/frontend-entry-points: http,https
traefik.ingress.kubernetes.io/redirect-entry-point: https
traefik.ingress.kubernetes.io/redirect-permanent: "true"
像这样,
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: traefik-dashboard-ingress
namespace: traefik
annotations:
kubernetes.io/ingress.class: traefik
traefik.ingress.kubernetes.io/frontend-entry-points: http,https
traefik.ingress.kubernetes.io/redirect-entry-point: https
traefik.ingress.kubernetes.io/redirect-permanent: "true"
spec:
rules:
- host: traefik-ui.example.com
http:
paths:
- path: /
backend:
serviceName: traefik-dashboard
servicePort: 8080
您可以尝试添加更多注释,如下所示
traefik.ingress.kubernetes.io/frontend-entry-points: http,https
traefik.ingress.kubernetes.io/redirect-entry-point: https
traefik.ingress.kubernetes.io/redirect-permanent: "true"
像这样,
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: traefik-dashboard-ingress
namespace: traefik
annotations:
kubernetes.io/ingress.class: traefik
traefik.ingress.kubernetes.io/frontend-entry-points: http,https
traefik.ingress.kubernetes.io/redirect-entry-point: https
traefik.ingress.kubernetes.io/redirect-permanent: "true"
spec:
rules:
- host: traefik-ui.example.com
http:
paths:
- path: /
backend:
serviceName: traefik-dashboard
servicePort: 8080
默认情况下,Traefik不会为您创建负载平衡器 如文件所述: 创建入口对象时,GKE入口控制器将创建 Google云平台HTTP(S)负载平衡器及其配置 根据入口中的信息及其相关信息 服务 这一切都适用于GKE入口控制器(gce)-有关gce的更多信息,您可以在此处找到: 如果您想使用Traefik作为入口,则必须使用
类型:LoadBalancer
例如:
apiVersion: v1
kind: Service
metadata:
name: traefik
spec:
type: LoadBalancer
selector:
k8s-app: traefik-ingress-lb
ports:
- port: 80
targetPort: 80
更多信息和大量的解释图和实际工作的例子,你可以在文章中找到
希望有此帮助。默认情况下,Traefik不会为您创建负载平衡器 如文件所述: 创建入口对象时,GKE入口控制器将创建 Google云平台HTTP(S)负载平衡器及其配置 根据入口中的信息及其相关信息 服务 这一切都适用于GKE入口控制器(gce)-有关gce的更多信息,您可以在此处找到: 如果您想使用Traefik作为入口,则必须使用
类型:LoadBalancer
例如:
apiVersion: v1
kind: Service
metadata:
name: traefik
spec:
type: LoadBalancer
selector:
k8s-app: traefik-ingress-lb
ports:
- port: 80
targetPort: 80
更多信息和大量的解释图和实际工作的例子,你可以在文章中找到
希望这对我有帮助。这对我不起作用。你能在谷歌云kubernetes中运行这个例子吗?我正在努力,但没有成功。入口的负载平衡器从未创建过服务文件中的类型“NodePort”在哪里?哦,我看到创建了两个服务“NodePort”。如果您想使用LoadBalancer,您可以更改类型:LoadBalancer而不是NodePort。请参考此url了解LoadBalancer,并参考此url了解NodePort+入口:是的,我解决了,使用traefik,您不会为每个入口创建负载平衡器,但使用默认的gce Ingress controller,您可以为每个入口创建不同的负载平衡器,我一开始就不太理解这种差异。现在我只有一个用于traefik“proxy”的负载平衡器,所有其他服务都通过它。这对我不起作用。你能在谷歌云kubernetes中运行这个例子吗?我正在努力,但没有成功。入口的负载平衡器从未创建过服务文件中的类型“NodePort”在哪里?哦,我看到创建了两个服务“NodePort”。如果您想使用LoadBalancer,您可以更改类型:LoadBalancer而不是NodePort。请参考此url了解LoadBalancer,并参考此url了解NodePort+入口:是的,我解决了,使用traefik,您不会为每个入口创建负载平衡器,但使用默认的gce Ingress controller,您可以为每个入口创建不同的负载平衡器,我一开始就不太理解这种差异。现在我只有一个用于traefik“proxy”的负载平衡器,所有其他服务都会通过它。为什么您认为kubernetes.io/ingres.class:traefik应该为您创建LoadBalancer?这是kubernetes.io/ingres.class:gce,他为您创建了loadballancer,但不是traefikWow!真正地我读到“当你创建一个Ingress对象时,GKE Ingress controller会创建一个Google云平台HTTP(S)负载平衡器,并根据Ingress及其相关服务中的信息对其进行配置。”这里:然后我想,使用traefik我还需要编写Ingress,负载平衡器将自动创建。。。那么,使用traefik,我应该将服务从NodePort更改为LoadBalancer吗?或者我应该在创建负载平衡器之后使用NodePort创建服务?为什么您认为kubernetes.io/ingres.class:traefik应该为您创建LoadBalancer?这是kubernetes.io/ingres.class:gce,他为您创建了loadballancer,但不是traefikWow!真正地我读到“当你创建一个Ingress对象时,GKE Ingress controller会创建一个Google云平台HTTP(S)负载平衡器,并根据Ingress及其相关服务中的信息对其进行配置。”这里:然后我想,使用traefik我还需要编写Ingress,负载平衡器将自动创建。。。那么,使用traefik,我应该将服务从NodePort更改为LoadBalancer吗?或者我应该在创建负载平衡器之后使用NodePort创建服务?