国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

使用Traefik引導(dǎo)Kubernetes流量

系統(tǒng) Linux
在本文中,我們將部署幾個(gè)簡(jiǎn)單的網(wǎng)站,并學(xué)習(xí)如何使用 Traefik 將來(lái)自外部世界的流量引入到我們的集群中。之后,我們還將學(xué)習(xí)如何刪除 Kubernetes 資源。

[[321452]]

將流量引入 Kubernetes 樹(shù)莓派集群的分步指南。

在本文中,我們將部署幾個(gè)簡(jiǎn)單的網(wǎng)站,并學(xué)習(xí)如何使用 Traefik 將來(lái)自外部世界的流量引入到我們的集群中。之后,我們還將學(xué)習(xí)如何刪除 Kubernetes 資源。讓我們開(kāi)始吧! 

準(zhǔn)備

要繼續(xù)閱讀本文,你只需要我們?cè)谏弦黄恼轮袠?gòu)建的 k3s 樹(shù)莓派集群。由于你的集群將從網(wǎng)絡(luò)上拉取鏡像,因此該集群需要能夠訪問(wèn)互聯(lián)網(wǎng)。

出于解釋目的,本文將顯示一些配置文件和示例 HTML 文件。所有示例文件都可以在此處下載。

部署一個(gè)簡(jiǎn)單的網(wǎng)站

之前,我們使用 kubectl 進(jìn)行了直接部署。但是,這不是典型的部署方法。一般情況都會(huì)使用 YAML 配置文件,這也是我們要在本文中使用的配置文件。我們將從頂部開(kāi)始,并以自頂向下的方式創(chuàng)建該配置文件。

部署配置

首先是部署配置。配置如下所示,并在下面進(jìn)行說(shuō)明。我通常以 Kubernetes 文檔中的示例為起點(diǎn),然后根據(jù)需要對(duì)其進(jìn)行修改。例如,下面的配置是復(fù)制了部署文檔中的示例后修改的。

創(chuàng)建一個(gè)文件 mysite.yaml,其內(nèi)容如下:

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: mysite-nginx
  5. labels:
  6. app: mysite-nginx
  7. spec:
  8. replicas: 1
  9. selector:
  10. matchLabels:
  11. app: mysite-nginx
  12. template:
  13. metadata:
  14. labels:
  15. app: mysite-nginx
  16. spec:
  17. containers:
  18. - name: nginx
  19. image: nginx
  20. ports:
  21. - containerPort: 80

其中大部分是樣板。重要的部分,我們會(huì)將該部署命名為 mysite-nginx,并為其加上同名的 app 標(biāo)簽。我們指定了一個(gè)副本replica,這意味著將只創(chuàng)建一個(gè) Pod。我們還指定了一個(gè)容器,我們將其命名為 nginx。我們將鏡像image指定為 nginx。這意味著在部署時(shí),k3s 將從 DockerHub 下載 nginx 鏡像并從中創(chuàng)建一個(gè) Pod。最后,我們指定了容器端口containerPort80,這只意味著在容器內(nèi)部 Pod 會(huì)監(jiān)聽(tīng) 80 端口。

我在上面強(qiáng)調(diào)了“在容器內(nèi)部”,因?yàn)檫@是一個(gè)重要的區(qū)別。由于我們是按容器配置的,因此只能在容器內(nèi)部訪問(wèn)它,并且進(jìn)一步將其限制為內(nèi)部網(wǎng)絡(luò)。這對(duì)于允許多個(gè)容器在同一容器端口上監(jiān)聽(tīng)所是必要的。換句話說(shuō),通過(guò)這種配置,其他一些 Pod 也可以在其容器端口 80 上偵聽(tīng),并且不會(huì)與此容器沖突。為了提供對(duì)該 Pod 的正式訪問(wèn)權(quán)限,我們需要一個(gè)服務(wù)service配置。

服務(wù)配置

在 Kubernetes 中,服務(wù)service是一種抽象。它提供了一種訪問(wèn) Pod 或 Pod 集合的方法。當(dāng)連接到服務(wù)時(shí),服務(wù)會(huì)路由到單個(gè) Pod,或者如果定義了多個(gè) Pod 副本,會(huì)通過(guò)負(fù)載均衡路由到多個(gè) Pod。

