公开外部 IP 地址以访问集群中应用程序

    • 安装 .

    • 使用 Google Kubernetes Engine 或 Amazon Web Services 等云供应商创建 Kubernetes 集群。 本教程创建了一个外部负载均衡器, 需要云供应商。

    • 配置 与 Kubernetes API 服务器通信。有关说明,请参阅云供应商文档。

    • 运行 Hello World 应用程序的五个实例。
    • 创建一个公开外部 IP 地址的 Service 对象。
    • 使用 Service 对象访问正在运行的应用程序。
    1. 在集群中运行 Hello World 应用程序:

      1. kubectl apply -f https://k8s.io/examples/service/load-balancer-example.yaml

      前面的命令创建一个 Deployment 对象和一个关联的 对象。 ReplicaSet 有五个 Pods, 每个都运行 Hello World 应用程序。

    2. 显示有关 Deployment 的信息:

      1. kubectl describe deployments hello-world
      1. kubectl get replicasets
      2. kubectl describe replicasets
    3. 创建公开 Deployment 的 Service 对象:

      1. kubectl expose deployment hello-world --type=LoadBalancer --name=my-service
    4. 显示有关 Service 的信息:

      输出类似于:

      1. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
      2. my-service ClusterIP 10.3.245.137 104.198.205.71 8080/TCP 54s

      提示:type=LoadBalancer 服务由外部云服务提供商提供支持,本例中不包含此部分, 详细信息请参考

      提示:如果外部 IP 地址显示为 <pending>,请等待一分钟再次输入相同的命令。

    5. 显示有关 Service 的详细信息:

      1. kubectl describe services my-service

      输出类似于:

      1. Name: my-service
      2. Labels: run=load-balancer-example
      3. Selector: run=load-balancer-example
      4. Type: LoadBalancer
      5. IP: 10.3.245.137
      6. LoadBalancer Ingress: 104.198.205.71
      7. Port: <unset> 8080/TCP
      8. NodePort: <unset> 32377/TCP
      9. Endpoints: 10.0.0.6:8080,10.0.1.6:8080,10.0.1.7:8080 + 2 more...
      10. Session Affinity: None
      11. Events: <none>
    6. 在前面的输出中,您可以看到服务有几个端点: 10.0.0.6:8080、10.0.1.6:8080、10.0.1.7:8080 和另外两个, 这些都是正在运行 Hello World 应用程序的 pod 的内部地址。 要验证这些是 pod 地址,请输入以下命令:

      1. kubectl get pods --output=wide

      输出类似于:

    7. 使用外部 IP 地址(LoadBalancer Ingress)访问 Hello World 应用程序:

      1. curl http://<external-ip>:<port>

      其中 <external-ip> 是您的服务的外部 IP 地址(LoadBalancer Ingress), <port> 是您的服务描述中的 port 的值。 如果您正在使用 minikube,输入 minikube service my-service 将在浏览器中自动打开 Hello World 应用程序。

      成功请求的响应是一条问候消息:

      1. Hello Kubernetes!

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

      要删除正在运行 Hello World 应用程序的 Deployment,ReplicaSet 和 Pod,请输入以下命令:

      1. kubectl delete deployment hello-world