首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >库伯内特斯·安妞不使用traefisk

库伯内特斯·安妞不使用traefisk
EN

Stack Overflow用户
提问于 2019-07-03 02:17:16
回答 2查看 680关注 0票数 0

我在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:

代码语言:javascript
复制
---
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

animals-ingress.yaml:

代码语言:javascript
复制
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

animals-deployment.yaml:

代码语言:javascript
复制
---
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的默认入口一起工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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服务。

示例:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: traefik
spec:
  type: LoadBalancer
  selector:
    k8s-app: traefik-ingress-lb
  ports:
  - port: 80
    targetPort: 80

有很多解释图和实际工作示例的更多信息,您可以在使用Traefik侵入控制器将Kubernetes服务公开到internet上文章中找到。

希望能帮上忙。

票数 1
EN

Stack Overflow用户

发布于 2019-07-03 03:57:25

您可以尝试添加更多注释,如下所示

代码语言:javascript
复制
traefik.ingress.kubernetes.io/frontend-entry-points: http,https
traefik.ingress.kubernetes.io/redirect-entry-point: https
traefik.ingress.kubernetes.io/redirect-permanent: "true"

像这样,

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56862054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档