可以在同一配置文件中指定該服務(wù),這就是我們將在此處要做的。用 --- 分隔配置區(qū)域,將以下內(nèi)容添加到 mysite.yaml 中:

  1. ---
  2. apiVersion: v1
  3. kind: Service
  4. metadata:
  5. name: mysite-nginx-service
  6. spec:
  7. selector:
  8. app: mysite-nginx
  9. ports:
  10. - protocol: TCP
  11. port: 80

在此配置中,我們將服務(wù)命名為 mysite-nginx-service。我們提供了一個(gè)選擇器selectorapp: mysite-nginx。這是服務(wù)選擇其路由到的應(yīng)用程序容器的方式。請(qǐng)記住,我們?yōu)槿萜魈峁┝?app 標(biāo)簽:mysite-nginx 。這就是服務(wù)用來(lái)查找我們的容器的方式。最后,我們指定服務(wù)協(xié)議為 TCP,在端口 80 上監(jiān)聽(tīng)。

入口配置

入口Ingress配置指定了如何將流量從集群外部傳遞到集群內(nèi)部的服務(wù)。請(qǐng)記住,k3s 預(yù)先配置了 Traefik 作為入口控制器。因此,我們將編寫(xiě)特定于 Traefik 的入口配置。將以下內(nèi)容添加到 mysite.yaml 中(不要忘了用 --- 分隔):

  1. ---
  2. apiVersion: networking.k8s.io/v1beta1
  3. kind: Ingress
  4. metadata:
  5. name: mysite-nginx-ingress
  6. annotations:
  7. kubernetes.io/ingress.class: "traefik"
  8. spec:
  9. rules:
  10. - http:
  11. paths:
  12. - path: /
  13. backend:
  14. serviceName: mysite-nginx-service
  15. servicePort: 80

在此配置中,我們將入口記錄命名為 mysite-nginx-ingress。我們告訴 Kubernetes,我們希望 traefik 成為我們的入口控制器,再加上 kubernetes.io/ingress.class 的注解。

規(guī)則rules部分中,我們基本上是說(shuō),當(dāng) http 流量進(jìn)入時(shí),并且 path 匹配 /(或其下的任何內(nèi)容),將其路由到由 serviceName mysite-nginx-service 指定的后端backend服務(wù)中,并將其路由到 servicePort 80。這會(huì)將傳入的 HTTP 流量連接到我們之前定義的服務(wù)。

需要部署的東西

就配置而言,就是這樣了。如果我們現(xiàn)在部署,我們將獲得默認(rèn)的 nginx 頁(yè)面,但這不是我們想要的。讓我們創(chuàng)建一些簡(jiǎn)單但可自定義的部署方式。創(chuàng)建具有以下內(nèi)容的文件 index.html

  1. <html>
  2. <head><title>K3S!</title>
  3. <style>
  4. html {
  5. font-size: 62.5%;
  6. }
  7. body {
  8. font-family: sans-serif;
  9. background-color: midnightblue;
  10. color: white;
  11. display: flex;
  12. flex-direction: column;
  13. justify-content: center;
  14. height: 100vh;
  15. }
  16. div {
  17. text-align: center;
  18. font-size: 8rem;
  19. text-shadow: 3px 3px 4px dimgrey;
  20. }
  21. </style>
  22. </head>
  23. <body>
  24. <div>Hello from K3S!</div>
  25. </body>
  26. </html>

我們尚未介紹 Kubernetes 中的存儲(chǔ)機(jī)制,因此在這里我們偷懶一下,僅將該文件存儲(chǔ)在 Kubernetes 配置映射中。這不是我們推薦的部署網(wǎng)站的方式,但對(duì)于我們的目的來(lái)說(shuō)是可行的。運(yùn)行以下命令:

  1. kubectl create configmap mysite-html --from-file index.html

該命令從本地文件 index.html 創(chuàng)建名為 mysite-html配置映射configmap資源。這實(shí)際上是在 Kubernetes 資源中存儲(chǔ)一個(gè)文件(或一組文件),我們可以在配置中調(diào)出該文件。它通常用于存儲(chǔ)配置文件(因此而得名),我們?cè)谶@里稍加濫用。在以后的文章中,我們將討論 Kubernetes 中適當(dāng)?shù)拇鎯?chǔ)解決方案。

