日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kubernetes 部署 Ingress 控制器 Traefik v2.1

發布時間:2025/3/11 编程问答 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kubernetes 部署 Ingress 控制器 Traefik v2.1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄[-]

  • . 一、Traefik 簡介
  • . 二、Kubernetes 部署 Traefik
  • . 1、創建 CRD 資源
  • . 2、創建 RBAC 權限
  • . 3、創建 Traefik 配置文件
  • . 4、節點設置 Label 標簽
  • . 5、Kubernetes 部署 Traefik
  • . 三、Traefik 路由規則配置
  • . 1、配置 HTTP 路由規則 (Traefik Dashboard 為例)
  • . 2、配置 HTTPS 路由規則(Kubernetes Dashboard 為例)

系統環境:

  • Traefik 版本:v2.1.2
  • Kubernetes 版本:1.16.3

地址:

  • Traefik 2.1 官方文檔:https://docs.traefik.io/v2.1/
  • 部署文件的 Github 地址:https://github.com/my-dlq/blog-example/tree/master/kubernetes/traefik-v2.1-deploy

一、Traefik 簡介

Traefik 最新推出了 v2.1 版本,這里將 Traefik 升級到最新版本,簡單的介紹了下如何在 Kubernetes 環境下安裝 Traefik v2.1,下面將介紹如何在 Kubernetes 環境下部署并配置 Traefik v2.1。

二、Kubernetes 部署 Traefik

注意:這里 Traefik 是部署在 Kube-system Namespace 下,如果不是需要修改下面部署文件中的 Namespace 屬性。

1、創建 CRD 資源

在 traefik v2.1 版本后,開始使用 CRD(Custom Resource Definition)來完成路由配置等,所以需要提前創建 CRD 資源。

創建 traefik-crd.yaml 文件

## IngressRoute apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata:name: ingressroutes.traefik.containo.us spec:scope: Namespacedgroup: traefik.containo.usversion: v1alpha1names:kind: IngressRouteplural: ingressroutessingular: ingressroute --- ## IngressRouteTCP apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata:name: ingressroutetcps.traefik.containo.us spec:scope: Namespacedgroup: traefik.containo.usversion: v1alpha1names:kind: IngressRouteTCPplural: ingressroutetcpssingular: ingressroutetcp --- ## Middleware apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata:name: middlewares.traefik.containo.us spec:scope: Namespacedgroup: traefik.containo.usversion: v1alpha1names:kind: Middlewareplural: middlewaressingular: middleware --- ## TLSOption apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata:name: tlsoptions.traefik.containo.us spec:scope: Namespacedgroup: traefik.containo.usversion: v1alpha1names:kind: TLSOptionplural: tlsoptionssingular: tlsoption --- ## TraefikService apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata:name: traefikservices.traefik.containo.us spec:scope: Namespacedgroup: traefik.containo.usversion: v1alpha1names:kind: TraefikServiceplural: traefikservicessingular: traefikservice

創建 Traefik CRD 資源

$ kubectl apply -f traefik-crd.yaml

2、創建 RBAC 權限

Kubernetes 在 1.6 版本中引入了基于角色的訪問控制(RBAC)策略,方便對 Kubernetes 資源和 API 進行細粒度控制。Traefik 需要一定的權限,所以這里提前創建好 Traefik ServiceAccount 并分配一定的權限。

創建 traefik-rbac.yaml 文件

