91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行Kubernetes服務類型的淺析

發布時間:2021-12-18 18:18:35 來源:億速云 閱讀:140 作者:柒染 欄目:云計算

這篇文章將為大家詳細講解有關如何進行Kubernetes服務類型的淺析,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

如何進行Kubernetes服務類型的淺析

在Kubernetes中,服務總是能使其網絡訪問到一個或一組Pod上。服務將會根據標簽選擇Pod并且當對這些服務建立網絡時,它會選擇集群中所有與服務的selector相匹配的Pod,并選擇其中的一個,然后將網絡請求轉發給它。

如何進行Kubernetes服務類型的淺析

Kubernetes 服務vs Deployment

在K8S中我們應該如何區分Deployment和服務呢?

  • Deployment主要負責讓一組pod在集群中保持運行

  • 服務主要負責在集群中啟用對一組pod的網絡訪問

我們可以使用deployment而不使用服務,所以我們可以保持幾個相同的Pod在K8S集群中運行。此外,Deployment的規模可以擴大和縮小,pod也可以復制。在Kubernetes中,單個pod可以直接通過網絡請求單獨訪問,因此要跟蹤pod會有些困難。

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

我們如何發現Kubernetes服務呢?

在Kubernetes中,有兩種方式可以發現服務:

  • DNS類型。DNS server被添加到集群中,以便觀察Kubernetes API為每個新服務創建DNS record set。當整個集群啟用DNS后,所有的Pod都應該能夠自動進行服務名稱解析。

  • ENV變量。在這一發現方法中,一個pod運行在一個節點上,所以 kubelet為每個active服務添加環境變量。

ClusterIP、NodePort和LoadBalancer是什么?

服務規范中的類型屬性決定了服務如何暴露在網絡中。比如,ClusterIP、NodePort和LoadBalancer。

  • ClusterIP—默認值。該服務只能從Kubernetes集群內訪問。

  • NodePort—這使得服務可以通過集群中每個節點上的靜態端口訪問。

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

如何創建一個服務

通過deployment kind的幫助,以“Hello World” App形式的簡單示例將會幫助你更好地理解如何創建服務。

我們的操作流程是,當我們看到應用程序已經部署完成并且以up狀態運行的時候,我們將創建服務(Cluster IP)來訪問Kubernetes中的應用程序。

現在,讓我們創建一個正在運行的deployment

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

這里,這個命令在Kubernetes中創建了一個有兩個應用程序副本的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

應用程序現在正在運行,如果你想要訪問新創建的應用程序,我們需要創建ClusterIP類型的服務:

  • 為服務創建一個YAML manifest并應用它,或

  • 使用kubectl expose命令,這是一個更為簡單的選項。因為這一命令可以無需創建YAML文件即可創建一個服務。

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

在這里,我們將創建一個名為example-service的服務,類型為ClusterIP。

那么,現在我們將訪問我們的應用程序:

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

然后,我們需要執行port-forward命令。因為我們的服務類型是ClusterIP,所以只能在集群內訪問,因此我們必須通過轉發端口到集群中的本地端口才能訪問我們的應用程序。

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

$ kubectl get service example-service

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

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

現在我們可以從工作站瀏覽http://localhost:8080,并且我們應該會看到:

Hello Kubernetes!

Kubernetes 服務 NodePort YAML示例

此示例YAML創建了可用于外部網絡請求的服務。在這里,我們提到了帶Value的NodePort,因此服務被映射到集群中每個節點上的端口。

如何進行Kubernetes服務類型的淺析

下面是一個yaml的例子,它將展示我們如何在Kubernetes中使用NodePort服務類型。

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

關于如何進行Kubernetes服務類型的淺析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁夏| 张掖市| 美姑县| 饶平县| 蕲春县| 闻喜县| 宁晋县| 南乐县| 灵石县| 横峰县| 汶川县| 武川县| 禹州市| 中江县| 兴海县| 海城市| 南京市| 马尔康县| 乡城县| 三穗县| 水城县| 永寿县| 昔阳县| 印江| 西贡区| 平山县| 桑日县| 博罗县| 武平县| 呼伦贝尔市| 得荣县| 青州市| 清原| 嘉祥县| 万全县| 云浮市| 集安市| 湄潭县| 泊头市| 含山县| 广州市|