創(chuàng)建配置映射后,讓我們將其掛載在我們的 nginx 容器中。我們分兩個(gè)步驟進(jìn)行。首先,我們需要指定一個(gè)volume來(lái)調(diào)出配置映射。然后我們需要將該卷掛載到 nginx 容器中。通過(guò)在 mysite.yaml 中的 container 后面的 spec 標(biāo)簽下添加以下內(nèi)容來(lái)完成第一步:

  1.       volumes:
  2.       - name: html-volume
  3.         configMap:
  4.           name: mysite-html

這告訴 Kubernetes 我們要定義一個(gè)名為 html-volume 的卷,并且該卷應(yīng)包含名為 html-volume(我們?cè)谏弦徊街袆?chuàng)建的)的配置映射的內(nèi)容。

接下來(lái),在 nginx 容器規(guī)范中的端口ports下方,添加以下內(nèi)容:

  1.         volumeMounts:
  2.         - name: html-volume
  3.           mountPath: /usr/share/nginx/html

這告訴 Kubernetes,對(duì)于 nginx 容器,我們想在容器中的 /usr/share/nginx/html 路徑上掛載名為 html-volume 的卷。 為什么要使用 /usr/share/nginx/html?那個(gè)位置就是 nginx 鏡像提供 HTML 服務(wù)的地方。通過(guò)在該路徑上掛載卷,我們用該卷內(nèi)容替換了默認(rèn)內(nèi)容。

作為參考,配置文件的 deployment 部分現(xiàn)在應(yīng)如下所示:

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4.   name: mysite-nginx
  5.   labels:
  6.     app: mysite-nginx
  7. spec:
  8.   replicas: 1
  9.   selector:
  10.     matchLabels:
  11.       app: mysite-nginx
  12.   template:
  13.     metadata:
  14.       labels:
  15.         app: mysite-nginx
  16.     spec:
  17.       containers:
  18.       - name: nginx
  19.         image: nginx
  20.         ports:
  21.         - containerPort: 80
  22.         volumeMounts:
  23.         - name: html-volume
  24.           mountPath: /usr/share/nginx/html
  25.       volumes:
  26.       - name: html-volume
  27.         configMap:
  28.           name: mysite-html

部署它!

現(xiàn)在我們準(zhǔn)備部署! 我們可以這樣做:

  1. kubectl apply -f mysite.yaml

你應(yīng)該看到類似于以下內(nèi)容:

  1. deployment.apps/mysite-nginx created
  2. service/mysite-nginx-service created
  3. ingress.networking.k8s.io/mysite-nginx-ingress created

這意味著 Kubernetes 為我們指定的三個(gè)配置分別創(chuàng)建了資源。使用以下方法檢查 Pod 的狀態(tài):

  1. kubectl get pods

如果看到狀態(tài)為 ContainerCreating,請(qǐng)給它一些時(shí)間并再次運(yùn)行 kubectl get pods。通常,第一次會(huì)花一些時(shí)間,因?yàn)?k3s 必須下載 nginx 鏡像來(lái)創(chuàng)建 Pod。一段時(shí)間后,你應(yīng)該看到 Running 的狀態(tài)。

嘗試一下!

Pod 運(yùn)行之后,就該嘗試了。打開(kāi)瀏覽器,然后在地址欄中輸入 kmaster

 

[[321453]]

恭喜你!你已經(jīng)在 k3s 集群上部署了一個(gè)網(wǎng)站!

另一個(gè)

因此,現(xiàn)在我們有了一個(gè)運(yùn)行單個(gè)網(wǎng)站的整個(gè) k3s 集群。但是我們可以有更多的網(wǎng)站!如果我們要在同一集群中提供另一個(gè)網(wǎng)站怎么辦?讓我們看看如何做到這一點(diǎn)。