## ServiceAccount apiVersion: v1 kind: ServiceAccount metadata:namespace: kube-systemname: traefik-ingress-controller --- ## ClusterRole kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1beta1 metadata:name: traefik-ingress-controller rules:- apiGroups: [""]resources: ["services","endpoints","secrets"]verbs: ["get","list","watch"]- apiGroups: ["extensions"]resources: ["ingresses"]verbs: ["get","list","watch"]- apiGroups: ["extensions"]resources: ["ingresses/status"]verbs: ["update"]- apiGroups: ["traefik.containo.us"]resources: ["middlewares"]verbs: ["get","list","watch"]- apiGroups: ["traefik.containo.us"]resources: ["ingressroutes"]verbs: ["get","list","watch"]- apiGroups: ["traefik.containo.us"]resources: ["ingressroutetcps"]verbs: ["get","list","watch"]- apiGroups: ["traefik.containo.us"]resources: ["tlsoptions"]verbs: ["get","list","watch"]- apiGroups: ["traefik.containo.us"]resources: ["traefikservices"]verbs: ["get","list","watch"] --- ## ClusterRoleBinding kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata:name: traefik-ingress-controller roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: traefik-ingress-controller subjects:- kind: ServiceAccountname: traefik-ingress-controllernamespace: kube-system

創建 Traefik RBAC 資源

  • -n:指定部署的 Namespace
$ kubectl apply -f traefik-rbac.yaml -n kube-system

3、創建 Traefik 配置文件

由于 Traefik 配置很多,通過 CLI 定義不是很方便,一般時候選擇將其配置選項放到配置文件中,然后存入 ConfigMap,將其掛入 traefik 中。

創建 traefik-config.yaml 文件

kind: ConfigMap apiVersion: v1 metadata:name: traefik-config data:traefik.yaml: |-ping: "" ## 啟用 PingserversTransport:insecureSkipVerify: true ## Traefik 忽略驗證代理服務的 TLS 證書api:insecure: true ## 允許 HTTP 方式訪問 APIdashboard: true ## 啟用 Dashboarddebug: false ## 啟用 Debug 調試模式metrics:prometheus: "" ## 配置 Prometheus 監控指標數據,并使用默認配置entryPoints:web:address: ":80" ## 配置 80 端口,并設置入口名稱為 webwebsecure:address: ":443" ## 配置 443 端口,并設置入口名稱為 websecureproviders:kubernetesCRD: "" ## 啟用 Kubernetes CRD 方式來配置路由規則kubernetesIngress: "" ## 啟動 Kubernetes Ingress 方式來配置路由規則log:filePath: "" ## 設置調試日志文件存儲路徑,如果為空則輸出到控制臺level: error ## 設置調試日志級別format: json ## 設置調試日志格式accessLog:filePath: "" ## 設置訪問日志文件存儲路徑,如果為空則輸出到控制臺format: json ## 設置訪問調試日志格式bufferingSize: 0 ## 設置訪問日志緩存行數filters:#statusCodes: ["200"] ## 設置只保留指定狀態碼范圍內的訪問日志retryAttempts: true ## 設置代理訪問重試失敗時,保留訪問日志minDuration: 20 ## 設置保留請求時間超過指定持續時間的訪問日志fields: ## 設置訪問日志中的字段是否保留(keep 保留、drop 不保留)defaultMode: keep ## 設置默認保留訪問日志字段names: ## 針對訪問日志特別字段特別配置保留模式ClientUsername: drop headers: ## 設置 Header 中字段是否保留defaultMode: keep ## 設置默認保留 Header 中字段names: ## 針對 Header 中特別字段特別配置保留模式User-Agent: redactAuthorization: dropContent-Type: keep

創建 Traefik ConfigMap 資源

  • -n: 指定程序啟的 Namespace
$ kubectl apply -f traefik-config.yaml -n kube-system

4、節點設置 Label 標簽

由于是 Kubernetes DeamonSet 這種方式部署 Traefik,所以需要提前給節點設置 Label,這樣當程序部署時 Pod 會自動調度到設置 Label 的節點上。

節點設置 Label 標簽

  • 格式:kubectl label nodes [節點名] [key=value]
$ kubectl label nodes k8s-node-2-12 IngressProxy=true

查看節點是否設置 Label 成功

$ kubectl get nodes --show-labelsNAME STATUS ROLES VERSION LABELS k8s-master-2-11 Ready master v1.16.3 kubernetes.io/hostname=k8s-master-2-11,node-role.kubernetes.io/master= k8s-node-2-12 Ready <none> v1.16.3 kubernetes.io/hostname=k8s-node-2-12,IngressProxy=true k8s-node-2-13 Ready <none> v1.16.3 kubernetes.io/hostname=k8s-node-2-13 k8s-node-2-14 Ready <none> v1.16.3 kubernetes.io/hostname=k8s-node-2-14

