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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Kubernetes 部署 Ingress 控制器 Traefik v1.7.4

發(fā)布時(shí)間:2025/3/11 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kubernetes 部署 Ingress 控制器 Traefik v1.7.4 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

標(biāo)簽:?kubernetes???ingress???traefik???nginx???haproxy???kong??

    • 介紹
    • Traefik
    • Ingress 對(duì)象

上節(jié)課我們學(xué)習(xí)了在Kubernetes集群內(nèi)部使用kube-dns實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)的功能,那么我們部署在Kubernetes集群中的應(yīng)用如何暴露給外部的用戶使用呢?我們知道前面我們使用 NodePort 和 LoadBlancer 類型的 Service 可以實(shí)現(xiàn)把應(yīng)用暴露給外部用戶使用,除此之外,Kubernetes 還為我們提供了一個(gè)非常重要的資源對(duì)象可以用來(lái)暴露服務(wù)給外部用戶,那就是?ingress。對(duì)于小規(guī)模的應(yīng)用我們使用NodePort或許能夠滿足我們的需求,但是當(dāng)你的應(yīng)用越來(lái)越多的時(shí)候,你就會(huì)發(fā)現(xiàn)對(duì)于 NodePort 的管理就非常麻煩了,這個(gè)時(shí)候使用 ingress 就非常方便了,可以避免管理大量的 Port。

介紹

Ingress其實(shí)就是從 kuberenets 集群外部訪問(wèn)集群的一個(gè)入口,將外部的請(qǐng)求轉(zhuǎn)發(fā)到集群內(nèi)不同的 Service 上,其實(shí)就相當(dāng)于 nginx、haproxy 等負(fù)載均衡代理服務(wù)器,有的同學(xué)可能覺得我們直接使用 nginx 就實(shí)現(xiàn)了,但是只使用 nginx 這種方式有很大缺陷,每次有新服務(wù)加入的時(shí)候怎么改 Nginx 配置?不可能讓我們?nèi)ナ謩?dòng)更改或者滾動(dòng)更新前端的 Nginx Pod 吧?那我們?cè)偌由弦粋€(gè)服務(wù)發(fā)現(xiàn)的工具比如 consul 如何?貌似是可以,對(duì)吧?而且在之前單獨(dú)使用 docker 的時(shí)候,這種方式已經(jīng)使用得很普遍了,Ingress 實(shí)際上就是這樣實(shí)現(xiàn)的,只是服務(wù)發(fā)現(xiàn)的功能自己實(shí)現(xiàn)了,不需要使用第三方的服務(wù)了,然后再加上一個(gè)域名規(guī)則定義,路由信息的刷新需要一個(gè)靠 Ingress controller 來(lái)提供。

Ingress controller 可以理解為一個(gè)監(jiān)聽器,通過(guò)不斷地與 kube-apiserver 打交道,實(shí)時(shí)的感知后端 service、pod 的變化,當(dāng)?shù)玫竭@些變化信息后,Ingress controller 再結(jié)合 Ingress 的配置,更新反向代理負(fù)載均衡器,達(dá)到服務(wù)發(fā)現(xiàn)的作用。其實(shí)這點(diǎn)和服務(wù)發(fā)現(xiàn)工具 consul consul-template 非常類似。

現(xiàn)在可以供大家使用的 Ingress controller 有很多,比如?traefik、nginx-controller、Kubernetes Ingress Controller for Kong、HAProxy Ingress controller,當(dāng)然你也可以自己實(shí)現(xiàn)一個(gè) Ingress Controller,現(xiàn)在普遍用得較多的是 traefik 和 nginx-controller,traefik 的性能較 nginx-controller 差,但是配置使用要簡(jiǎn)單許多,我們這里會(huì)以更簡(jiǎn)單的 traefik 為例給大家介紹 ingress 的使用。

Traefik

Traefik 是一款開源的反向代理與負(fù)載均衡工具。它最大的優(yōu)點(diǎn)是能夠與常見的微服務(wù)系統(tǒng)直接整合,可以實(shí)現(xiàn)自動(dòng)化動(dòng)態(tài)配置。目前支持 Docker、Swarm、Mesos/Marathon、 Mesos、Kubernetes、Consul、Etcd、Zookeeper、BoltDB、Rest API 等等后端模型。