同樣,我們需要部署一些東西。碰巧我的狗有一條她想讓全世界都知道的信息,她想了好久了。因此,我專門為她制作了一些 HTML(可從示例 zip 文件中獲得)。同樣,我們將使用配置映射的技巧來(lái)托管這些 HTML。這次我們將把整個(gè)目錄(html 目錄)放到配置映射中,但是調(diào)用是相同的。

  1. kubectl create configmap mydog-html --from-file html

現(xiàn)在,我們需要為此站點(diǎn)創(chuàng)建一個(gè)配置文件。它幾乎與用于 mysite.yaml 的完全相同,因此首先將 mysite.yaml 復(fù)制為 mydog.yaml?,F(xiàn)在將 mydog.yaml 修改為:

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: mydog-nginx
  5. labels:
  6. app: mydog-nginx
  7. spec:
  8. replicas: 1
  9. selector:
  10. matchLabels:
  11. app: mydog-nginx
  12. template:
  13. metadata:
  14. labels:
  15. app: mydog-nginx
  16. spec:
  17. containers:
  18. - name: nginx
  19. image: nginx
  20. ports:
  21. - containerPort: 80
  22. volumeMounts:
  23. - name: html-volume
  24. mountPath: /usr/share/nginx/html
  25. volumes:
  26. - name: html-volume
  27. configMap:
  28. name: mydog-html
  29. ---
  30. apiVersion: v1
  31. kind: Service
  32. metadata:
  33. name: mydog-nginx-service
  34. spec:
  35. selector:
  36. app: mydog-nginx
  37. ports:
  38. - protocol: TCP
  39. port: 80
  40. ---
  41. apiVersion: networking.k8s.io/v1beta1
  42. kind: Ingress
  43. metadata:
  44. name: mydog-nginx-ingress
  45. annotations:
  46. kubernetes.io/ingress.class: "traefik"
  47. traefik.frontend.rule.type: PathPrefixStrip
  48. spec:
  49. rules:
  50. - http:
  51. paths:
  52. - path: /mydog
  53. backend:
  54. serviceName: mydog-nginx-service
  55. servicePort: 80

我們只需進(jìn)行搜索并將 mysite 替換為 mydog即可完成大多數(shù)修改。其他兩個(gè)修改在入口部分中。我們將 path 更改為 /mydog,并添加了一個(gè)注解 traefik.frontend.rule.type: PathPrefixStrip

/mydog 路徑的規(guī)范指示 Traefik 將以 /mydog 路徑開(kāi)頭的所有傳入請(qǐng)求路由到 mydog-nginx-service。任何其他路徑將繼續(xù)路由到 mysite-nginx-service

新的注解 PathPrefixStrip 告訴 Traefik 在將請(qǐng)求發(fā)送到 mydog-nginx-service 之前先去除前綴 /mydog。我們這樣做是因?yàn)?mydog-nginx 應(yīng)用程序不需要前綴。這意味著我們可以簡(jiǎn)單地通過(guò)更改入口記錄中的前綴來(lái)更改掛載的服務(wù)的位置。

現(xiàn)在我們可以像以前一樣進(jìn)行部署:

  1. kubectl apply -f mydog.yaml

現(xiàn)在,我的狗的消息應(yīng)該可以在 http://kmaster/mydog/ 上找到。

 

呼!消息發(fā)出去了!也許今晚我們都可以睡一覺(jué)。

因此,現(xiàn)在,我們有了一個(gè) k3s 集群,該集群托管了兩個(gè)網(wǎng)站,Traefik 根據(jù)路徑名決定將請(qǐng)求傳遞給哪個(gè)服務(wù)!但是,不僅限于基于路徑的路由,我們也可以使用基于主機(jī)名的路由,我們將在以后的文章中進(jìn)行探討。

另外,我們剛剛托管的網(wǎng)站是標(biāo)準(zhǔn)的未加密 HTML 網(wǎng)站,而如今的所有內(nèi)容都使用 SSL/TLS 加密。在我們的下一篇文章中,我們將為 k3s 集群添加支持以托管 SSL/TLS HTTPS 站點(diǎn)!

清理

在開(kāi)始之前,由于本文主要涉及的是示例站點(diǎn),因此我想向你展示如何刪除內(nèi)容,以防萬(wàn)一你不希望將這些示例丟在集群中。

