最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

Kubernetes(k8s)集群管理實戰(zhàn)|Ingress暴露應用

2021-01-22 15:57 作者:動力節(jié)點小王本王  | 我要投稿


本篇文章主要核心內容:

Ingress暴露應用

采用Ingress暴露容器化應用(Nginx)

Ingress暴露應用

NodePort

NodePort服務是讓外部請求直接訪問服務的最原始方式,NodePort是在所有的節(jié)點(虛擬機)上開放指定的端口,所有發(fā)送到這個端口的請求都會直接轉發(fā)到服務中的pod里;

NodePort服務的YAML文件如下:

apiVersion:?v1

kind:?Service

metadata:??

?name:?my-nodeport-service

selector:??

?app:?my-appspec:

?type:?NodePort

?ports:??

?-?name:?http

???port:?80

???targetPort:?80

???nodePort:?30008

???protocol:?TCP

這種方式有一個“nodePort"的端口,能在節(jié)點上指定開放哪個端口,如果沒有指定端口,它會選擇一個隨機端口,大多數時候應該讓Kubernetes隨機選擇端口;

這種方式的不足:

1、一個端口只能供一個服務使用;

2、只能使用30000–32767之間的端口;

3、如果節(jié)點/虛擬機的IP地址發(fā)生變化,需要人工進行處理;

因此,在生產環(huán)境不推薦使用這種方式來直接發(fā)布服務,如果不要求運行的服務實時可用,或者用于演示或者臨時運行一個應用可以用這種方式;

三種端口說明

ports:??

?-?name:?http

???port:?80

???targetPort:?80

???nodePort:?30008

???protocol:?TCP

nodePort

外部機器(在windows瀏覽器)可以訪問的端口;

比如一個Web應用需要被其他用戶訪問,那么需要配置type=NodePort,而且配置nodePort=30001,那么其他機器就可以通過瀏覽器訪問scheme://node:30001訪問到該服務;

targetPort

容器的端口,與制作容器時暴露的端口一致(Dockerfile中EXPOSE),例如docker.io官方的nginx暴露的是80端口;

port

Kubernetes集群中的各個服務之間訪問的端口,雖然mysql容器暴露了3306端口,但外部機器不能訪問到mysql服務,因為他沒有配置NodePort類型,該3306端口是集群內其他容器需要通過3306端口訪問該服務;

kubectl expose deployment springboot-k8s --port=8080 --target-port=8080 --type=NodePort

?

LoadBalancer

LoadBlancer可以暴露服務,這種方式需要向云平臺申請負載均衡器,目前很多云平臺都支持,但是這種方式深度耦合了云平臺;(相當于是購買服務)

從外部的訪問通過負載均衡器LoadBlancer轉發(fā)到后端的Pod,具體如何實現要看云提供商;

Ingress

Ingress 英文翻譯為:入口、進入、進入權、進食,也就是入口,即外部請求進入k8s集群必經之口,我們看一張圖:

?

雖然k8s集群內部署的pod、service都有自己的IP,但是卻無法提供外網訪問,以前我們可以通過監(jiān)聽NodePort的方式暴露服務,但是這種方式并不靈活,生產環(huán)境也不建議使用;

Ingresss是k8s集群中的一個API資源對象,相當于一個集群網關,我們可以自定義路由規(guī)則來轉發(fā)、管理、暴露服務(一組pod),比較靈活,生產環(huán)境建議使用這種方式;

Ingress不是kubernetes內置的(安裝好k8s之后,并沒有安裝ingress),ingress需要單獨安裝,而且有多種類型Google Cloud Load Balancer,Nginx,Contour,Istio等等,我們這里選擇官方維護的Ingress Nginx;

使用Ingress Nginx的步驟:

1、部署Ingress Nginx;

2、配置Ingress Nginx規(guī)則;


采用Ingress暴露容器化應用(Nginx)

1、部署一個容器化應用(pod),比如Nginx、SpringBoot程序;

kubectl create deployment nginx --image=nginx

2、暴露該服務;

kubectl expose deployment nginx --port=80 --target-port=80 --type=NodePort

3、部署Ingress Nginx

https://github.com/kubernetes/ingress-nginx?

ingress-nginx是使用NGINX作為反向代理和負載均衡器的Kubernetes的Ingress控制器;

kubectl? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???apply? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ??-f?

https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.41.2/deploy/static/provider/baremetal/deploy.yaml

332行修改成阿里云鏡像:

阿里云鏡像首頁:http://dev.aliyun.com/

修改鏡像地址為:

registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:0.33.0

添加一個配置項:


應用:

kubectl apply -f deploy.yaml


4、查看Ingress的狀態(tài)

kubectl get service -n ingress-nginx

kubectl get deploy -n ingress-nginx

kubectl get pods -n ingress-nginx


5、創(chuàng)建Ingress規(guī)則


kubectl apply -f ingress-nginx-rule.yaml

報如下錯誤:


解決:kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission

然后再次執(zhí)行:kubectl apply -f ingress-nginx-rule.yaml

檢查一下:

kubectl get ing(ress) ?--查規(guī)則

Kubernetes,點擊以下實戰(zhàn)教程,帶你快速入門Kubernetes!


Kubernetes(k8s)集群管理實戰(zhàn)|Ingress暴露應用的評論 (共 條)

分享到微博請遵守國家法律
奇台县| 南昌市| 青浦区| 任丘市| 青岛市| 徐汇区| 东乡县| 武定县| 益阳市| 湖北省| 鄱阳县| 安泽县| 阜新市| 伊吾县| 哈密市| 封开县| 甘泉县| 锦屏县| 东山县| 锡林浩特市| 米泉市| 昌吉市| 比如县| 聂荣县| 宾阳县| 钟祥市| 瓦房店市| 南宁市| 寻乌县| 夏津县| 荥经县| 堆龙德庆县| 喀喇沁旗| 勃利县| 江门市| 定安县| 三原县| 铜川市| 宣汉县| 依兰县| 新河县|