1. 程式人生 > >《kubernetes官方文件》使用服務訪問叢集中的應用

《kubernetes官方文件》使用服務訪問叢集中的應用

目標

  • 執行兩個Hello World例項。
  • 建立一個服務物件暴露節點埠。
  • 使用服務物件訪問執行的應用。

準備工作

您需要有一個Kubernetes叢集,並且必須配置kubectl命令列工具來與您的叢集通訊。如果您還沒有叢集,您可以使用Minikube建立一個叢集,或者您可以使用這些Kubernetes平臺:

檢查版本號, 輸入 kubectl version.

為執行在兩個Pods中的應用程式建立一個服務

  1. 在叢集中執行Hello World:
    kubectl run hello-world --replicas=2 --labels="run=load-balancer-example" --image=gcr.io/google-samples/node-hello:1.0  --port=8080
    

    前面的命令建立一個部署 物件和一個相關的ReplicaSet物件。ReplicaSet有兩個Pod,每一個都執行Hello World。

  2. 顯示關於部署的資訊:
    kubectl get deployments hello-world
    kubectl describe deployments hello-world
    
  3. 顯示關於您的副本集(ReplicaSet )物件的資訊:
    kubectl get replicasets
    kubectl describe replicasets
    
  4. 建立一個暴露部署的服務物件:
    kubectl expose deployment hello-world --type=NodePort --name=example-service
    
  5. 顯示關於服務的資訊:
    kubectl describe services example-service
    

    輸出資訊類似於:

     Name:                   example-service
     Namespace:              default
     Labels:                 run=load-balancer-example
     Annotations:            <none>
     Selector:               run=load-balancer-example
     Type:                   NodePort
     IP:                     10.32.0.16
     Port:                   <unset> 8080/TCP
     Endpoints:              10.200.1.4:8080,10.200.2.5:8080
     Session Affinity:       None
     Events:                 <none>
    

    請注意該服務的NodePort值。例如,在前面的輸出中,NodePort值是31496.

  6. 列出執行Hello World程式的Pod:
    kubectl get pods --selector="run=load-balancer-example" --output=wide
    

    輸出資訊類似於:

     NAME                           READY   STATUS    ...  IP           NODE
     hello-world-2895499144-bsbk5   1/1     Running   ...  10.200.1.4   worker1
     hello-world-2895499144-m1pwt   1/1     Running   ...  10.200.2.5   worker2
    
  7. 獲取一個正在執行Hello World pod的節點的公共IP地址。如何獲得這個地址取決於您如何設定叢集。例如,如果您正在使用Minikube,您可以通過執行kubectl cluster-info來檢視節點地址。如果您使用的是Google Compute Engine例項,您可以使用gcloud compute instances list命令來檢視節點的公共地址。有關此命令的更多資訊,請參閱GCE documentation.。
  8. 在您選擇的節點上,建立一個允許在節點埠上傳輸TCP通訊的防火牆規則。例如,如果您的服務NodePort值為31568,則建立一個允許TCP在埠31568上傳輸的防火牆規則。不同的雲提供商提供了不同的配置防火牆規則的方法。例如,檢視關於防火牆規則的 the GCE documentation on firewall rules, 。
  9. 使用節點地址和節點埠來訪問Hello World應用:
    curl http://<public-node-ip>:<node-port>
    

    <public-node-ip>是您的節點的公共IP地址,<node-port>是您的服務的節點NodePort 值。

    對成功請求的響應是一個hello訊息:

     Hello Kubernetes!
    

使用服務配置檔案

清理

要刪除服務,輸入以下命令:

kubectl delete services example-service

要刪除部署、副本集(ReplicaSet)和執行Hello World應用的Pods,請輸入以下命令:

kubectl delete deployment hello-world

下一節