對(duì)于大多數(shù)配置,只需使用與部署時(shí)使用的相同配置文件運(yùn)行 delete 命令即可撤消配置。因此,讓我們同時(shí)清理 mysitemydog。

  1. kubectl delete -f mysite.yaml
  2. kubectl delete -f mydog.yaml

由于我們是手動(dòng)創(chuàng)建配置映射的,因此我們也需要手動(dòng)刪除它們。

  1. kubectl delete configmap mysite-html
  2. kubectl delete configmap mydog-html

現(xiàn)在,如果我們執(zhí)行 kubectl get pods,我們應(yīng)該看到我們的 nginx Pod 不存在了。

  1. $ kubectl get pods
  2. No resources found in default namespace.

一切都清理了。 

責(zé)任編輯:龐桂玉 來(lái)源: Linux中國(guó)
相關(guān)推薦

2022-01-06 07:46:01

Traefik 開(kāi)源Gateway API

2022-07-05 08:10:25

Kubernetes云原生

2024-03-15 11:27:06

2024-04-26 11:58:48

云原生容器

2021-10-15 08:27:14

Kubernetes 工具Mizu

2018-12-03 13:50:03

流量網(wǎng)絡(luò)負(fù)載均衡

2018-12-03 08:31:40

負(fù)載均衡解密Web 服務(wù)器

2021-09-30 08:00:00

Kubernetes容器工具

2022-06-27 19:16:12

KubernetesK8s 集群

2023-11-08 00:23:08

網(wǎng)關(guān)API

2023-10-27 12:36:37

gRPCKubernetes

2011-09-01 13:58:24

UbuntuBootmgr

2022-06-07 19:48:07

TraefikProxy插件

2010-05-10 14:20:22

Unix引導(dǎo)串

2024-06-11 00:00:01

AIKubernete技術(shù)

2023-09-05 07:24:33

Traefik加權(quán)輪詢

2021-12-24 09:52:31

Traefik Log4J 漏洞

2025-04-17 09:09:29

2021-12-28 15:38:46

Traefik中間件插件

2023-08-29 09:15:48

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

