我在Google平台上创建了一个kubernetes集群,之后,我在集群上安装了Helm/tiller,然后,我安装了traefik,就像官方文档说的那样。
现在,我正在尝试为服务创建一个宏,但是如果我将注释kubernetes.io/ingress.class: traefik放入进来,就不会创建宏的负载均衡器。但是如果没有注释,它就可以使用默认的In匀浆。(服务类型为nodeport)
编辑:我也在一个干净的集群中尝试了这个例子:https://supergiant.io/blog/using-traefik-as-ingress-controller-for-your-kubernetes-cluster/,但是当我选择kubernetes.io/ingress.class: traefik时,它同样不会被创建一个入口负载均衡器。
我的文件是:animals-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: hareanimals-ingress.yaml:
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: httpanimals-deployment.yaml:
---
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/ingress.class: traefik,它将与Kubernetes的默认入口一起工作。
发布于 2019-07-03 13:56:49
默认情况下,Traefik不会为您创建负载均衡器。
正如HTTP(s)负载平衡与Ingress文档所提到的:
当您创建一个宏对象时,GKE入口控制器将创建一个(S)负载平衡器,并根据Intru及其关联服务中的信息对其进行配置。
这一切都适用于GKE入口控制器( gce )-更多关于gce的信息,您可以在这里找到:https://github.com/kubernetes/ingress-gce。
如果您想使用Traefik作为入口,则必须使用type: LoadBalancer公开Traefik服务。
示例:
apiVersion: v1
kind: Service
metadata:
name: traefik
spec:
type: LoadBalancer
selector:
k8s-app: traefik-ingress-lb
ports:
- port: 80
targetPort: 80有很多解释图和实际工作示例的更多信息,您可以在使用Traefik侵入控制器将Kubernetes服务公开到internet上文章中找到。
希望能帮上忙。
发布于 2019-07-03 03:57:25
您可以尝试添加更多注释,如下所示
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: 8080https://stackoverflow.com/questions/56862054
复制相似问题