要使用 traefik,我們同樣需要部署 traefik 的 Pod,由于我們演示的集群中只有 master 節(jié)點(diǎn)有外網(wǎng)網(wǎng)卡,所以我們這里只有 master 這一個(gè)邊緣節(jié)點(diǎn),我們將 traefik 部署到該節(jié)點(diǎn)上即可。

首先,為安全起見我們這里使用 RBAC 安全認(rèn)證方式:(rbac.yaml):

--- apiVersion: v1 kind: ServiceAccount metadata:name: traefik-ingress-controllernamespace: kube-system --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1beta1 metadata:name: traefik-ingress-controller rules:- apiGroups:- ""resources:- services- endpoints- secretsverbs:- get- list- watch- apiGroups:- extensionsresources:- ingressesverbs:- get- list- watch --- 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

直接在集群中創(chuàng)建即可:

$ kubectl create -f rbac.yaml serviceaccount "traefik-ingress-controller" created clusterrole.rbac.authorization.k8s.io "traefik-ingress-controller" created clusterrolebinding.rbac.authorization.k8s.io "traefik-ingress-controller" created

然后使用 Deployment 來(lái)管理 Pod,直接使用官方的 traefik 鏡像部署即可(traefik.yaml)

--- apiVersion: apps/v1 kind: Deployment metadata:name: traefik-ingress-controllernamespace: kube-systemlabels:k8s-app: traefik-ingress-lb spec:replicas: 1selector:matchLabels:k8s-app: traefik-ingress-lbtemplate:metadata:labels:k8s-app: traefik-ingress-lbname: traefik-ingress-lbspec:serviceAccountName: traefik-ingress-controllerterminationGracePeriodSeconds: 60tolerations:- operator: "Exists"nodeSelector:kubernetes.io/hostname: mastercontainers:- image: traefik:v1.7.17name: traefik-ingress-lbports:- name: httpcontainerPort: 80- name: admincontainerPort: 8080args:- --api- --kubernetes- --logLevel=INFO --- kind: Service apiVersion: v1 metadata:name: traefik-ingress-servicenamespace: kube-system spec:selector:k8s-app: traefik-ingress-lbports:- protocol: TCPport: 80name: web- protocol: TCPport: 8080name: admintype: NodePort

直接創(chuàng)建上面的資源對(duì)象即可:

$ kubectl create -f traefik.yaml deployment.apps "traefik-ingress-controller" created service "traefik-ingress-service" created

要注意上面 yaml 文件:

tolerations: - operator: "Exists" nodeSelector:kubernetes.io/hostname: master

由于我們這里的特殊性,只有 master 節(jié)點(diǎn)有外網(wǎng)訪問(wèn)權(quán)限,所以我們使用nodeSelector標(biāo)簽將traefik的固定調(diào)度到master這個(gè)節(jié)點(diǎn)上,那么上面的tolerations是干什么的呢?這個(gè)是因?yàn)槲覀兗菏褂玫?kubeadm 安裝的,master 節(jié)點(diǎn)默認(rèn)是不能被普通應(yīng)用調(diào)度的,要被調(diào)度的話就需要添加這里的 tolerations 屬性,當(dāng)然如果你的集群和我們的不太一樣,直接去掉這里的調(diào)度策略就行。

nodeSelector 和 tolerations 都屬于 Pod 的調(diào)度策略,在后面的課程中會(huì)為大家講解。

traefik 還提供了一個(gè) web ui 工具,就是上面的 8080 端口對(duì)應(yīng)的服務(wù),為了能夠訪問(wèn)到該服務(wù),我們這里將服務(wù)設(shè)置成的 NodePort:

$ kubectl get pods -n kube-system -l k8s-app=traefik-ingress-lb -o wide NAME READY STATUS RESTARTS AGE IP NODE traefik-ingress-controller-57c4f787d9-bfhnl 1/1 Running 0 8m 10.244.0.18 master $ kubectl get svc -n kube-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ... traefik-ingress-service NodePort 10.102.183.112 <none> 80:30539/TCP,8080:30486/TCP 8m ...

