k3s Traekfix v2版本开启dashboard并进行项目的部署及使用
官网介绍:Træfɪk 是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。 它支持多种后台 (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Rest API, file…) 来自动化、动态的应用它的配置文件设置。
Traefix是k3s里面的Ingress Controller。支持负载均衡和反向代理,类似于ngnix。
k3s安装启动的时候,默认使用traefix为Ingress Controller,Traefik ingress controller 将使用主机上的 80 和 443 端口(即这些端口不能用于 HostPort 或 NodePort)
。traekfix有一个可视化界面,可以通过dashboard查看路由信息等。开启可视化界面有两种方式,一种是通过port-forward
;一种是添加ingress,通过域名访问。
kubectl -n kube-system port-forward $(kubectl -n kube-system get pods --selector "app.kubernetes.io/name=traefik" --output=name) 9000:9000
端口转发开启后,可以通过http://127.0.0.1:9000/dashboard
来访问可视化界面:
# dashboard.yaml
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: dashboard
spec:
entryPoints:
- web
routes:
- match: Host(`traefik.example`) && (PathPrefix(`/dashboard`) || PathPrefix(`/api`))
kind: Rule
services:
- name: api@internal
kind: TraefikService
执行命令kubectl apply -f dashboard.yaml
部署成功后,可通过http://traefik.example/dashboard/
访问 Dashboard:
在minikube 实战篇 - 镜像打包部署 - 2
中有关于部署docker-demo的脚本,执行:
kubectl create deployment docker-demo --image=halo26812/docker-demo:0.0.1
kubectl expose deployment docker-demo --type=ClusterIP --port=8080
把--type=NodePort
修改成--type=ClusterIP
,部署的服务是通过ingress提供给外部访问。
type | 描述 |
---|---|
ClusterIP | 只对集群内部可见,外部无法访问 |
NodePort | 对外部可见 |
执行如下:
[root@localhost halo]# kubectl create deployment docker-demo --image=halo26812/docker-demo:0.0.1
deployment.apps/docker-demo created
[root@localhost halo]# kubectl expose deployment docker-demo --type=ClusterIP --port=8080
service/docker-demo exposed
执行成功。现在需要通过自定义IngressRoute,开放docker-demo服务,定义IngressRoute文件docker-demo-ingressRoute.yaml
,如下:
#docker-demo-ingressRoute.yaml
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: docker-demo-ingress
namespace: default
spec:
entryPoints:
- web
routes:
- match: Host(`docker.halo.io`) && PathPrefix(`/hello`)
kind: Rule
services:
- name: docker-demo
port: 8080
以下是相关配置参数的一些说明:
参数 | 描述 |
---|---|
match | 是匹配host地址“docker.halo.io”及访问路径前缀匹配“hello” |
services.name | 是应用名:docker-demo |
services.port | 是服务端口:8080 |
执行docker-demo-ingressRoute.yaml
文件
halo at MacBook-Pro-3 in ~/minikube/k3s
○ kubectl apply -f docker-demo-ingressRoute.yaml
ingressroute.traefik.containo.us/docker-demo-ingress created
执行成功之后在host文件中配置。
192.168.2.42 docker.halo.io
配置完成之后,在浏览器端访问http://docker.halo.io/hello
。如图:
浏览器界面显示“hello world!”。访问成功!