如果想刪除標簽,可以使用?kubectl label nodes k8s-node-2-12 IngressProxy-?命令

5、Kubernetes 部署 Traefik

一樣,用 DaemonSet 方式部署,便于在多服務器間擴展,用 hostport 方式占用服務器 80、443 端口,方便流量進入。

創建 traefik 部署文件 traefik-deploy.yaml

apiVersion: v1 kind: Service metadata:name: traefik spec:ports:- name: webport: 80- name: websecureport: 443- name: adminport: 8080selector:app: traefik --- apiVersion: apps/v1 kind: DaemonSet metadata:name: traefik-ingress-controllerlabels:app: traefik spec:selector:matchLabels:app: traefiktemplate:metadata:name: traefiklabels:app: traefikspec:serviceAccountName: traefik-ingress-controllerterminationGracePeriodSeconds: 1containers:- image: traefik:v2.1.2name: traefik-ingress-lbports:- name: webcontainerPort: 80hostPort: 80 ## 將容器端口綁定所在服務器的 80 端口- name: websecurecontainerPort: 443hostPort: 443 ## 將容器端口綁定所在服務器的 443 端口- name: admincontainerPort: 8080 ## Traefik Dashboard 端口resources:limits:cpu: 2000mmemory: 1024Mirequests:cpu: 1000mmemory: 1024MisecurityContext:capabilities:drop:- ALLadd:- NET_BIND_SERVICEargs:- --configfile=/config/traefik.yamlvolumeMounts:- mountPath: "/config"name: "config"volumes:- name: configconfigMap:name: traefik-config tolerations: ## 設置容忍所有污點,防止節點被設置污點- operator: "Exists"nodeSelector: ## 設置node篩選器,在特定label的節點上啟動IngressProxy: "true"

Kubernetes 部署 Traefik

$ kubectl apply -f traefik-deploy.yaml -n kube-system

到此 Traefik v2.1 應用已經部署完成。

三、Traefik 路由規則配置

1、配置 HTTP 路由規則 (Traefik Dashboard 為例)

Traefik 應用已經部署完成,但是想讓外部訪問 Kubernetes 內部服務,還需要配置路由規則,這里開啟了 Traefik Dashboard 配置,所以首先配置 Traefik Dashboard 看板的路由規則,使外部能夠訪問 Traefik Dashboard。

創建 Traefik Dashboard 路由規則文件 traefik-dashboard-route.yaml

apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata:name: traefik-dashboard-route spec:entryPoints:- webroutes:- match: Host(`traefik.mydlq.club`)kind: Ruleservices:- name: traefikport: 8080

創建 Traefik Dashboard 路由規則對象

$ kubectl apply -f traefik-dashboard-route.yaml -n kube-system

接下來配置 Hosts,客戶端想通過域名訪問服務,必須要進行 DNS 解析,由于這里沒有 DNS 服務器進行域名解析,所以修改 hosts 文件將 Traefik 指定節點的 IP 和自定義 host 綁定。打開電腦的 Hosts 配置文件,往其加入下面配置:

192.168.2.12 traefik.mydlq.club

配置完成后,打開瀏覽器輸入地址:http://traefik.mydlq.club?打開 Traefik Dashboard。

?

2、配置 HTTPS 路由規則(Kubernetes Dashboard 為例)

這里我們創建 Kubernetes 的 Dashboard 看板,它是 Https 協議方式,由于它是需要使用 Https 請求,所以我們配置基于 Https 的路由規則并指定證書。

創建證書文件

# 創建自簽名證書 $ openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=cloud.mydlq.club"# 將證書存儲到 Kubernetes Secret 中 $ kubectl create secret generic cloud-mydlq-tls --from-file=tls.crt --from-file=tls.key -n kube-system

