内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

怎么實(shí)現(xiàn)Kubernetes應(yīng)用部署

這篇文章主要講解了“怎么實(shí)現(xiàn)Kubernetes應(yīng)用部署”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“怎么實(shí)現(xiàn)Kubernetes應(yīng)用部署”吧!

創(chuàng)新互聯(lián)建站主營黃平網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app開發(fā)定制,黃平h5微信小程序搭建,黃平網(wǎng)站營銷推廣歡迎黃平等地區(qū)企業(yè)咨詢

概述

當(dāng)希望在Kubernetes中部署應(yīng)用程序時,通常要定義三個組件:

  • 部署(Deployment):這是創(chuàng)建Pod應(yīng)用程序副本的方法

  • 服務(wù)(Service):將流量調(diào)度到Pods的內(nèi)部負(fù)載平衡器

  • 入口(Ingress):描述流量如何從群集外部流到服務(wù)。

直觀圖示

首先,在Kubernetes中,應(yīng)用程序應(yīng)該通過兩層負(fù)載均衡對外公開:內(nèi)部負(fù)載均衡器和外部負(fù)載均衡器。

怎么實(shí)現(xiàn)Kubernetes應(yīng)用部署

其次,內(nèi)部的負(fù)載均衡器又被稱為服務(wù),而外部的負(fù)載均衡器稱為入口。

怎么實(shí)現(xiàn)Kubernetes應(yīng)用部署

最后:Pods不會直接部署。相反,Deployment會在其上創(chuàng)建Pods和觀察者。

怎么實(shí)現(xiàn)Kubernetes應(yīng)用部署

應(yīng)用YAML示例

一個簡單的Hello World應(yīng)用程序?yàn)槔?,該?yīng)用程序的YAML如下所示:

apiVersion: apps/v1

kind: Deployment

metadata:

name: my-deployment

labels:

track: canary

spec:

selector:

matchLabels:

any-name: my-app

template:

metadata:

labels:

any-name: my-app

spec:

containers:

- name: cont1

image: learnk8s/app:1.0.0

ports:

- containerPort: 8080

---

apiVersion: v1

kind: Service

metadata:

name: my-service

spec:

ports:

- port: 80

targetPort: 8080

selector:

name: app

---

apiVersion: networking.k8s.io/v1beta1

kind: Ingress

metadata:

name: my-ingress

spec:

rules:

- http:

paths:

- backend:

serviceName: app

servicePort: 80

path: /

該定義很長,不好發(fā)現(xiàn)組件之間的相互聯(lián)系。

比如下這些問題:

什么時候應(yīng)該使用端口80,什么時候應(yīng)該使用端口8080?

為了避免沖突,是否應(yīng)要為每個服務(wù)都創(chuàng)建一個新端口?

標(biāo)簽名稱重要嗎?各處命名是否都應(yīng)該一致?

要回答這些問題,請接著往下看:

連接部署和服務(wù)

實(shí)際上服務(wù)和部署沒有直接連接,服務(wù)跳過部署直接指向Pod。因此,要注意的實(shí)際上是Pod和服務(wù)之間的相互關(guān)系。

關(guān)鍵點(diǎn)

他們關(guān)系中要注意:

服務(wù)選擇器應(yīng)至少與Pod的一個標(biāo)簽匹配;

服務(wù)的目標(biāo)端口(targetPort)應(yīng)該與Pod內(nèi)容器的容器端口(containerPort)匹配;

服務(wù)端口可以是任何數(shù)字。多個服務(wù)也可以使用同一端口,因?yàn)樗鼈兎峙淞瞬煌腎P地址。

直觀圖示

1. 考慮服務(wù)下Pod公開的端口

怎么實(shí)現(xiàn)Kubernetes應(yīng)用部署

2.創(chuàng)建Pod時,應(yīng)為Pod中的每個容器定義端口containerPort。

怎么實(shí)現(xiàn)Kubernetes應(yīng)用部署

3.創(chuàng)建服務(wù)時,可以定義端口和目標(biāo)端口。但是只能用目標(biāo)端口連接容器

怎么實(shí)現(xiàn)Kubernetes應(yīng)用部署

4.目標(biāo)端口和容器端口應(yīng)該匹配。

怎么實(shí)現(xiàn)Kubernetes應(yīng)用部署

5. 如果容器公開了端口3000,則targetPort應(yīng)該與該數(shù)字匹配。

怎么實(shí)現(xiàn)Kubernetes應(yīng)用部署

如果查看YAML,則標(biāo)簽和ports/targetPor應(yīng)該匹配:

怎么實(shí)現(xiàn)Kubernetes應(yīng)用部署

常見問題

