真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何進(jìn)行Kubernetes服務(wù)類型的淺析

這篇文章將為大家詳細(xì)講解有關(guān)如何進(jìn)行Kubernetes服務(wù)類型的淺析,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識(shí)有一定的了解。

網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作,成都做網(wǎng)站公司-創(chuàng)新互聯(lián)建站已向1000多家企業(yè)提供了,網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)絡(luò)營銷等服務(wù)!設(shè)計(jì)與技術(shù)結(jié)合,多年網(wǎng)站推廣經(jīng)驗(yàn),合理的價(jià)格為您打造企業(yè)品質(zhì)網(wǎng)站。

如何進(jìn)行Kubernetes服務(wù)類型的淺析

在Kubernetes中,服務(wù)總是能使其網(wǎng)絡(luò)訪問到一個(gè)或一組Pod上。服務(wù)將會(huì)根據(jù)標(biāo)簽選擇Pod并且當(dāng)對這些服務(wù)建立網(wǎng)絡(luò)時(shí),它會(huì)選擇集群中所有與服務(wù)的selector相匹配的Pod,并選擇其中的一個(gè),然后將網(wǎng)絡(luò)請求轉(zhuǎn)發(fā)給它。

如何進(jìn)行Kubernetes服務(wù)類型的淺析

Kubernetes 服務(wù)vs Deployment

在K8S中我們應(yīng)該如何區(qū)分Deployment和服務(wù)呢?

  • Deployment主要負(fù)責(zé)讓一組pod在集群中保持運(yùn)行

  • 服務(wù)主要負(fù)責(zé)在集群中啟用對一組pod的網(wǎng)絡(luò)訪問

我們可以使用deployment而不使用服務(wù),所以我們可以保持幾個(gè)相同的Pod在K8S集群中運(yùn)行。此外,Deployment的規(guī)??梢詳U(kuò)大和縮小,pod也可以復(fù)制。在Kubernetes中,單個(gè)pod可以直接通過網(wǎng)絡(luò)請求單獨(dú)訪問,因此要跟蹤pod會(huì)有些困難。

我們也可以使用一個(gè)服務(wù)類型而不需要deployment。如果我們這樣做,將創(chuàng)建一個(gè)單一的pod,而不是像我們在deployment中那樣一起創(chuàng)建所有pod。不過,我們還有另一種替代方案,即我們的服務(wù)能夠根據(jù)分配給它們的標(biāo)簽進(jìn)行選擇,從而將網(wǎng)絡(luò)請求路由到這些Pod。

我們?nèi)绾伟l(fā)現(xiàn)Kubernetes服務(wù)呢?

在Kubernetes中,有兩種方式可以發(fā)現(xiàn)服務(wù):

  • DNS類型。DNS server被添加到集群中,以便觀察Kubernetes API為每個(gè)新服務(wù)創(chuàng)建DNS record set。當(dāng)整個(gè)集群啟用DNS后,所有的Pod都應(yīng)該能夠自動(dòng)進(jìn)行服務(wù)名稱解析。

  • ENV變量。在這一發(fā)現(xiàn)方法中,一個(gè)pod運(yùn)行在一個(gè)節(jié)點(diǎn)上,所以 kubelet為每個(gè)active服務(wù)添加環(huán)境變量。

ClusterIP、NodePort和LoadBalancer是什么?

服務(wù)規(guī)范中的類型屬性決定了服務(wù)如何暴露在網(wǎng)絡(luò)中。比如,ClusterIP、NodePort和LoadBalancer。

  • ClusterIP—默認(rèn)值。該服務(wù)只能從Kubernetes集群內(nèi)訪問。

  • NodePort—這使得服務(wù)可以通過集群中每個(gè)節(jié)點(diǎn)上的靜態(tài)端口訪問。

  • LoadBalancer—服務(wù)通過云提供商的負(fù)載均衡器功能可以從外部訪問。阿里云、AWS、Azure都提供了這一功能。

如何創(chuàng)建一個(gè)服務(wù)

通過deployment kind的幫助,以“Hello World” App形式的簡單示例將會(huì)幫助你更好地理解如何創(chuàng)建服務(wù)。