狠狠久久亚洲欧美| 亚洲午夜激情在线| aⅴ在线视频男人的天堂| 亚洲一区 在线播放| 97国产一区二区精品久久呦| 91麻豆精品国产自产在线| 91亚洲午夜精品久久久久久| 伊人久久大香线蕉综合热线| 99精品美女视频在线观看热舞| 你懂的好爽在线观看| 国产网站免费在线观看| 精品人伦一区二区三区| 欧美激情亚洲国产| 亚洲成人在线网| 亚洲五月六月丁香激情| 国产精品18久久久久久久久久久久| 999视频精品| 国产精品2区| 欧美日本高清| fc2ppv完全颜出在线播放| 天天综合中文字幕| 91久久久久久久| 欧美激情一级精品国产| 精品国产91久久久久久久妲己| 亚洲一区二区三区三| av动漫一区二区| 免费在线欧美黄色| 久久一区91| 玖玖精品一区| 中文在线8资源库| 国产黄在线观看免费观看不卡| 国产一级特黄a大片免费| 亚洲一区美女| 福利精品视频| 日韩免费观看在线观看| 中文字幕最新精品| 欧美精品一区二区三区四区| 日本乱码高清不卡字幕| 亚洲免费伊人电影| 久久综合av免费| 国产一区二区在线视频| 欧美日韩18| 日韩电影一区| 日本亚洲不卡| 国产精品一区二区三区四区在线观看| 午夜av在线播放| 丁香婷婷在线观看| 在线三级av| 初尝黑人巨炮波多野结衣电影| 欧美亚洲一二三区| www.国产亚洲| 日韩最新中文字幕| 一区二区三区四区| 精品免费二区三区三区高中清不卡 | 中文字幕毛片| 亚洲an天堂an在线观看| 波多野结衣家庭教师在线| 一区二区三区视频在线播放| 欧美日韩在线观看一区| 国产精品av一区| 亚洲综合国产精品| 国产日韩在线观看av| 国产成人av网址| 欧美诱惑福利视频| 欧美极品少妇xxxxⅹ免费视频| 日韩日本欧美亚洲| 亚洲最新在线视频| 色哟哟亚洲精品一区二区| 一区二区三区久久精品| 在线观看日韩视频| 伊人久久综合97精品| 一区二区三区视频观看| 亚洲精品按摩视频| 亚洲国产精品99| 国产视频欧美视频| 中国日韩欧美久久久久久久久| 亚洲一区二区福利| 中文字幕一区二区三区电影| 日韩小视频网址| 欧美老女人xx| 国精产品一区一区三区有限在线| 欧美激情视频三区| 久久人人爽国产| 日本午夜精品理论片a级appf发布| 78m国产成人精品视频| 日本久久久久久久| 91精品国产综合久久香蕉| 亚洲自拍欧美色图| 国产精品 日韩| 日本一区不卡| 丁香色欲久久久久久综合网| 免费看国产曰批40分钟| 国产精品50p| 琪琪五月天综合婷婷| 伊人精彩视频| 亚洲成人福利| 国产精品秘入口| 日韩经典av| 日本精品另类| 欧美天堂影院| 欧美777四色影| 久久综合伊人| 国产99久久久精品| 久久久99精品免费观看| 亚洲综合色成人| 色婷婷综合久久久久中文一区二区| 欧美裸体一区二区三区| 日韩精品高清视频| 久久精品人人做人人爽| 欧美在线视频导航| 国产66精品久久久久999小说| 亚洲精品国产精品久久| 国产超级av在线| 免费在线观看麻豆视频 | 久草视频视频在线播放| 日本动漫理论片在线观看网站| 一级毛片久久久| 白白在线精品| 中文字幕一区二区三区欧美日韩| 在线亚洲自拍| www.日韩av| 亚洲五码中文字幕| 欧美一级搡bbbb搡bbbb| 亚洲跨种族黑人xxx| 欧美贵妇videos办公室| 亚洲xxxx3d| a级网站在线观看| a优女a优女片| 老司机在线看片网av| 青青在线精品| 日韩一区二区三区免费播放| 日韩主播视频在线| 久久久久久久久免费| 一本大道av一区二区在线播放| 亚洲精品国产综合久久| 欧美一级大片在线观看| 国语精品中文字幕| 欧美牲交a欧美牲交| 亚洲成人av在线影院| 日韩精品极品| 九色精品91| 免播放器亚洲一区| 亚洲欧洲精品一区二区精品久久久 | 成人性a激情免费视频| 日韩美女网站| 日韩精品第二页| 亚洲精品久久久| 乱一区二区av| 亚洲精品ww久久久久久p站| 日韩欧美激情一区| 91av中文字幕| 少妇特黄a一区二区三区 | 一本一道久久a久久精品综合| 无套内精的网站| 性欧美猛交videos| 欧美一性一交| 理论片日本一区| 一区二区三区四区中文字幕| 亚洲国模精品私拍| 国产精品午夜一区二区欲梦| 欧美一级中文字幕| 色哟哟在线观看| 国产精品2区| 日韩不卡免费视频| 亚洲国产精品麻豆| 中文字幕无线精品亚洲乱码一区 | 日韩私人影院| 永久免费观看精品视频| 激情亚洲成人| 国产精品国产三级国产普通话蜜臀 | 欧美日韩福利视频| 欧美日韩一区二区视频在线| 美女免费免费看网站| 日韩伦理福利| 亚洲一级网站| 亚洲精品国产一区二区精华液| 亚洲香蕉成人av网站在线观看| 91久久久久久久一区二区| 国产成人久久777777| 人人超在线公开视频| 日韩在线二区| 91在线观看视频| 亚洲精品理论电影| www.久久爱.cn| 国产经典视频一区| 日本久久久久| 久久99久久99精品免视看婷婷 | 一区二区三区入口| 欲香欲色天天天综合和网| 亚洲午夜极品| 亚洲综合在线五月| 欧美大片免费看| 特色特色大片在线| 麻豆影视在线观看_| 日韩免费高清| √…a在线天堂一区| 色婷婷综合久久久久中文字幕1| 欧美日韩精品免费在线观看视频| 在线中文字幕视频| 欧美精品国产白浆久久久久|