基礎知識
同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
1. 下載源碼
git clone https://github.com/containous/traefik.git
官方網址: https://docs.traefik.io/
獲取配置文件
wget https://raw.githubusercontent.com/containous/traefik/v1.7/examples/k8s/traefik-rbac.yaml wget https://raw.githubusercontent.com/containous/traefik/v1.7/examples/k8s/traefik-deployment.yaml wget https://raw.githubusercontent.com/containous/traefik/v1.7/examples/k8s/traefik-ds.yaml wget https://raw.githubusercontent.com/containous/traefik/v1.7/examples/k8s/ui.yaml
依次執行
kubectl apply -f traefik-rbac.yaml
kubectl apply -f traefik-deployment.yaml
kubectl apply -f ui.yaml
查看結果
[root@master etc]# kubectl get svc -o wide -n kube-system|grep traefik traefik-ingress-service NodePort 10.99.41.85 <none> 80:32420/TCP,8080:32638/TCP 14m k8s-app=traefik-ingress-lb traefik-web-ui ClusterIP 10.107.9.178 <none> 80/TCP 10m k8s-app=traefik-ingress-lb
瀏覽器訪問
http://47.102.*.*:32638/dashboard/