Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes Ingress不适用于traefisk_Kubernetes_Kubernetes Ingress - Fatal编程技术网

Kubernetes Ingress不适用于traefisk

Kubernetes Ingress不适用于traefisk,kubernetes,kubernetes-ingress,Kubernetes,Kubernetes Ingress,我在谷歌云平台上创建了一个kubernetes集群,之后,我在集群上安装了Helm/tiller,之后,我用Helm安装了traefik,就像官方文档所说的那样 现在我尝试为服务创建入口,但是如果我放置注释kubernetes.io/ingres.class:traefik,则入口的负载平衡器不会创建。 但是如果没有注释,它可以使用默认入口。 (服务类型为nodeport) 编辑:我也在一个干净的google云kubernetes集群中尝试了这个例子:但它是一样的,当我选择kubernetes.

我在谷歌云平台上创建了一个kubernetes集群,之后,我在集群上安装了Helm/tiller,之后,我用Helm安装了traefik,就像官方文档所说的那样

现在我尝试为服务创建入口,但是如果我放置注释
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创建服务?