公开外部 IP 地址以访问集群中应用程序
- 运行 Hello World 应用程序的五个实例。
- 创建一个公开外部 IP 地址的 Service 对象。
- 使用 Service 对象访问正在运行的应用程序。
安装 .
使用 Google Kubernetes Engine 或 Amazon Web Services 等云供应商创建 Kubernetes 群集。本教程创建了一个外部负载均衡器,需要云供应商。
配置 与 Kubernetes API 服务器通信。有关说明,请参阅云供应商文档。
- 在集群中运行 Hello World 应用程序:
对象和一个关联的 [ReplicaSet](/docs/concepts/workloads/controllers/replicaset/)对象。
ReplicaSet 有五个 [Pod](/docs/concepts/workloads/pods/pod/),每个都运行 Hello World 应用程序。
- 显示有关 Deployment 的信息:
kubectl get deployments hello-world
kubectl describe deployments hello-world
- 显示有关 ReplicaSet 对象的信息:
kubectl get replicasets
kubectl describe replicasets
- 创建公开 deployment 的 Service 对象:
kubectl expose deployment hello-world --type=LoadBalancer --name=my-service
- 显示有关 Service 的信息:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-service ClusterIP 10.3.245.137 104.198.205.71 8080/TCP 54s
注意:如果外部 IP 地址显示为 <pending>,请等待一分钟再次输入相同的命令。
- 显示有关 Service 的详细信息:
kubectl describe services my-service
输出类似于:
Name: my-service
Annotations: <none>
Selector: run=load-balancer-example
Type: LoadBalancer
IP: 10.3.245.137
LoadBalancer Ingress: 104.198.205.71
Port: <unset> 8080/TCP
NodePort: <unset> 32377/TCP
Endpoints: 10.0.0.6:8080,10.0.1.6:8080,10.0.1.7:8080 + 2 more...
Session Affinity: None
Events: <none>
记下服务公开的外部 IP 地址(LoadBalancer Ingress
)。在本例中,外部 IP 地址是 104.198.205.71。还要注意 和 NodePort
的值。在本例中,Port
是 8080,NodePort
是32377。
- 在前面的输出中,您可以看到服务有几个端点:10.0.0.6:8080、10.0.1.6:8080、10.0.1.7:8080 和另外两个,这些都是正在运行 Hello World 应用程序的 pod 的内部地址。要验证这些是 pod 地址,请输入以下命令:
kubectl get pods --output=wide
- 使用外部 IP 地址(
LoadBalancer Ingress
)访问 Hello World 应用程序:
curl http://<external-ip>:<port>
其中 <external-ip>
是您的服务的外部 IP 地址(LoadBalancer Ingress
),<port>
是您的服务描述中的 port
的值。如果您正在使用 minikube,输入 minikube service my-service
将在浏览器中自动打开 Hello World 应用程序。
成功请求的响应是一条问候消息:
Hello Kubernetes!
要删除服务,请输入以下命令:
kubectl delete deployment hello-world
了解更多关于。