k8s安装traefik配置使用ingress
简介
traefik 是一个前端负载均衡器,对于微服务 架构尤其是 kubernetes 等编排工具具有良好的支持;同 nginx 等相比,traefik 能够自动感知后端容器变化,从而实现自动服务发现。
traefik部署在k8s上分为daemonset和deployment两种方式各有优缺点:
- daemonset 能确定有哪些node在运行traefik,所以可以确定的知道后端ip,但是不能方便的伸缩
- deployment 可以更方便的伸缩,但是不能确定有哪些node在运行traefik所以不能确定的知道后端ip
一般部署两种不同类型的traefik:
- 面向内部(internal)服务的traefik,建议可以使用deployment的方式
- 面向外部(external)服务的traefik,建议可以使用daemonset的方式
建议使用traffic-type标签
- traffic-type: external
- traffic-type: internal
traefik相应地使用labelSelector
- traffic-type=internal
- traffic-type=external
安装
mkdir traefik && cd traefik wget https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/traefik-rbac.yaml # 配置rbac kubectl apply -f traefik-rbac.yaml # 以下两种方式选择一个 # 80 提供正常服务,8080 是其自带的 UI 界面 # 以daemonset方式启动traefik # 会在所有node节点启动一个traefik并监听在80端口 # master节点不会启动traefik wget https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/traefik-ds.yaml kubectl apply -f traefik-ds.yaml # 以deployment方式启动traefik wget https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/traefik-deployment.yaml kubectl apply -f traefik-deployment.yaml # 查看状态 kubectl get pods -n kube-system # 访问测试,如果有响应说明安装正确 # 应该返回404 # 如果以daemonset方式启动traefik使用如下方式验证 # 11.11.11.112为任何一个node节点的ip curl 11.11.11.112 # 如果以deployment方式启动traefik # 访问node:nodeport或者集群ip验证 复制代码
部署Træfik Web UI
wget https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/ui.yaml kubectl apply -f ui.yaml # 访问webui # 需要先配置host # 11.11.11.112为任何一个node节点的ip 11.11.11.112 traefik-ui.minikube # 浏览器访问如下地址 http://traefik-ui.minikube/ 复制代码
使用basic验证
# 生成加密密码,如果没有安装htpasswd可以在线生成 # https://tool.lu/htpasswd/ htpasswd -c ./auth myusername cat auth myusername:$apr1$78Jyn/1K$ERHKVRPPlzAX8eBtLuvRZ0 # 从密码文件创建secret # monitoring必须和ingress rule处于同一个namespace kubectl create secret generic mysecret --from-file auth --namespace=monitoring # 创建ingress cat >prometheus-ingress.yaml<<EOF apiVersion: extensions/v1beta1 kind: Ingress metadata: name: prometheus-dashboard namespace: monitoring annotations: kubernetes.io/ingress.class: traefik ingress.kubernetes.io/auth-type: "basic" ingress.kubernetes.io/auth-secret: "mysecret" spec: rules: - host: dashboard.prometheus.example.com http: paths: - backend: serviceName: prometheus servicePort: 9090 EOF kubectl create -f prometheus-ingress.yaml -n monitoring 复制代码
官方实例
1. 根据域名(host)路由
# deployment wget https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/cheese-deployments.yaml kubectl apply -f cheese-deployments.yaml # service wget https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/cheese-services.yaml kubectl apply -f cheese-services.yaml # ingress wget https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/cheese-ingress.yaml kubectl apply -f cheese-ingress.yaml # 查看状态 kubectl get pods kubectl get svc kubectl get ingress # 测试 # 配置hosts 11.11.11.112 stilton.minikube cheddar.minikube wensleydale.minikube # 浏览器访问测试 http://stilton.minikube/ http://cheddar.minikube/ http://wensleydale.minikube/ 复制代码
2. 根据路径(path)路由
# 使用新的ingress wget https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/cheeses-ingress.yaml kubectl apply -f cheeses-ingress.yaml # 测试 # 配置hosts 11.11.11.112 cheeses.minikube # 浏览器访问测试 http://cheeses.minikube/stilton/ http://cheeses.minikube/cheddar/ http://cheeses.minikube/wensleydale/ 复制代码
3. 指定路由优先级
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: wildcard-cheeses annotations: traefik.frontend.priority: "1" spec: rules: - host: *.minikube http: paths: - path: / backend: serviceName: stilton servicePort: http kind: Ingress metadata: name: specific-cheeses annotations: traefik.frontend.priority: "2" spec: rules: - host: specific.minikube http: paths: - path: / backend: serviceName: stilton servicePort: http
本文转自掘金- k8s安装traefik配置使用ingress
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
k8s使用kube-router网络插件并监控流量状态
简介 kube-router是一个新的k8s的网络插件,使用lvs做服务的代理及负 载均衡,使用iptables来做网络的隔离策略。部署简单,只需要在每个节点部署一个daemonset即可,高性能,易维护。支持pod间通信,以及服务的代理。 安装 # 本次实验重新创建了集群,使用之前测试其他网络插件的集群环境没有成功 # 可能是由于环境干扰,实验时需要注意 # 创建kube-router目录下载相关文件 mkdir kube-router && cd kube-router wget https://raw.githubusercontent.com/cloudnativelabs/kube-router/master/daemonset/kubeadm-kuberouter.yaml wget https://raw.githubusercontent.com/cloudnativelabs/kube-router/master/daemonset/kubeadm-kuberouter-all-features.yaml # 以下两种部署方式任选其一 # 1. 只启用...
- 下一篇
k8s与监控--从telegraf改造谈golang多协程精确控制
从telegraf改造谈golang多协程精确控制 前言 telegraf是infuxdb公司开源出来的一个基于插件机制的收集metrics的 项目。整个架构和elastic公司的日志收集系统极其类似,具备良好的扩展性。与现在流行的各种exporter+promethues监控方案相比: 大致具备良好的可扩展性。很容易增加自己的处理逻辑,在input,output,process,filter等环境定制自己专属的插件。 统一了各种exporter,减少了部署各种exporter的工作量和维护成本。 目前telegraf改造工作基本上是两大部分: 增加了一些telegraf不支持的插件,比如虚拟化(kvm,vmware等),数据库(oracle),k8s和openstack等input插件。 telegraf是基于配置文件的,所以会有两个问题,很难做分布式和无停机动态调度input任务。所以我们的工作就是将获取配置接口化,所有的配置文件来源于统一配置中心。然后就是改造无停机动态调度input。 在改造改造无停机动态调度input就涉及到golang多协程精确控制的问题。 一些golang...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS关闭SELinux安全模块
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7设置SWAP分区,小内存服务器的救世主