国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

k8s ingress (二)

這篇具有很好參考價值的文章主要介紹了k8s ingress (二)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

k8s ingress ()

Ingress介紹

在前面課程中已經(jīng)提到,Service對集群之外暴露服務(wù)的主要方式有兩種:NodePort和LoadBalancer,但是這兩種方式,都有一定的缺點(diǎn):

NodePort方式的缺點(diǎn)是會占用很多集群機(jī)器的端口,那么當(dāng)集群服務(wù)變多的時候,這個缺點(diǎn)就愈發(fā)明顯

LB方式的缺點(diǎn)是每個service需要一個LB,浪費(fèi)、麻煩,并且需要kubernetes之外的設(shè)備的支持。

基于這種現(xiàn)狀,kubernetes提供了Ingress資源對象,Ingress只需要一個NodePort或者一個LB就可以滿足暴露多個Service的需求。工作機(jī)制大致如下圖表示:

k8s ingress (二),貪心算法,算法

實(shí)際上,Ingress相當(dāng)于一個7層的負(fù)載均衡器,是kubernetes對反向代理的一個抽象,它的工作原理類似于Nginx,可以理解成在Ingress里建立諸多映射規(guī)則,Ingress Controller通過監(jiān)聽這些配置規(guī)則并轉(zhuǎn)化成Nginx的配置,然后對外部提供服務(wù)。在這里有兩個核心概念:

ingress:kubernetes中的一個對象,作用就定義請求如何轉(zhuǎn)發(fā)到service的規(guī)則

ingress controller:具體實(shí)現(xiàn)發(fā)向代理及負(fù)載均衡的程序,對ingress定義的規(guī)則進(jìn)行解析,根據(jù)配置的規(guī)則來實(shí)現(xiàn)請求轉(zhuǎn)發(fā),實(shí)現(xiàn)方式有很多,比如Nginx、Contour、Haproxy等等。

Ingress(以Nginx為例)的工作原理如下:

用戶編寫Ingress規(guī)則,說明哪個域名對應(yīng)kubernetes集群中歐冠的哪個Service

Ingress控制器動態(tài)感知Ingress服務(wù)規(guī)則的變化,然后生成一段對應(yīng)的Nginx配置

Ingress控制器會將生成的Nginx配置寫入到一個運(yùn)行著Nginx服務(wù)中,并動態(tài)更新

到此為止,其實(shí)真正在工作的就是Nginx了,內(nèi)部配置了用戶定義的請求轉(zhuǎn)發(fā)規(guī)則

Ingress 環(huán)境準(zhǔn)備

k8s ingress (二),貪心算法,算法

在ELB下的監(jiān)聽器中,可以通過監(jiān)聽器協(xié)議和端口來判斷是4層還是7層的。

如果監(jiān)聽器協(xié)議是TCP或UDP,那么該監(jiān)聽器是4層的。這種監(jiān)聽器只能根據(jù)目標(biāo)端口將流量轉(zhuǎn)發(fā)到后端實(shí)例,不能對流量進(jìn)行任何處理。

如果監(jiān)聽器協(xié)議是HTTP或HTTPS,那么該監(jiān)聽器是7層的。這種監(jiān)聽器可以根據(jù)請求的URL、HTTP頭部等信息對流量進(jìn)行處理,并將流量轉(zhuǎn)發(fā)到后端實(shí)例。

此外,還可以通過監(jiān)聽器端口來判斷是4層還是7層的。如果監(jiān)聽器端口是80或443,那么該監(jiān)聽器是7層的;如果監(jiān)聽器端口是其他端口,那么該監(jiān)聽器是4層的

Ingress 的使用

Ingress 環(huán)境準(zhǔn)備

# 創(chuàng)建文件夾

[root@master ~]# mkdir ingress-controller

[root@master ~]# cd ingress-controller/

# 獲取ingress-nginx,本次案例使用的是0.30版本