我們的操作流程是,當(dāng)我們看到應(yīng)用程序已經(jīng)部署完成并且以up狀態(tài)運(yùn)行的時(shí)候,我們將創(chuàng)建服務(wù)(Cluster IP)來訪問Kubernetes中的應(yīng)用程序。

現(xiàn)在,讓我們創(chuàng)建一個(gè)正在運(yùn)行的deployment

“kubectl run hello-world –replicas=3 –labels=”run=load-balancer-example” –image=gcr.io/google-samples/node-hello:1.0 –port=8080”.

這里,這個(gè)命令在Kubernetes中創(chuàng)建了一個(gè)有兩個(gè)應(yīng)用程序副本的deployment。

接下來,

run "kubectl get deployment hello-world" so see that the deployment is running.
Now we can check the replicaset and pods that the deployment created.
$ kubectl get deployments hello-world
NAME          DESIRED   CURRENT   UP-TO-DATE   AVAILABLE       AGE
hello-world    3          3            3        3              76s

應(yīng)用程序現(xiàn)在正在運(yùn)行,如果你想要訪問新創(chuàng)建的應(yīng)用程序,我們需要?jiǎng)?chuàng)建ClusterIP類型的服務(wù):

  • 為服務(wù)創(chuàng)建一個(gè)YAML manifest并應(yīng)用它,或

  • 使用kubectl expose命令,這是一個(gè)更為簡單的選項(xiàng)。因?yàn)檫@一命令可以無需創(chuàng)建YAML文件即可創(chuàng)建一個(gè)服務(wù)。

$ kubectl expose deployment hello-world --type=ClusterIP --name=example-service
service "example-service" exposed

在這里,我們將創(chuàng)建一個(gè)名為example-service的服務(wù),類型為ClusterIP。

那么,現(xiàn)在我們將訪問我們的應(yīng)用程序:

run “kubectl get service example-service” to get our port number.

然后,我們需要執(zhí)行port-forward命令。因?yàn)槲覀兊姆?wù)類型是ClusterIP,所以只能在集群內(nèi)訪問,因此我們必須通過轉(zhuǎn)發(fā)端口到集群中的本地端口才能訪問我們的應(yīng)用程序。

我們可以使用其他類型,如LoadBalancer,這將在AWS或GCP中創(chuàng)建一個(gè)LB,然后我們可以使用給LB的DNS地址和我們端口號來訪問應(yīng)用程序。

$ kubectl get service example-service

NAME              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
example-service   ClusterIP   100.20.167.76           8080/TCP   1h

$ kubectl port-forward service/example-service 8080:8080
Forwarding from 127.0.0.1:8080 -> 8080

現(xiàn)在我們可以從工作站瀏覽http://localhost:8080,并且我們應(yīng)該會(huì)看到:

Hello Kubernetes!

Kubernetes 服務(wù) NodePort YAML示例

此示例YAML創(chuàng)建了可用于外部網(wǎng)絡(luò)請求的服務(wù)。在這里,我們提到了帶Value的NodePort,因此服務(wù)被映射到集群中每個(gè)節(jié)點(diǎn)上的端口。

如何進(jìn)行Kubernetes服務(wù)類型的淺析

下面是一個(gè)yaml的例子,它將展示我們?nèi)绾卧贙ubernetes中使用NodePort服務(wù)類型。

kind: Service 
apiVersion: v1 
metadata:
  name: hostname-service 
spec:
  # Expose the service on a static port on each node
  # so that we can access the service from outside the cluster 
  type: NodePort
# When the node receives a request on the static port (30163)
  # "select pods with the label 'app' set to 'echo-hostname'"
  # and forward the request to one of them
  selector:
    app: echo-hostname
ports:
    # Three types of ports for a service
    # nodePort - a static port assigned on each the node
    # port - port exposed internally in the cluster
    # targetPort - the container port to send requests to
    - nodePort: 30163
      port: 8080 
      targetPort: 80

關(guān)于如何進(jìn)行Kubernetes服務(wù)類型的淺析就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。


當(dāng)前標(biāo)題:如何進(jìn)行Kubernetes服務(wù)類型的淺析
網(wǎng)頁路徑:http://weahome.cn/article/ipdojh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部