創建 Traefik Dashboard 路由規則文件 kubernetes-dashboard-route.yaml

apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata:name: kubernetes-dashboard-route spec:entryPoints:- websecuretls:secretName: cloud-mydlq-tlsroutes:- match: Host(`cloud.mydlq.club`) kind: Ruleservices:- name: kubernetes-dashboardport: 443

創建 Kubernetes Dashboard 路由規則對象

$ kubectl apply -f kubernetes-dashboard-route.yaml -n kube-system

跟上面一樣,配置 Hosts 文件

192.168.2.12 cloud.mydlq.club

配置完成后,打開瀏覽器輸入地址:https://cloud.mydlq.club?打開 Dashboard Dashboard。

?

到此文章結束,可以訪問我的 Github 下載?部署文件,別忘點顆 Start!!

總結

以上是生活随笔為你收集整理的Kubernetes 部署 Ingress 控制器 Traefik v2.1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产麻豆a毛片 | 91蝌蚪在线 | 国产白丝袜美女久久久久 | 最新av网址在线观看 | 国产午夜精品理论片在线 | 宅男的天堂 | 亚洲综合图片区 | 久久久精品久久久久久 | 欧美系列在线观看 | 99视频国产精品 | 亚洲成人自拍偷拍 | 免费国产成人 | 欧美在线精品一区二区三区 | 在线观看视频福利 | 亚洲男人天堂视频 | av在线男人天堂 | 欧美夫妻性生活视频 | 欧美a视频在线观看 | 奶水喷溅虐奶乳奴h文 | 一本大道久久精品 | 亚洲免费在线视频观看 | 九一亚洲精品 | 日韩欧美亚洲天堂 | 日b视频在线观看 | 久久久精品一区二区涩爱 | 天天综合av | 538国产精品一区二区 | 精品无码m3u8在线观看 | 日日操天天射 | 中文字幕在线播放一区二区 | 亚洲成人网页 | 国产精品1024 | 国产一区二区三区四区hd | 九九色视频 | 免费h片网站 | 免费一级大片 | 国产做爰全免费的视频软件 | 精品无码一级毛片免费 | 日本一区二区三区视频在线观看 | 韩国成人理伦片免费播放 | 亚洲在线播放 | a视频免费在线观看 | 国产女人被狂躁到高潮小说 | 麻豆三级视频 | 色婷婷av一区二区三区在线观看 | 中文字幕一区不卡 | 91精品国产综合久久国产大片 | 清冷学长被爆c躁到高潮失禁 | 日韩网站在线播放 | 怡春院在线视频 | 国产欧美日韩在线播放 | 久久爱一区二区 | 天天综合干 | 伊人春色影院 | 91亚洲国产成人久久精品麻豆 | 黑人性生活视频 | 中文字幕在线字幕中文 | 娇妻之欲海泛舟无弹窗笔趣阁 | 99在线精品视频 | 欧美理论视频 | 久久精品亚洲天堂 | 九一亚洲精品 | 蜜乳av网站 | av天堂一区 | 超碰在97| 99久久久无码国产精品衣服 | 色综合中文综合网 | 夜夜爽av福利精品导航 | 欧美激情视频一区二区三区不卡 | 国产手机在线视频 | 丰满少妇一级片 | 欧美大片视频在线观看 | 中文字幕在线视频免费观看 | 亚洲av网址在线 | av资源免费 | av免费网站 | 欧美日韩在线播放 | 做爰无遮挡三级 | 亚洲日b视频 | 免费av地址 | 永久黄网站色视频免费观看w | a一级网站 | 亚洲一区二区三区在线观看视频 | 午夜免费播放观看在线视频 | 成人免费视频免费观看 | 国产成人在线看 | 精品一区二区在线播放 | 天天操天天做 | 在线免费播放 | 精品久久久视频 | 91极品身材尤物theporn | 深爱激情av | 久久久天天| 国产精品久久久久久久蜜臀 | 成人深夜福利 | 久久亚洲精品视频 | 日批av| 秋霞在线视频观看 | 免费观看亚洲视频 |