[root#master ingress-controller]# wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yaml

[root#master ingress-controller]# wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/provider/baremetal/service-nodeport.yaml

# 修改mandatory.yaml文件中的倉庫(本人實(shí)驗(yàn)不需要修改也可以)

# 修改quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0

# 為quay-mirror.qiniu.com/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0

# 創(chuàng)建ingress-nginx

[root@master ingress-controller]# kubectl apply -f ./

# 查看ingress-nginx

[root@master ingress-controller]# kubectl get pod -n ingress-nginx

NAME?????????????????????????????????????????????????????????????????????????? READY??? STATUS? ?????? RESTARTS???????????? AGE

pod/nginx-ingress-controller-fbf967dd5-4qpbp??? 1/1???????? Running??????? 0??????????????????????????? 12h

# 查看service

[root@master ingress-controller]# kubectl get svc -n ingress-nginx

NAME?????????????????? TYPE???????????? CLUSTER-IP????????? EXTERNAL-IP PORT(S)? ?????????????????????????????????? AGE

ingress-nginx NodePort????? 10.98.75.163? <none>? ?????? 80:32240/TCP,443:31335/TCP??? 11h

準(zhǔn)備servicepod

為了后面的實(shí)驗(yàn)比較方便,創(chuàng)建如下圖所示的模型

k8s ingress (二),貪心算法,算法

創(chuàng)建tomcat-nginx.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

? name: nginx-deployment?

? namespace: dev

spec:

? replicas: 3?

? selector:???

??? matchLabels:

????? app: nginx-pod?

? template:

??? metadata:??

????? labels:????

??????? app: nginx-pod

??? spec:??

????? containers:?????

????? - name: nginx???????

??????? image: nginx:1.17.1???????

??????? ports:???????

???? ???- containerPort: 80

---

apiVersion: apps/v1

kind: Deployment

metadata:

? name: tomat-deployment?

? namespace: dev

spec:?

? replicas: 3?

? selector:???

??? matchLabels:?????

????? app: tomcat-pod?

? template:???

??? metadata:?????

????? labels:???????

??????? app: tomcat-pod???

??? spec:?????

????? containers:?????

????? - name: tomcat???????

??????? image: tomcat:8.5-jre10-slim???????

??????? ports:???????

??????? - containerPort: 8080

---

apiVersion: v1

kind: Service

metadata:?

? name: nginx-service?

? namespace: dev

spec:?

? selector:???

??? app: nginx-pod?

? clusterIP: None?

? type: ClusterIP?

? ports:?

? - port: 80???

??? targetPort: 80

---

apiVersion: v1

kind: Service

metadata:?

? name: tomcat-service?

? namespace: dev

spec:?

? selector:

??? app: tomcat-pod?

? clusterIP: None?

? type: ClusterIP?

? ports:?

? - port: 8080???

targetPort: 8080

# 創(chuàng)建[root@master ~]# kubectl create -f tomcat-nginx.yaml

# 查看

[root@master ~]# kubectl get svc -n dev

NAME????????????????????????? TYPE??????????????????? CLUSTER-IP????????? ?????? EXTERNAL-IP??????? PORT(S)???????? AGE

nginx-service?????? ClusterIP??????? None?????????????????????????? <none>???????? ?????? 80/TCP????????? 48s

tomcat-service??????????? ClusterIP??????? None?????????????????????????? <none>? ????????????? 8080/TCP????? 48s

Http代理

創(chuàng)建ingress-http.yaml

apiVersion: extensions/v1beta1

kind: Ingress

metadata:?

? name: ingress-http?

? namespace: dev

spec:?

? rules:?

? - host: nginx.itheima.com???

??? http:?????

????? paths:?????

????? - path: /???????

??????? backend:?????????

????????? serviceName: nginx-service?????????

????????? servicePort: 80?

? - host: tomcat.itheima.com???

??? http:?????

??? paths:?????

??? - path: /???????

????? backend:?????????

????? serviceName: tomcat-service?????????

????? servicePort: 8080

# 創(chuàng)建

[root@master ~]# kubectl create -f ingress-http.yaml

ingress.extensions/ingress-http created

# 查看

[root@master ~]# kubectl get ing ingress-http -n dev

NAME?????????????????? HOSTS??????????????????????????????????????????????????? ADDRESS?????? ????????????? PORTS?????????? AGE

ingress-http? nginx.itheima.com,tomcat.itheima.com????????????????????????? 80?? ????????????? 22s

# 查看詳情

[root@master ~]# kubectl describe ing ingress-http -n dev

...

Rules:

Host???????????????????? Path backends

----??????????????????????????? ----?????? --------

nginx.itheima.com /???????????? nginx-service:80(10.244.1.96:80,10.244.1.97:80,10.244.2.112.80)

tomcat.itheima.com???? /???????????? tomcat-service:8080(10.244.1.94:8080,10.244.1.95:8080,10.244.2.111.8080)

# 接下來,在本地電腦配置host文件,解析上面的兩個域名到192.168.109.100(master)上

# 然后,就可以分別訪問tomcat.itheima.com:32240 和nginx.itheima.com:32240 查看效果了

Https代理

創(chuàng)建證書

# 生成證書

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/C=CN/ST=BJ/L=BJ/0=nginx/CN=itheima.com"

# 創(chuàng)建密鑰

kubectl create secret tls tls-secret --key tls.key --cert tls.crt

創(chuàng)建ingress-https.yaml 文件

apiVersion: extensions/v1beta1

kind: Ingress

metadata:

? name: ingress-https

? namespace: dev

spec:

? tls:

??? - hosts:

????? - nginx.itheima.com

????? - tomcat.itheima.com

????? secretName: tls-secret # 指定秘鑰

? rules:

? - host: nginx.itheima.com

??? http:

????? paths:

????? - path: /

??????? backend:

????????? serviceName: nginx-service

????????? servicePort: 80

? - host: tomcat.itheima.com

??? http:

????? paths:

????? - path: /

??????? backend:

????????? serviceName: tomcat-service

????????? servicePort: 8080

# 創(chuàng)建 inress

[root@master ~]# kubectl create -f ingress-https.yaml

ingress.extensions/ingress-https created

# 查看

[root@master ~]# kubectl get ing ingress-https -n dev

NAME?????????????????? HOSTS?????????????????????????????????????????????????????????? ADDRESS???????????????????? PORTS??? AGE

ingress-https nginx.itheima.com,tomcat.itheima.com???? 10.104.184.38 80, 443?????? 2m42s

# 查看詳情

[root@master ~]# kubectl describe ing ingress-https -n dev

...

TLS:

? tls-secret terminates nginx.itheima.com,tomcat.itheima.com

Rules:

Host???????????????????? Path backends

----??????????????????????????? ----?????? --------

nginx.itheima.com /???????????? nginx-service:80(10.244.1.97:80,10.244.1.98:80,10.244.2.119.80)

tomcat.itheima.com???? /???????????? tomcat-service:8080(10.244.1.99:8080,10.244.2.117:8080,10.244.2.120.8080)

# 下面可以通過瀏覽器訪問https://nginx.itheima.com:31335 和 https://tomcat.itheima.com:31335來查看了文章來源地址http://www.zghlxwxcb.cn/news/detail-666855.html

到了這里,關(guān)于k8s ingress (二)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • K8S中的ingress

    K8S中的ingress

    前言: Kubernetes暴露服務(wù)的方式目前只有三種:LoadBlancer Service、NodePort Service、Ingress;這一片主要聊聊Ingress。 簡單說,是一個代理,可以根據(jù)配置轉(zhuǎn)發(fā)請求到指定的服務(wù)上。 通俗來講,ingress和之前提到的Service、Deployment,也是一個k8s的資源類型,ingress用于實(shí)現(xiàn)用域名的方式訪

    2024年01月17日
    瀏覽(22)
  • K8S--Ingress的作用

    K8S--Ingress的作用

    原文網(wǎng)址:K8S--Ingress的作用-CSDN博客 本文介紹K8S的Ingress的作用。 Kubernetes 暴露服務(wù)的有三種方式:LoadBlancer Service、NodePort Service、Ingress。官網(wǎng)的定義:管理對外服務(wù)到集群內(nèi)服務(wù)之間規(guī)則的集合。即:將請求轉(zhuǎn)發(fā)到服務(wù),實(shí)現(xiàn)服務(wù)暴露。 Ingress的功能類似Nginx:把集群內(nèi) Ser

    2024年01月17日
    瀏覽(17)
  • k8s Ingress使用詳解

    k8s Ingress使用詳解

    在上一篇關(guān)于k8s之service的使用一篇中提到,Service對集群之外暴露服務(wù)的主要方式有兩種,NotePort和LoadBalancer,但這兩種方式,都有一定的缺點(diǎn),具體來說: NodePort 會占用很多集群機(jī)器的端口,當(dāng)集群服務(wù)變多的時候,過多的端口會給k8s的運(yùn)維人員帶來諸多的不便; 而LB的缺

    2024年02月02日
    瀏覽(27)
  • 【K8s】Ingress的使用

    【K8s】Ingress的使用

    上一章中,NotePort和LoadBalancer類型的Service可給集群外部機(jī)器提供訪問,但這兩種類型都有缺點(diǎn): NodePort方式會占用很多集群機(jī)器的端口,當(dāng)集群服務(wù)變多的時候,這個缺點(diǎn)愈發(fā)明顯 LB方式的缺點(diǎn)是每個service需要一個LB,浪費(fèi)、麻煩,并且需要k8s之外設(shè)備的支持 由此,Ingress資

    2024年04月10日
    瀏覽(21)
  • [云原生] K8s之ingress

    [云原生] K8s之ingress

    1.1 Ingress的簡介? service的作用體現(xiàn)在兩個方面,對集群內(nèi)部,它不斷跟蹤pod的變化,更新endpoint中對應(yīng)pod的對象,提供了ip不斷變化的pod的服務(wù)發(fā)現(xiàn)機(jī)制;對集群外部,他類似負(fù)載均衡器,可以在集群內(nèi)外部對pod進(jìn)行訪問。 在Kubernetes中,Pod的IP地址和service的ClusterIP僅可以在集

    2024年04月11日
    瀏覽(21)
  • K8S對外服務(wù)ingress

    K8S對外服務(wù)ingress

    集群內(nèi)部 不斷跟蹤pod的變化,更新endpoint中的pod對象,基于pod的ip地址不斷發(fā)現(xiàn)的一種服務(wù)發(fā)現(xiàn)機(jī)制 集群外部 類似負(fù)載均衡器,把流量(ip+端口),不涉及轉(zhuǎn)發(fā)url(http https),把請求轉(zhuǎn)發(fā)到pod當(dāng)中 在Kubernetes中,Pod的IP地址和service的ClusterIP僅可以在集群網(wǎng)絡(luò)內(nèi)部使用,對于集

    2024年01月19日
    瀏覽(21)
  • K8s的Service、Ingress

    K8s的Service、Ingress

    ● 在kubernetes中,Pod是應(yīng)用程序的載體,我們可以 通過Pod的IP 來訪問應(yīng)用程序,但是 Pod的IP地址 不是固定的,這就意味著不方便直接采用Pod的IP對服務(wù)進(jìn)行訪問。 ● 為了解決這個問題,kubernetes提供了Service資源,Service會對提供同一個服務(wù)的 多個Pod進(jìn)行聚合 ,并且 提供一個

    2024年02月05日
    瀏覽(16)
  • k8s 負(fù)載均衡工具Ingress

    Kubernetes是一種流行的容器編排平臺,它提供了一種簡單而強(qiáng)大的方式來管理容器化應(yīng)用程序。Kubernetes Ingress是一種用于管理HTTP和HTTPS流量的API對象。它允許您將多個服務(wù)公開到Internet上,并提供負(fù)載均衡、TLS終止和基于主機(jī)名的路由等功能。本文將介紹Kubernetes Ingress的概念、

    2024年02月12日
    瀏覽(27)
  • k8s---對外服務(wù) ingress

    k8s---對外服務(wù) ingress

    目錄 目錄 ingress與service ingress的組成 ingress-controller: ingress暴露服務(wù)的方式 2.方式二:DaemonSet+hostnetwork+nodeSelector DaemonSet+hostnetwork+nodeSelector如何實(shí)現(xiàn) 3.deployment+NodePort: 虛擬主機(jī)的方式實(shí)現(xiàn)http代理 總結(jié) deploymentit+loadbalancer: daemonset+hostnetwork+nodeselector: deployment+nodeport: serv

    2024年01月22日
    瀏覽(18)
  • k8s---ingress對外服務(wù)(ingress-controller)

    k8s---ingress對外服務(wù)(ingress-controller)

    k8s的對外服務(wù),ingress service作用現(xiàn)在兩個方面: 1、集群內(nèi)部:不斷跟蹤的變化,更新endpoint中的pod對象,基于pod的ip地址不斷變化的一種服務(wù)發(fā)現(xiàn)機(jī)制。 2、集群外部:類似于負(fù)載均衡器,把流量(ip+端口),不涉及轉(zhuǎn)發(fā)url(http https),把請求轉(zhuǎn)發(fā)到pod當(dāng)中。 service: NodePo

    2024年01月19日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包