我应该将traefik 1.7.x部署为DaemonSet还是在GKE(Google K8S)中部署为A部署?
Kubernetes集群使用Google cloud中的node autoscaler,托管几个生产集群。集群最多可以扩展到90个节点(最少6个节点),目前我们在每个集群中部署了10个副本的< code>traefik pod(我们使用kustomize在所有集群中部署相同的清单)。
我们注意到具有18个节点的集群(< code>europe-west1区域)的响应时间较慢,而< code > Australia-south east 1 区域的集群只有6个节点。两个集群都有traefik的10个副本。
traefik.toml:
[html" target="_blank">kubernetes]
# all namespaces!
namespaces = []
服务.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}}
部署.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
可以将 Traefik 与部署或 DaemonSet 对象一起使用,而这两种选项都有自己的优点和缺点:
> < li>
使用部署时,可扩展性会好得多,因为使用DaemonSet时,您将拥有每个节点一个单元的模型,而使用部署时,根据您的环境,您可能需要较少的副本。
当节点加入集群时,DaemonSets会自动扩展到新节点,而部署pod仅在需要时在新节点上调度。
DaemonSets确保只有一个pod副本在任何单个节点上运行。如果您想确保两个pod不会最终在同一个节点上,部署需要关联设置。
DaemonSets可以使用NET_BIND_SERVICE功能运行,这将允许它绑定到每个主机上的端口80/443/etc。这将允许绕过kube代理,并减少流量跳跃。请注意,这违反了Kubernetes最佳实践指南,并增加了调度/缩放问题的可能性。尽管存在潜在问题,但这仍然是大多数入口控制器的选择。
>
部署具有更容易的向上和向下扩展可能性。它可以实现完整的pod生命周期,并支持库伯内特斯1.2的滚动更新。至少需要一个Pod来运行部署。
DaemonSet自动缩放到满足特定选择器的所有节点,并保证一次填充一个节点。Kubernetes 1.7也完全支持DaemonSets的滚动更新。
您可能想查看其他 traefik 文档
什么是 DaemonSet? DaemonSet 确保全部(或者一些)Node 上运行一个 Pod 的副本。当有 Node 加入集群时,也会为他们新增一个 Pod 。当有 Node 从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。 使用 DaemonSet 的一些典型用法: 运行集群存储 daemon,例如在每个 Node 上运行 glusterd、
问题内容: 我正在设计一个库,在该库中,一个类应具有将自身内部结构转换为文本的能力。我应该使用哪个班级:或?两者之间的主要区别是什么? 哪一个? 问题答案: An 是面向字节的流。您编写的任何文本都必须使用某种编码(最常见的是ISO-8859-1或UTF-8)编码为字节。A 是面向字符的流,根据它要写入的内容,它可能会或可能不会在内部将字符编码为字节。 编辑 如果您正在设计一个库,那么如果您提供一
假设我们使用GitHub操作构建并发布应用程序的容器映像。我将选择ASP.NET Core作为应用程序的技术堆栈,尽管这不太重要。 我想讨论两种不同的方法: 1.“外部构建”:在GitHub Actions runner中构建/编译应用程序,将输出复制到容器映像中 例如,我们的GitHub操作工作流文件可能如下所示... ...有一个简单的Dockerfile像这样: 2.“内置”:内置一个容器,
Træfɪk 是一个云原生的新型的 HTTP 反向代理、负载均衡软件,能轻易的部署微服务. 它支持多种后端 (Docker, Swarm, Mesos/Marathon, Consul, Etcd, Zookeeper, BoltDB, Rest API, file...) ,可以对配置进行自动化、动态的管理. 选择traefik主要是有以下特点让我们决定使用: Golang编写,单文件部署,与系
前面我们的课程中学习了大部分资源对象的使用方法,上节课我们通过一个WordPress的示例把我们前面的内容做了一个总结。今天我们来给大家讲解另外一个Pod控制器的使用方法,我们前面主要讲解的是Deployment这种对象资源的使用,接下来我们要讲解的是在特定场合下使用的控制器:DaemonSet与StatefulSet。 DaemonSet 的使用 通过该控制器的名称我们可以看出它的用法:Daem
我知道如果我们想在外部服务器上部署Spring boot Web应用程序,我们应该排除嵌入式服务器,但如果我们不这样做会发生什么?假设我在jboss外部服务器上部署Spring boot war,但我没有排除tomcat服务器?在这种情况下,Spring boot使用jboss外部服务器,还是仍然使用嵌入式tomcat服务器?