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 监听 Dockercommand: --api.insecure=true --providers.dockerports:# 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/whoamilabels:- "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 psName                          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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/55883.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp实现支付宝菜单展开与收起

需求实现支付宝类似的效果: 思路: 1.首先建立展开收起按钮,这里使用的是uview里面的icon图标。 2.其次建立展开菜单内容,这里只演示了文本信息,后期引入首页应用。 3.最后写js逻辑,展开收起时改变盒子高度和…

Harbor部署--使用 Harbor 安装包

一、Harbor安装准备条件 这里以 harbor 2.8.3 版本为例 1.1 硬件要求 Harbor 安装对硬件资源CPU、内存和硬盘的要求如下表: 资源 最小要求 推荐配置 CPU 2 CPU 4 CPU Mem 4 GB 8 GB Disk 40 GB 160 GB 使用如下命令分别查看服务器的物理CPU和逻辑CPU个数…

任务12、Quality指令加持,Midjourney生成电影级数码作品

12.1 任务概述 本次实验任务旨在帮助你掌握Midjourney AI绘画中的Quality指令。通过深入介绍Quality指令的概念和作用,我们将解释为什么它在绘画中至关重要。通过测试不同的Quality参数对绘画效果的影响,并提供实战演示,你将学会如何在Midjourney中设置Quality参数以达到更…

【JavaEE进阶】Spring核心与设计思想

文章目录 一. Spring框架概述1. 什么是Spring框架2. 为什么要学习框架?3. Spring框架学习的难点 二. Spring 核心与设计思想1. 什么是容器?2. 什么是IoC?3. Spring是IoC容器4. DI(依赖注入)5. DL(依赖查找) 一. Spring框架概述…

git删除已经提交到本地仓库的代码

使用场景如下:在开发工程中第一版编写了一个功能,可在版本迭代的过程中该功能被舍去了,这就意味着该功能的核心代码都要删除,可以该部分代码早已提交到本地仓库了,那么该如何删除本地仓库记录的代码呢? 首先很多人都…

import有什么用,python中怎么使用import

目录 引言 import的概念 import的作用 import的应用 Python中如何使用import import报错处理 代码示例 注意事项 总结 引言 在Python编程语言中,import是一个关键字,用于将其他模块或库的功能引入当前代码中。import的概念和功能使得Python成为…

避免安装这5种软件,手机广告频繁弹窗且性能下降

在我们使用手机的日常生活中,选择合适的应用软件对于保持良好的使用体验至关重要。然而,有些软件可能会给我们带来不必要的麻烦和困扰。特别是那些频繁弹窗广告、导致手机性能下降的应用程序,我们应该尽量避免安装它们。 首先第一种&#xf…

聚观早报|iPhone 15预计9月22日上市;一加Open渲染图曝光

【聚观365】8月7日消息 iPhone 15预计9月22日上市一加Open渲染图曝光Redmi K60至尊版细节曝光小米14 Pro屏幕细节曝光vivo V3正式发布,执着自研“影像芯片” iPhone 15预计9月22日上市 上周有多位消息人士透露,多家合作的电信运营商已要求员工不要在9月…

编写第一个 React Native 程序

React Native 目录 使用React Native CLI命令创建的目录如下图所示: 重要目录说明 目录说明__tests__存放测试用例的目录.bundle / config配置文件(一般不会用到)android 和 IOS 文件夹这两个文件夹主要是存放安卓和 ios 相关的配置文件和…

【JAVA】正则表达式是啥?

个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 文章目录 前言正则表达式正则表达式语法正则表达式的特点捕获组实例 前言 如果我们想要判断给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”)&#xff0c…

基于EEGLAB的ICA分析

目录 1.ICA原理 2.ICA的实现 3.ICA成分识别 4.ICLabel识别并去除伪迹 5.ICA成分识别练习 1.ICA原理 得到的每一个地形图,实际上就是它的权重谱。 投射:根据原成分恢复原始信号。 选择性投射:去伪。 2.ICA的实现 extended,1&…

网络:从socket编程的角度说明UDP和TCP的关系,http和tcp的区别

尝试从编程的角度解释各种网络协议。 UDP和TCP的关系 从Python的socket编程角度出发,UDP(User Datagram Protocol)和TCP(Transmission Control Protocol)是两种不同的传输协议。 TCP是一种面向连接的协议&#xff0c…