K8S系列文章之 Traefik快速入门

traefik 与 nginx 一样,是一款优秀的反向代理工具,或者叫 Edge Router。至于使用它的原因则基于以下几点

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

快速开始

一个使用 Docker 的简单示例

quickstart-diagram

使用 Docker Provider 启动 Traefik

创建一个 docker-compose.yml 文件,你将在其中定义一个使用官方的 Traefik 镜像的反向代理服务:

已复制version: '3'

services:
  reverse-proxy:
    # 官方的 Traefik 2.0 Docker 镜像
    image: traefik:v2.0
    # 开启 web UI 并且告诉 Traefik 监听 Docker
    command: --api.insecure=true --providers.docker
    ports:
      # HTTP 端口
      - "80:80"
      # Web UI 端口(通过 --api.insecure=true 启用)
      - "8080:8080"
    volumes:
      # 这样 Traefik 可以监听 Docker 事件
      - /var/run/docker.sock:/var/run/docker.sock

就这样现在就可以启动 Traefik 了!

使用以下命令启动你的反向代理服务:

docker-compose up -d reverse-proxy

然后可以打开浏览器,访问 http://localhost:8080/api/rawdata 接口来查看 Traefik 的 API 原始数据。

Traefik 检查新服务并创建路由

现在我们已经启动并运行了 Traefik 实例,接下来我们来部署一个新的服务,添加到上面的 docker-compose.yml 文件:

# ...
  whoami:
    # 一个通过 API 暴露其 IP 地址的容器
    image: containous/whoami
    labels:
      - "traefik.http.routers.whoami.rule=Host(`whoami.docker.localhost`)"

上面我们定义了 whoami:一个简单的 web 服务,它会输出部署的机器的相关信息(IP 地址、主机等等)。然后我们可以使用以下命令启动 whoami 服务:

docker-compose up -d whoami

启动完成后,然后返回浏览器,查看 http://localhost:8080/api/rawdata 接口的数据,正常就可以看到 Traefik 已自动检测到新容器并更新了相应的配置。

当 Traefik 检测到新服务时,它会创建相应的路由,然后我们可以访问相应的路由(我们这里使用 curl):

curl -H Host:whoami.docker.localhost http://127.0.0.1

然后会输出如下的一些信息:

Hostname: 3cca68434466
IP: 127.0.0.1
IP: 172.21.0.3
#...

更多实例?Traefik 对他们进行负载均衡

我们可以使用以下命令来对 whoami 服务进行扩容:

docker-compose up -d --scale whoami=2

扩容完成后可以查看当前我们的服务运行的容器状况:

docker-compose ps
           Name                          Command               State                     Ports                   
-----------------------------------------------------------------------------------------------------------------
quick-start_reverse-proxy_1   /entrypoint.sh --api.insec ...   Up      0.0.0.0:80->80/tcp, 0.0.0.0:8080->8080/tcp
quick-start_whoami_1          /whoami                          Up      80/tcp                                    
quick-start_whoami_2          /whoami                          Up      80/tcp   

同样返回到浏览器中查看 http://localhost:8080/api/rawdata 接口可以看到 Traefik 已经自动检查到了新的容器实例。

最后,我们运行以下命令两次,查看 Traefik 在两个实例之间的负载均衡:

curl -H Host:whoami.docker.localhost http://127.0.0.1

我们可以在输出信息中看到如下交替的信息显示:

Hostname: a656c8ddca6c
IP: 172.27.0.3
#...
Hostname: s458f154e1f1
IP: 172.27.0.4
# ...

不过,最后不要忘记了还可以去查看下 Traefik 的 Web UI,通过访问 http://localhost:8080 即可:

traefik dashboard

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
TraefikKubernetes中的使用可以通过IngressClass来实现。在引用中提到,如果要让Traefik处理默认的Ingress资源对象,我们需要使用名为traefik的IngressClass。通过运行指令`kubectl get ingressclass`,我们可以查看到存在一个名为traefik的IngressClass。 在引用中提到,可以使用hostport模式将Traefik固定到特定节点上,这个节点有外网IP,作为流量的入口点。根据指令`helm upgrade --install traefik ./traefik -f ./values.yaml --namespace kube-system`,Traefik被成功安装并部署在kube-system命名空间中。 接下来,根据引用中的示例创建一个Ingress资源对象来使用Traefik。在示例中,通过设置ingressClassName为traefik,将域名wgr.nginx.com映射到名为my-nginx的服务。所有的请求将被发送到该服务的80端口。这样可以将流量导入到Traefik所管理的Ingress资源对象中。 总结起来,要在Kubernetes中使用Traefik,您需要执行以下步骤: 1. 确保存在一个名为traefik的IngressClass,可以通过`kubectl get ingressclass`进行检查。 2. 安装Traefik,可以使用Helm命令`helm upgrade --install traefik ./traefik -f ./values.yaml --namespace kube-system`。 3. 创建一个Ingress资源对象,指定ingressClassName为traefik,并将域名映射到相应的服务。 请注意,以上仅为一般示例,具体的配置和操作可能会因环境和需求而有所不同。如有需要,请参考相关文档或官方指南进行详细配置和操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coder_Boy_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值