日韩性视频-久久久蜜桃-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的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 99re免费视频精品全部 | 中文在线观看高清视频 | 色网站免费看 | 毛片av在线 | 精品成人在线观看 | 亚洲av无码国产综合专区 | 成人一区二区电影 | 色综合天天射 | 亚洲免费中文 | 国产精品男女 | 99热在线只有精品 | 少妇一区二区三区四区 | 少妇一级视频 | 青青草视频免费播放 | 免费日本黄色片 | 成人在线视频网址 | 性生活网址 | 欧美大浪妇猛交饥渴大叫 | 性色在线| 日日爱av| 九色porny原创自拍 | 国产精品日韩在线观看 | 国产午夜在线观看 | 欧美特级特黄aaaaaa在线看 | 中文字幕免费高清在线 | 久操免费在线 | 男女考妣视频 | 另类小说一区二区 | 字幕网av | 芒果视频污污 | 在线看av网址 | 国产精品黄网站 | 日韩性高潮 | 99久久久久成人国产免费 | 激情欧美综合 | 一区二区亚洲视频 | 一区在线不卡 | 久久精品亚洲一区 | 爱情岛论坛亚洲自拍 | 91国产在线免费观看 | 日本视频在线播放 | 亚洲蜜桃av一区二区 | 亚洲欧洲色图 | 爱爱爱爱网 | 九九自拍| 日本免费一二三区 | 狠狠干精品 | 三级网站在线播放 | 另类欧美亚洲 | 国产真实偷伦视频 | 成人免费在线观看网站 | 成人午夜淫片免费观看 | 午夜a级片 | 久久色播 | 亚洲精品一区二区三区新线路 | 日韩高清中文字幕 | 手机电影在线观看 | 少妇按摩一区二区三区 | 色狠狠av| 日韩每日更新 | 免费在线视频一区 | 日韩欧美中文字幕在线播放 | 精品国精品国产自在久不卡 | 欧美性一区二区 | 爱爱色图 | 国产男人搡女人免费视频 | 色视频导航| 久久久久少妇 | 午夜av导航 | 好吊日免费视频 | 狼人精品一区二区三区在线 | 日本男女网站 | 久久精品国产亚洲AV成人婷婷 | 国产成人手机视频 | 麻豆视频国产精品 | 九九av在线| 色女人网站 | 天天舔天天舔 | 一级网站在线观看 | 国产又粗又猛又爽又黄的视频一 | 久久黄色小说 | 国产精品性爱在线 | 99精品欧美一区二区 | 驯服少爷漫画免费观看下拉式漫画 | 亚洲一区二区三区日韩 | 一区二区视频网站 | 手机免费av片 | 蜜臀久久99精品久久久久久宅男 | 国产不卡视频在线观看 | 国产精品毛片一区二区在线看 | 热久久最新网址 | 国产又粗又猛又爽 | 女人被男人躁得好爽免费视频 | 精品成人一区二区三区久久精品 | 日韩天堂| 美女午夜激情 | 婷婷色吧 | 337p色噜噜 | a色网站 |