nad*_*bmz 6 kubernetes google-kubernetes-engine traefik traefik-ingress
我应该将 traefik 1.7.x 部署为 DaemonSet 还是 GKE (Google K8S) 中的部署?
Google 云中具有节点自动缩放器的 Kubernetes 集群,托管多个生产集群。集群最多可以扩展 90 个节点(最少 6 个节点),目前我们traefik在每个集群中部署了 10 个副本的 pod(我们使用 kustomize 在所有集群中部署相同的清单)。
europe-west1我们注意到,与具有 6 个节点的区域集群相比,具有 18 个节点(区域)的集群的响应时间较慢australia-southeast1。两个集群都有 10 个 traefik 副本。
traefik.toml:
[kubernetes]
# all namespaces!
namespaces = []
Run Code Online (Sandbox Code Playgroud)
服务.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: traefik
name: traefik-ingress
namespace: ingress-traefik
spec:
externalTrafficPolicy: Local
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: traefik
sessionAffinity: None
type: LoadBalancer
loadBalancerIP: {{LOAD_BALANCER_IP}}
Run Code Online (Sandbox Code Playgroud)
部署.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: traefik
name: traefik
namespace: ingress-traefik
spec:
replicas: 10
selector:
matchLabels:
app: traefik
template:
metadata:
labels:
app: traefik
spec:
containers:
- args:
- --configfile=/config/traefik.toml
image: traefik:1.7.9-alpine
Run Code Online (Sandbox Code Playgroud)
可以将 Traefik 与Deployment或DaemonSet对象一起使用,但这两个选项都有自己的优缺点:
使用 Deployment 时,可扩展性会更好,因为使用 DaemonSet 时,您将拥有单 Pod-per-Node 模型,而使用 Deployment 时,根据您的环境,您可能需要更少的副本。
当节点加入集群时,DaemonSet 会自动扩展到新节点,而 Deployment Pod 仅在需要时才调度到新节点上。
DaemonSets 确保任何单个节点上仅运行一个 pod 副本。如果您想确保两个 Pod 不会位于同一节点上,则部署需要关联性设置。
DaemonSets 可以使用 NET_BIND_SERVICE 功能运行,这将允许它绑定到每个主机上的端口 80/443/etc。这将允许绕过 kube-proxy,并减少流量跃点。请注意,这违反了 Kubernetes 最佳实践指南,并可能引发调度/扩展问题。尽管存在潜在问题,这仍然是大多数入口控制器的选择。
部署具有更轻松的向上和向下扩展的可能性。它可以实现完整的Pod生命周期,并支持从Kubernetes 1.2开始的滚动更新。至少需要一个 Pod 来运行 Deployment。
DaemonSet 自动扩展到满足特定选择器的所有节点,并保证一次填充一个节点。Kubernetes 1.7 也完全支持 DaemonSet 的滚动更新。
您可能想查看其他traefik 文档
| 归档时间: |
|
| 查看次数: |
2317 次 |
| 最近记录: |