《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 expose的替代方法,您可以使用 service configuration file来创建服务。

清理

要删除服务,输入以下命令:

kubectl delete services example-service

要删除部署、副本集(ReplicaSet)和运行Hello World应用的Pods,请输入以下命令:

kubectl delete deployment hello-world

下一节

了解更多 connecting applications with services. 。

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《kubernetes官方文档》使用服务访问集群中的应用


FavoriteLoading添加本文到我的收藏
  • Trackback 关闭
  • 评论 (0)
  1. 暂无评论

您必须 登陆 后才能发表评论

return top