現(xiàn)在在瀏覽器中輸入 master_node_ip:30486 就可以訪問(wèn)到 traefik 的 dashboard 了:

Ingress 對(duì)象

現(xiàn)在我們是通過(guò) NodePort 來(lái)訪問(wèn) traefik 的 Dashboard 的,那怎樣通過(guò) ingress 來(lái)訪問(wèn)呢? 首先,需要?jiǎng)?chuàng)建一個(gè) ingress 對(duì)象:(ingress.yaml)

apiVersion: extensions/v1beta1 kind: Ingress metadata:name: traefik-web-uinamespace: kube-systemannotations:kubernetes.io/ingress.class: traefik spec:rules:- host: traefik.haimaxy.comhttp:paths:- backend:serviceName: traefik-ingress-serviceservicePort: 8080

然后為 traefik dashboard 創(chuàng)建對(duì)應(yīng)的 ingress 對(duì)象:

$ kubectl create -f ingress.yaml ingress.extensions "traefik-web-ui" created

要注意上面的 ingress 對(duì)象的規(guī)則,特別是 rules 區(qū)域,我們這里是要為 traefik 的 dashboard 建立一個(gè) ingress 對(duì)象,所以這里的 serviceName 對(duì)應(yīng)的是上面我們創(chuàng)建的 traefik-ingress-service,端口也要注意對(duì)應(yīng) 8080 端口,為了避免端口更改,這里的 servicePort 的值也可以替換成上面定義的 port 的名字:admin

創(chuàng)建完成后,我們應(yīng)該怎么來(lái)測(cè)試呢?

  • 第一步,在本地的/etc/hosts里面添加上 traefik.haimaxy.com 與 master 節(jié)點(diǎn)外網(wǎng) IP 的映射關(guān)系
  • 第二步,在瀏覽器中訪問(wèn):http://traefik.haimaxy.com,我們會(huì)發(fā)現(xiàn)并沒有得到我們期望的?dashboard 界面,這是因?yàn)槲覀兩厦娌渴?traefik 的時(shí)候使用的是 NodePort 這種 Service 對(duì)象,所以我們只能通過(guò)上面的 30539 端口訪問(wèn)到我們的目標(biāo)對(duì)象:http://traefik.haimaxy.com:30539加上端口后我們發(fā)現(xiàn)可以訪問(wèn)到 dashboard 了,而且在 dashboard 當(dāng)中多了一條記錄,正是上面我們創(chuàng)建的 ingress 對(duì)象的數(shù)據(jù),我們還可以切換到 HEALTH 界面中,可以查看當(dāng)前 traefik 代理的服務(wù)的整體的健康狀態(tài)

  • 第三步,上面我們可以通過(guò)自定義域名加上端口可以訪問(wèn)我們的服務(wù)了,但是我們平時(shí)服務(wù)別人的服務(wù)是不是都是直接用的域名啊,http 或者 https 的,幾乎很少有在域名后面加上端口訪問(wèn)的吧?為什么?太麻煩啊,端口也記不住,要解決這個(gè)問(wèn)題,怎么辦,我們只需要把我們上面的 traefik 的核心應(yīng)用的端口隱射到 master 節(jié)點(diǎn)上的 80 端口,是不是就可以了,因?yàn)?http 默認(rèn)就是訪問(wèn) 80 端口,但是我們?cè)?Service 里面是添加的一個(gè) NodePort 類型的服務(wù),沒辦法隱射 80 端口,怎么辦?這里就可以直接在 Pod 中指定一個(gè) hostPort 即可,更改上面的 traefik.yaml 文件中的容器端口:

containers: - image: traefik name: traefik-ingress-lb ports: - name: httpcontainerPort: 80hostPort: 80 - name: admincontainerPort: 8080

添加以后hostPort: 80,然后更新應(yīng)用:

$ kubectl apply -f traefik.yaml

更新完成后,這個(gè)時(shí)候我們?cè)跒g覽器中直接使用域名方法測(cè)試下:

  • 第四步,正常來(lái)說(shuō),我們?nèi)绻凶约旱挠蛎?#xff0c;我們可以將我們的域名添加一條 DNS 記錄,解析到 master 的外網(wǎng) IP 上面,這樣任何人都可以通過(guò)域名來(lái)訪問(wèn)我的暴露的服務(wù)了。

