今天就跟大家聊聊有關(guān)k8s中的Traefik怎么理解,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
站在用戶的角度思考問題,與客戶深入溝通,找到鄠邑網(wǎng)站設(shè)計與鄠邑網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋鄠邑地區(qū)。
Traefik 是一款開源的反向代理與負載均衡工具。
它最大的優(yōu)點是能夠與常見的微服務(wù)系統(tǒng)直接整合,可以實現(xiàn)自動化動態(tài)配置。
目前支持 Docker、Swarm、Mesos/Marathon、 Mesos、Kubernetes、Consul、Etcd、Zookeeper、BoltDB、Rest API 等等后端模型。
為什么比較偏向域Traefik呢,下面來簡單對比下。
ingress:
使用nginx作為前端負載均衡,通過ingress controller不斷的和kubernetes api交互,實時獲取后端service,pod等的變化,然后動態(tài)更新nginx配置,并刷新使配置生效,達到服務(wù)發(fā)現(xiàn)的目的。
traefik:
traefik本身設(shè)計的就能夠?qū)崟r跟kubernetes api交互,感知后端service,pod等的變化,自動更新配置并重載。
相對來說traefik更快速方便,同時支持更多的特性,使反向代理,負載均衡更直接更高效。
ingress分類 | nginx ingress | traefix ingress |
---|---|---|
協(xié)議 | http https htt2 grpc tcp udp | http https htt2 grpc tcp+tls |
路由匹配 | host path | host、path、headers、query、path prefix、method |
命名空間支持 | - | 共用或指定命名空間 |
部署策略 | - | 金絲雀部署、藍綠部署、灰度部署 |
upstream探測 | 重試、超時、心跳探測 | 重試、超時、心跳探測、熔斷 |
負載均衡算法 | RR、會話保持、最小連接、最短時間、一致性hash | WRR、動態(tài)RR、會話保持 |
優(yōu)點 | 簡單易用,易接入 | Golang編寫,部署容易,支持眾多的后端,內(nèi)置WebUI |
缺點 | 沒有解決nginx reload,插件多,但是擴展性能查差 | 沒什么缺點,新版本支持UDP |
下面我們開始進行traefick2.4.8安裝
根據(jù)traefik官網(wǎng)介紹 https://doc.traefik.io/traefik/ traefik安裝由以下4種方式
Use the official Docker image(使用docker鏡像)
Use the Helm Chart(使用helm)
Use the binary distribution(二進制安裝)
Compile your binary from the sources(源碼編譯)
我們當然是選擇helm方式,helm是k8s的包管理器,可以簡單理解為linux 的yum。下面我們先安裝helm吧
安裝Helm
登錄官方網(wǎng)站https://helm.sh/zh/docs/intro/quickstart/ 查找最新版本,目前最新的穩(wěn)定版本是3.5.4
下載helm3.4.5
wget https://get.helm.sh/helm-v3.5.4-linux-amd64.tar.gz
解壓helm
tar -xzvf helm-v3.5.4-linux-amd64.tar.gz
cd linux-amd64
mv helm /usr/local/bin/
運行 helm --help顯示以下內(nèi)容表示安裝成功
添加helm倉庫,這里添加2個(traefik和aliyun)
helm repo add traefik https://helm.traefik.io/traefik
helm repo add apphub https://apphub.aliyuncs.com/
更新repo倉庫資源
helm repo update
下載traefik對應(yīng)的chart到本地
helm pull traefik/traefik
解壓traefik
tar -xzvf traefik-9.19.0.tgz
修改values.yaml (這里主要是把traefik的service類型改成NodePort--原來是LoadBalancer。另外對外的http和https端口nodePort也打開,我這邊因為是端口沒被占用所以隨便設(shè),讀者可以自行修改)
創(chuàng)建traefik命名空間(這里我是為了方便管理所以新增了個命名空間,讀者也可以安裝到default空間下,這個看個人喜歡)
kubecl create -n traefik
下載traefik2.4.8鏡像
docker pull traefik:2.4.8
出現(xiàn)以下信息表示安裝成功
安裝本地traefik到命名空間traefik中
helm install traefik ./traefik/ -n traefik
出現(xiàn)以下信息表示安裝成功
traefik2.4.8出于安全考慮,默認情況下,此HelmChart不會公開Traefik儀表板。但是我們還是有方法可以查看的,例如官網(wǎng)的創(chuàng)建一個 IngressRoute
vi traefik-dashboard.yaml
# dashboard.yaml apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata: name: dashboard spec: entryPoints: - web routes: - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`) kind: Rule services: - name: api@internal kind: TraefikService
安裝(這里我依然是安裝到traefik命名空間方便管理)
kubectl apply -f traefik-dashboard.yaml -n traefik
出現(xiàn)以下界面表示安裝成功
我們創(chuàng)建一個nginx來測試下
vi nginx-demo-ingress-route.yml
我們創(chuàng)建一個nginx服務(wù),IngressRoute路由設(shè)置改成‘/demo/’
apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:alpine volumeMounts: - name: timezone mountPath: /etc/localtime volumes: - name: timezone hostPath: path: /usr/share/zoneinfo/Asia/Shanghai --- apiVersion: v1 kind: Service metadata: name: nginx-svc spec: ports: - port: 80 targetPort: 80 type: NodePort selector: app: nginx --- apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata: name: nginx-ingressroute namespace: default spec: entryPoints: - web routes: - match: PathPrefix(`/demo/`) kind: Rule services: - name: nginx-svc port: 80
下載nginx鏡像
docker pull nginx:alpine
安裝
kubectl apply -f nginx-demo-ingress-route.yml -n traefik
然后我們看到dashboard界面的services變成了5個(原來的是4個),route由3個變成4個。
打開route看下路由情況
可以看到我們新增的路由已經(jīng)生效,接下來我們嘗試訪問一下
http://{外網(wǎng)IP}:32080/demo/
說明路由生效,至此我們的traefik安裝成功。
看完上述內(nèi)容,你們對k8s中的Traefik怎么理解有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。