kubernetes的訪問方式(10)

k8s是一個全新的編排方式,可是它的通訊方式也是比較複雜的,並且種類也比較的多。
最多見的是就好比咱們經過service
kubernetes的訪問方式(10)
查看到的,
接下來咱們會建立不一樣的訪問方式,給你們演示效果
hostNetwork、hostPort、NodePort、LoadBalancer、Ingress、clusterip
一共包括6中通訊方式,其中clusterip是不對外開放的,只是集羣內部使用node

yaml文件我已經放到了百度網盤
解壓可使用
連接:https://pan.baidu.com/s/1YNnNZamlW325x5spVjw4Ig
提取碼:wbtgnginx

而後倒入鏡像
docker load < gcr.io#google_containers#defaultbackend.targit

docker tag 452a96d81c30 gcr.io/google_containers/defaultbackendgithub

而後解壓tar包,裏面就是yaml問題件docker

一、首先咱們介紹下hostNetwork這種訪問方式:後端

kubernetes的訪問方式(10)
而後建立一下網絡

kubectl create -f nginx.yaml
kubernetes的訪問方式(10)
去node1上面查看一下
kubernetes的訪問方式(10)
訪問測試一下
kubernetes的訪問方式(10)
這裏只能node1能夠訪問,其餘node節點訪問是不行的
修改一下副本數量驗證一下
kubectl edit deployment nginx架構

kubernetes的訪問方式(10)
kubernetes的訪問方式(10)
此次其餘node節點也就能夠,每一個節點都有部署的pod負載均衡


二、接下來介紹hostPort zhezhong這種模式curl

kubernetes的訪問方式(10)
建立一下

kubectl create -f nginx-hostport.yaml

kubernetes的訪問方式(10)
kubernetes的訪問方式(10)


三、接下來建立NodePort

這種也比較簡單

建立2個yaml
kubectl create deployment nginx --image=nginx --dry-run -o yaml > nginx.yaml

kubectl expose deployment nginx --port=8080 --target-port=80 --type=NodePort --dry-run -o yaml > svc.yaml
kubernetes的訪問方式(10)
kubernetes的訪問方式(10)

啓動一下
kubernetes的訪問方式(10)
訪問一下
kubernetes的訪問方式(10)
這種方式,全部的nodeip+端口均可以訪問


四、接下來咱們介紹比較特殊的一種訪問方式LoadBalancer

先簡答的介紹一下
metallb簡介
官方網站:https://metallb.universe.tf/
MetalLB是使用標準路由協議的裸機Kubernetes集羣的軟負載均衡器
【備註】私有云裸金屬架構的kubernetes集羣不支持LoadBalance
若是你的kubernetes集羣沒有在公有云的IaaS平臺(GCP,AWS,Azure …)上運行,則LoadBalancers將在建立時無限期地保持「掛起」狀態,也就是說只有公有云廠商自家的kubernetes支持LoadBalancer。


MetalLB旨在解決這種不平衡
MetalLB旨在經過提供與標準網絡設備集成的網絡LB實現來糾正這種不平衡,以便裸機集羣上的外部服務也「儘量」地工做。即MetalLB可以幫助你在kubernetes中建立LoadBalancer類型的kubernetes服務
接下來咱們部署一下:
wget https://raw.githubusercontent.com/google/metallb/v0.7.3/manifests/metallb.yaml

wget https://raw.githubusercontent.com/google/metallb/v0.7.3/manifests/example-layer2-config.yaml

建立一下
kubernetes的訪問方式(10)
修改ip地址池和集羣節點網段相同
kubernetes的訪問方式(10)
注意:【這裏的 IP 地址範圍須要跟集羣實際狀況相對應】
kubernetes的訪問方式(10)

建立後端應用和服務測試
kubernetes的訪問方式(10)
kubernetes的訪問方式(10)
接下來測試一下
kubernetes的訪問方式(10)
個人機器應爲是騰訊雲機器本身建立的因此這個ip不能直接那到外網使用,只能經過公網訪問,剛纔curl其實已經驗證了。
kubernetes的訪問方式(10)


五、上面介紹了LoadBalancer接下來介紹另外的一種比較流行的方式
Ingress,這種是當前比較流行的方式
簡單介紹一下
一個負載均衡的玩意,其主要用來解決使用NodePort暴露Service的端口時Node IP會漂移的問題。同時,若大量使用NodePort暴露主機端口,管理會很是混亂
Ingress就能夠解決上面的問題,其包含兩個組件Ingress Controller和Ingress:

Ingress
將Nginx的配置抽象成一個Ingress對象,每添加一個新的服務只需寫一個新的Ingress的yaml文件便可
Ingress Controller
將新加入的Ingress轉化成Nginx的配置文件並使之生效

開始建立一下

kubernetes的訪問方式(10)

接下來建立ingress
kubernetes的訪問方式(10)
kubernetes的訪問方式(10)
kubernetes的訪問方式(10)
這裏須要注意,ingress如何和pod關聯,是經過svc上面的地址和端口關聯的哈

接下來訪問一下
在本地配置了hosts,或者要有dns
kubernetes的訪問方式(10)

接下來還要配置一個錯誤的網頁
default-backend的做用是,若是外界訪問的域名不存在的話,則默認轉發到default-http-backend這個Service,其會直接返回404

kubernetes的訪問方式(10)
kubernetes的訪問方式(10)
kubernetes的訪問方式(10)


六、接下來開始最後一種模式ClusterIP
這種模式主要是整個k8s集羣內部使用,不對外開放的,好比咱們啓動一個nginx想要對外訪問須要nodeport這類的的轉發,可是沒有轉發的時候是沒法訪問的,只能在集羣內部使用

好比
kubernetes的訪問方式(10)
kubernetes的訪問方式(10)

而後建立一下
kubernetes的訪問方式(10)

----================================================好了今天這6中方式就介紹到這裏,後續有問題,歡迎你們私信聯繫

相關文章
相關標籤/搜索