明党参

首页 » 常识 » 常识 » kubernetes集群基于traefi
TUhjnbcbe - 2021/8/20 21:17:00
一、前置知识点

理解Ingress

简单的说,ingress就是从kubernetes集群外访问集群的入口,将用户的URL请求转发到不同的service上。Ingress相当于nginx、apache等负载均衡方向代理服务器,其中还包括规则定义,即URL的路由信息,路由信息得的刷新由Ingresscontroller[1]来提供。

理解IngressController

IngressController实质上可以理解为是个监视器,IngressController通过不断地跟kubernetesAPI打交道,实时的感知后端service、pod等变化,比如新增和减少pod,service增加与减少等;当得到这些变化信息后,IngressController再结合下文的Ingress生成配置,然后更新反向代理负载均衡器,并刷新其配置,达到服务发现的作用。

理解kubernetes-控制器Deployment和DaemonSet

?Deployment

Deployment为Pod和ReplicaSet(下一代ReplicationController)提供声明式更新。

只需要在Deployment中描述想要的目标状态是什么,Deploymentcontroller就会帮您将Pod和ReplicaSet的实际状态改变到您的目标状态。也可以定义一个全新的Deployment来创建ReplicaSet或者删除已有的Deployment并创建一个新的来替换。

?DaemonSet

DaemonSet确保全部(或者一些)Node上运行一个Pod的副本。当有Node加入集群时,也会为他们新增一个Pod。当有Node从集群移除时,这些Pod也会被回收。删除DaemonSet将会删除它创建的所有Pod。

使用DaemonSet的一些典型用法:

1、运行集群存储daemon,例如在每个Node上运行,应用场景:Agent。2、在每个Node上运行日志收集daemon,例如fluentd、logstash。3、在每个Node上运行监控daemon,例如PrometheusNodeExporter、collectd、Datadog代理、NewRelic代理,或Gangliagmond。

二、traefik简介

Traefik[2]是一款开源的反向代理与负载均衡工具。它最大的优点是能够与常见的微服务系统直接整合,可以实现自动化动态配置。目前支持Docker,Swarm,Mesos/Marathon,Mesos,Kubernetes,Consul,Etcd,Zookeeper,BoltDB,RestAPI等等后端模型。至于使用它的原因则基于以下几点:

?无须重启即可更新配置?自动的服务发现与负载均衡?与docker的完美集成,基于containerlabel的配置?漂亮的dashboard界面?metrics的支持,对prometheus和k8s的集成

部署方式

?traefik部署在k8s上分为daemonset和deployment两种方式各有优缺点:

daemonset能确定有哪些node在运行traefik,所以可以确定的知道后端ip,但是不能方便的伸缩

deployment可以更方便的伸缩,但是不能确定有哪些node在运行traefik所以不能确定的知道后端ip

一般部署两种不同类型的traefik:

面向内部(internal)服务的traefik,建议可以使用deployment的方式面向外部(external)服务的traefik,建议可以使用daemonset的方式

本文使用的是daemonset方式部署。

三、部署Traefikcontroller

环境介绍

操作系统ip主机名配置备注centos7....k8s-master2核4GKubernetesv1.20.5centos7....k8s-node核8GKubernetesv1.20.5centos7....k8s-node核8Gv1.20.5centos7....k8s-node核8Gv1.20.5

目录结构如下

traefik-v2.1.6├──traefik-config.yaml├──traefik-ds-v2.1.6.yaml├──traefik-rbac.yaml└──ui.yaml

traefik-config.yaml

#cattraefik-config.yamlapiVersion:v1kind:ConfigMapmetadata:name:traefik-confignamespace:kube-systemdata:traefik.toml:

defaultEntryPoints=["

1
查看完整版本: kubernetes集群基于traefi