如果你有多個(gè)邊緣節(jié)點(diǎn)的話,可以在每個(gè)邊緣節(jié)點(diǎn)上部署一個(gè) ingress-controller 服務(wù),然后在邊緣節(jié)點(diǎn)前面掛一個(gè)負(fù)載均衡器,比如 nginx,將所有的邊緣節(jié)點(diǎn)均作為這個(gè)負(fù)載均衡器的后端,這樣就可以實(shí)現(xiàn) ingress-controller 的高可用和負(fù)載均衡了。

到這里我們就通過(guò) ingress 對(duì)象對(duì)外成功暴露了一個(gè)服務(wù),下節(jié)課我們?cè)賮?lái)詳細(xì)了解 traefik 的更多用法。

總結(jié)

以上是生活随笔為你收集整理的Kubernetes 部署 Ingress 控制器 Traefik v1.7.4的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩一区网站 | 成人在线免费高清视频 | 国产污污视频在线观看 | 在线亚洲一区二区 | 琪琪久久 | 日韩性爰视频 | 午夜做爰xxxⅹ性高湖视频美国 | 国产v亚洲| 日韩av一区二区三区在线 | 亚洲永久在线观看 | 亚洲图片欧美在线 | 亚洲激情欧美色图 | 一级欧美在线 | 亚洲精品777 | 中文字幕va | 性欧美极品另类 | 午夜小视频在线观看 | 亚洲精品777 | 国产一区二区小视频 | 男女靠逼视频 | 久久亚洲精品中文字幕 | 日日干天天 | 午夜一本 | 精精国产 | 国产成人精品视频在线 | 国产日韩欧美日韩大片 | 国产奶水涨喷在线播放 | 亚洲黄色大全 | 婷婷综合一区 | av视觉盛宴 | 国产精品久久久久久亚洲av | 欧美 日韩 国产 在线观看 | 小珊的性放荡羞辱日记 | 亚洲视频在线观看免费 | 三级黄色小视频 | 夜夜久久久 | 老牛影视一区二区三区 | 国产精品一区在线播放 | 女性向av免费网站 | 亚洲激情在线观看视频 | 午夜国产在线视频 | 天堂8av | 北岛玲av在线| 久伊人| av中文字幕网站 | v99av | 不卡一二区 | 国产精品视频一区二区在线观看 | 少妇太紧太爽又黄又硬又爽 | 91欧美一区二区三区 | 欧美乱大交xxxxx潮喷l头像 | 成人交配视频 | 国产精品视频亚洲 | 亚洲综合二区 | 国产无毛av| 精品人妻一区二区色欲产成人 | 国产精品久久久久久久9999 | 国产做爰xxxⅹ性视频国 | 浪漫樱花在线观看高清动漫 | 香蕉精品在线 | 国产精品国色综合久久 | 国产精品乱码一区二三区小蝌蚪 | 色一情一交一乱一区二区三区 | free性满足hd国产精品久 | 国产在线视频91 | av网址免费 | 亚洲人成人一区二区在线观看 | 国产午夜不卡 | 亚洲av永久无码精品放毛片 | 一女双乳被两男吸视频 | 女女百合高h喷汁呻吟玩具 www.亚洲一区 | 免费观看av毛片 | 私密视频在线观看 | 鸥美一级片 | 久久九九久精品国产免费直播 | 这里只有精品免费视频 | www.黄色网 | 美女网站免费黄 | 中出亚洲 | 琪琪五月天 | 97香蕉久久超级碰碰高清版 | 超碰中文字幕在线 | 国产激情av一区二区三区 | 久久国产区| 91在线超碰| 国产成人短视频在线观看 | 免费av小说 | 午夜视频在线观看一区二区 | 日韩视频一区二区三区在线播放免费观看 | 老牛影视一区二区三区 | 国产嫩草影院久久久 | 成人av中文解说水果派 | 亚洲欧洲日本一区二区三区 | 婷婷久久综合网 | 人人爽人人爽人人爽人人爽 | 99视频在线精品免费观看2 | 亚洲av无码乱码国产精品 | 欧美日韩精品一区二区三区四区 | 日本特黄色片 |