《kubernetes官方文档》使用服务访问集群中的应用
这个页面展示了如何创建Kubernetes服务对象,外部客户端可以使用它访问在集群中运行的应用程序。该服务为具有两个运行实例的应用程序提供负载平衡。
目标
- 运行两个Hello World实例。
- 创建一个服务对象暴露节点端口。
- 使用服务对象访问运行的应用。
准备工作
您需要有一个Kubernetes集群,并且必须配置kubectl命令行工具来与您的集群通信。如果您还没有集群,您可以使用Minikube创建一个集群,或者您可以使用这些Kubernetes平台:
检查版本号, 输入 kubectl version
.
为运行在两个Pods中的应用程序创建一个服务
- 在集群中运行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。
- 显示关于部署的信息:
kubectl get deployments hello-world kubectl describe deployments hello-world
- 显示关于您的副本集(ReplicaSet )对象的信息:
kubectl get replicasets kubectl describe replicasets
- 创建一个暴露部署的服务对象:
kubectl expose deployment hello-world --type=NodePort --name=example-service
- 显示关于服务的信息:
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.
- 列出运行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
- 获取一个正在运行Hello World pod的节点的公共IP地址。如何获得这个地址取决于您如何设置集群。例如,如果您正在使用Minikube,您可以通过运行
kubectl cluster-info
来查看节点地址。如果您使用的是Google Compute Engine实例,您可以使用gcloud compute instances list
命令来查看节点的公共地址。有关此命令的更多信息,请参阅GCE documentation.。 - 在您选择的节点上,创建一个允许在节点端口上传输TCP通信的防火墙规则。例如,如果您的服务NodePort值为31568,则创建一个允许TCP在端口31568上传输的防火墙规则。不同的云提供商提供了不同的配置防火墙规则的方法。例如,查看关于防火墙规则的 the GCE documentation on firewall rules, 。
- 使用节点地址和节点端口来访问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
下一节
原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《kubernetes官方文档》使用服务访问集群中的应用
暂无评论