千家信息网

Kubernetes中如何部署Traefik Ingress

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,这篇文章给大家分享的是有关Kubernetes中如何部署Traefik Ingress的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一:前言1.到目前为止 Kubernet
千家信息网最后更新 2025年02月04日Kubernetes中如何部署Traefik Ingress

这篇文章给大家分享的是有关Kubernetes中如何部署Traefik Ingress的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

一:前言
1.到目前为止 Kubernetes 暴露服务的有三种方式,分别为 LoadBlancer Service、NodePort Service、Ingress。官网对 Ingress 的定义为管理对外服务到集群内服务之间规则的集合,通俗点讲就是它定义规则来允许进入集群的请求被转发到集群中对应服务上,从来实现服务暴漏。 Ingress 能把集群内 Service 配置成外网能够访问的 URL,流量负载均衡,终止SSL,提供基于域名访问的虚拟主机等等
LoadBlancer Service:LoadBlancer Service 是 Kubernetes 结合云平台的组件,如国外 GCE、AWS、国内阿里云等等,使用它向底层云平台申请创建负载均衡器来实现,有局限性,对于使用云平台的集群比较方便。

NodePort Service: NodePort Service 是通过在节点上暴漏端口,然后通过将端口映射到具体某个服务上来实现服务暴漏,比较直观方便,但是对于集群来说,随着 Service 的不断增加,需要的端口越来越多,很容易出现端口冲突,而且不容易管理。当然对于小规模的集群服务,还是比较不错的。

Ingress: Ingress 使用开源的反向代理负载均衡器来实现对外暴漏服务,比如 Nginx、Apache、Haproxy等。

2.traefik 是一个前端负载均衡器,对于微服务架构尤其是 kubernetes 等编排工具具有良好的支持;同 nginx 等相比,traefik 能够自动感知后端容器变化,从而实现自动服务发现

二:yaml文件

可以通过https://github.com/containous/traefik/tree/master/examples/k8s 下载所需要的yaml文件; 我们使用了如下几个文件:

traefik-rbac.yaml

点击(此处)折叠或打开

  1. ---

  2. kind: ClusterRole

  3. apiVersion: rbac.authorization.k8s.io/v1beta1

  4. metadata:

  5. name: traefik-ingress-controller

  6. rules:

  7. - apiGroups:

  8. - ""

  9. resources:

  10. - services

  11. - endpoints

  12. - secrets

  13. verbs:

  14. - get

  15. - list

  16. - watch

  17. - apiGroups:

  18. - extensions

  19. resources:

  20. - ingresses

  21. verbs:

  22. - get

  23. - list

  24. - watch

  25. ---

  26. kind: ClusterRoleBinding

  27. apiVersion: rbac.authorization.k8s.io/v1beta1

  28. metadata:

  29. name: traefik-ingress-controller

  30. roleRef:

  31. apiGroup: rbac.authorization.k8s.io

  32. kind: ClusterRole

  33. name: traefik-ingress-controller

  34. subjects:

  35. - kind: ServiceAccount

  36. name: traefik-ingress-controller

  37. namespace: kube-system

traefik-ds.yaml

点击(此处)折叠或打开

  1. ---

  2. apiVersion: v1

  3. kind: ServiceAccount

  4. metadata:

  5. name: traefik-ingress-controller

  6. namespace: kube-system

  7. ---

  8. kind: DaemonSet

  9. apiVersion: extensions/v1beta1

  10. metadata:

  11. name: traefik-ingress-controller

  12. namespace: kube-system

  13. labels:

  14. k8s-app: traefik-ingress-lb

  15. spec:

  16. template:

  17. metadata:

  18. labels:

  19. k8s-app: traefik-ingress-lb

  20. name: traefik-ingress-lb

  21. spec:

  22. serviceAccountName: traefik-ingress-controller

  23. terminationGracePeriodSeconds: 60

  24. hostNetwork: true

  25. containers:

  26. - image: traefik

  27. name: traefik-ingress-lb

  28. ports:

  29. - name: http

  30. containerPort: 80

  31. hostPort: 80

  32. - name: admin

  33. containerPort: 8080

  34. securityContext:

  35. capabilities:

  36. drop:

  37. - ALL

  38. add:

  39. - NET_BIND_SERVICE

  40. args:

  41. - --api

  42. - --kubernetes

  43. - --logLevel=INFO

  44. ---

  45. kind: Service

  46. apiVersion: v1

  47. metadata:

  48. name: traefik-ingress-service

  49. namespace: kube-system

  50. spec:

  51. selector:

  52. k8s-app: traefik-ingress-lb

  53. ports:

  54. - protocol: TCP

  55. port: 80

  56. name: web

  57. - protocol: TCP

  58. port: 8080

  59. name: admin

  60. type: NodePort

ui.yaml

点击(此处)折叠或打开

  1. apiVersion: v1

  2. kind: Service

  3. metadata:

  4. name: traefik-web-ui

  5. namespace: kube-system

  6. spec:

  7. selector:

  8. k8s-app: traefik-ingress-lb

  9. ports:

  10. - name: web

  11. port: 80

  12. targetPort: 8580

  13. ---

  14. apiVersion: extensions/v1beta1

  15. kind: Ingress

  16. metadata:

  17. name: traefik-web-ui

  18. namespace: kube-system

  19. spec:

  20. rules:

  21. - host: traefik-ui.local

  22. http:

  23. paths:

  24. - path: /

  25. backend:

  26. serviceName: traefik-web-ui

  27. servicePort: web

my-ingress.yaml (这里我们对集群中的 elasticsearch和kibana开启了Ingress)

点击(此处)折叠或打开

  1. apiVersion: extensions/v1beta1

  2. kind: Ingress

  3. metadata:

  4. name: traefik-ingress

  5. namespace: kube-system

  6. spec:

  7. rules:

  8. - host: elasticsearch.donkey

  9. http:

  10. paths:

  11. - path: /

  12. backend:

  13. serviceName: elasticsearch-logging

  14. servicePort: 9200

  15. - host: kibana.donkey

  16. http:

  17. paths:

  18. - path: /

  19. backend:

  20. serviceName: kibana-logging

  21. servicePort: 5601


三:部署与验证

1.创建资源 kubectl create -f .


2. 通过kubectl logs -f 确认pod正常启动

3.traefik dashboard


4.如果需要在kubernetes集群以外访问就需要设置DNS,或者修改本机的hosts文件。然后通过Igress配置中的host 直接访问service.

感谢各位的阅读!关于"Kubernetes中如何部署Traefik Ingress"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

0