本文展示如何创建一个 Kubernetes 服务对象,来提供负载均衡入口以访问集群内正在运行的应用程序。
你必须拥有一个 Kubernetes 的集群,同时你的 Kubernetes 集群必须带有 kubectl 命令行工具。 如果你还没有集群,你可以通过 Minikube 构建一 个你自己的集群,或者你可以使用下面任意一个 Kubernetes 工具构建:
为了检查版本, 输入 kubectl version
.
在您的集群中运行一个 Hello World 应用:
kubectl run hello-world --replicas=2 --labels="run=load-balancer-example" --image=gcr.io/google-samples/node-hello:1.0 --port=8080
列出运行 Hello World 应用的 pod:
kubectl get pods --selector="run=load-balancer-example"
输出应类似于:
```
NAME READY STATUS RESTARTS AGE
hello-world-2189936611-8fyp0 1/1 Running 0 6m
hello-world-2189936611-9isq8 1/1 Running 0 6m
```
创建一个服务对象来暴露这个 deployment:
kubectl expose deployment <your-deployment-name> --type=NodePort --name=example-service
这里的 `<your-deployment-name>` 是您的 deployment 的名称。
显示您服务的 IP 地址:
kubectl get services example-service
输出展示了您服务的内部和外部 IP 地址。如果外部 IP 地址显示 <pending>
,那么您需要重复运行以上命令。
Note:注意: 如果您使用 Minikube,那么您将不会获得外部 IP 地址。外部 IP 地址将保持 pending 状态。
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
example-service 10.0.0.160 <pending> 8080/TCP 40s
使用您的服务对象来访问这个 Hello World 应用:
curl
这里的 <your-external-ip-address>
是您服务的外部 IP 地址。
输出是来自应用的 hello 消息:
Hello Kubernetes!
Note:注意: 如果您使用 Minikube,输入以下命令:
kubectl cluster-info
kubectl describe services example-service
输出将展示您的 Minikube 节点的 IP 地址和您服务的 NodePort 值。然后输入以下命令来访问这个 Hello World 应用:
curl <minikube-node-ip-address>:<service-node-port>
这里的 <minikube-node-ip-address>
是您的 Minikube 节点的 IP 地址,<service-node-port>
是您服务的 NodePort 值。
作为 kubectl expose
的替代方法,您可以使用 服务配置文件 来创建服务。
学习更多关于如何 通过服务连接应用。
此页是否对您有帮助?
Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on Stack Overflow. Open an issue in the GitHub repo if you want to report a problem or suggest an improvement.