那么部署頂部track: canary標(biāo)簽是干什么的?

需要應(yīng)該匹配嗎?

部署的track: canary標(biāo)簽屬于部署,服務(wù)選擇器沒有使用它來做流量調(diào)度。所以這個標(biāo)簽完全可以刪除,或者為它分配其他值。

matchLabels選擇器呢?

它必須與Pod標(biāo)簽匹配,部署用它來跟蹤Pod。

Pod配置修改,如何測試?

我們可以使用以下命令檢查Pod的標(biāo)簽是否正確:

kubectl get pods --show-labels

對于屬于多個應(yīng)用程序的Pod使用:

kubectl get pods --selector any-name=my-app --show-labels

其中any-name = my-app表示標(biāo)簽any-name:my-app。

或者可以直接連接到Pod:可以使用kubectl port-forward命令連接到服務(wù)并測試連接。

kubectl port-forward service/3000:80

其中,service/是服務(wù)的名稱,比如示例中為"  my-service";3000是希望在計算機(jī)上打開的端口;80是"服務(wù)"在"端口"字段中公開的端口。

如果可以連接,則說明設(shè)置正確。如果不能,則很可能配置了標(biāo)簽,或者端口不匹配。

服務(wù)和入口連接

應(yīng)用程序發(fā)布的最后一個一步是配置Ingress入口。

關(guān)鍵點(diǎn)

入口必須知道如何檢索服務(wù),然后檢索Pod并將流量調(diào)度到它們。入口按名稱和公開的端口來檢索服務(wù)。

在入口和服務(wù)中應(yīng)該匹配兩件事:

  • Ingress的servicePort應(yīng)該與Service的端口匹配

  • Ingress的serviceName應(yīng)該與Service的名稱匹配

直觀圖示

首先,已經(jīng)該服務(wù)發(fā)布了一個端口。

怎么實(shí)現(xiàn)Kubernetes應(yīng)用部署

其次,入口中有一個名為服務(wù)端口(servicePort)的字段。

怎么實(shí)現(xiàn)Kubernetes應(yīng)用部署

在次,服務(wù)端口和入口服務(wù)端口應(yīng)始終匹配。

怎么實(shí)現(xiàn)Kubernetes應(yīng)用部署

最后,如果為服務(wù)分配了端口80,也應(yīng)將其servicePort更改為80。

怎么實(shí)現(xiàn)Kubernetes應(yīng)用部署

先示例配置要注意的字段:

怎么實(shí)現(xiàn)Kubernetes應(yīng)用部署

常見問題

如何測試入口的功能?

可以對kubectl port-forward使用與之前相同的策略,但是應(yīng)該連接到Ingress控制器,而不是連接到服務(wù)。

首先,使用以下命令檢索Ingress控制器的Pod名稱:

kubectl get pods --all-namespaces

怎么實(shí)現(xiàn)Kubernetes應(yīng)用部署

對確認(rèn)的Ingress Pod(可能在不同的命名空間中)執(zhí)行下面命令:

kubectl describe pod nginx-ingress-controller-6fc5bcc --namespace  kube-system|grep Ports

怎么實(shí)現(xiàn)Kubernetes應(yīng)用部署

用得到端口連接到Pod:

kubectl port-forward nginx-ingress-controller-6fc5bcc 3000:80 --namespace  kube-system

這樣訪問計算機(jī)上的端口3000時,請求都會被轉(zhuǎn)發(fā)到Ingress控制器Pod上的端口80。你訪問localhost:3000,就能看到發(fā)布的應(yīng)用程序。

感謝各位的閱讀,以上就是“怎么實(shí)現(xiàn)Kubernetes應(yīng)用部署”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對怎么實(shí)現(xiàn)Kubernetes應(yīng)用部署這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

分享文章:怎么實(shí)現(xiàn)Kubernetes應(yīng)用部署
文章URL:http://www.rwnh.cn/article22/pgsijc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、做網(wǎng)站、ChatGPT、定制開發(fā)網(wǎng)站導(dǎo)航、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
嘉禾县| 烟台市| 贡嘎县| 屏山县| 海阳市| 泽库县| 江城| 修武县| 卢湾区| 商南县| 宁化县| 新营市| 阿荣旗| 衡山县| 鞍山市| 江阴市| 辰溪县| 天气| 华坪县| 确山县| 建平县| 中山市| 昌邑市| 泰兴市| 龙陵县| 达拉特旗| 青龙| 米泉市| 昌乐县| 拉萨市| 乡城县| 鹤山市| 建宁县| 苏尼特左旗| 大邑县| 高州市| 木里| 滁州市| 福鼎市| 马关县| 如东县|