树叶云kubernetes教程:Kubernetes 公开外部IP地址以访问集群中应用程序

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

此页面显示如何创建公开外部 IP 地址的 Kubernetes 服务对象。

在开始之前

  • 安装 ​kubectl​。
  • 使用 Google Kubernetes Engine 或 Amazon Web Services 等云供应商创建 Kubernetes 集群。 本教程创建了一个外部负载均衡器, 需要云供应商。
  • 配置 ​kubectl ​与 Kubernetes API 服务器通信。有关说明,请参阅云供应商文档。

教程目标

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

为一个在五个 pod 中运行的应用程序创建服务

  1. 在集群中运行 Hello World 应用程序:
  2. apiVersion: apps/v1
       
    kind: Deployment
       
    metadata:
       
      labels:
       
        app.kubernetes.io/name: load-balancer-example
       
      name: hello-world
       
    spec:
       
      replicas: 5
       
      selector:
       
        matchLabels:
       
          app.kubernetes.io/name: load-balancer-example
       
      template:
       
        metadata:
       
          labels:
       
            app.kubernetes.io/name: load-balancer-example
       
        spec:
       
          containers:
       
          - image: gcr.io/google-samples/node-hello:1.0
       
            name: hello-world
       
            ports:
       
            - containerPort: 8080
       
    kubectl apply -f https://k8s.io/examples/service/load-balancer-example.yaml
    

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

  3. 显示有关 Deployment 的信息:
  4. kubectl get deployments hello-world
    kubectl describe deployments hello-world
  5. 显示有关 ReplicaSet 对象的信息:
  6. kubectl get replicasets
    kubectl describe replicasets
  7. 创建公开 Deployment 的 Service 对象:
  8. kubectl expose deployment hello-world --type=LoadBalancer --name=my-service
    
  9. 显示有关 Service 的信息:
  10. kubectl get services my-service
    

    输出类似于:

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

    提示:​type=LoadBalancer​ 服务由外部云服务提供商提供支持,本例中不包含此部分。

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

  11. 显示有关 Service 的详细信息:
  12. kubectl describe services my-service
    

    输出类似于:

    Name:           my-service
    Namespace:      default
    Labels:         app.kubernetes.io/name=load-balancer-example
    Annotations:    <none>
    Selector:       app.kubernetes.io/name=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。还要注意 ​Port ​和 ​NodePort ​的值。 在本例中,​Port ​是 8080,​NodePort ​是 32377。

  13. 在前面的输出中,你可以看到服务有几个端点: 10.0.0.6:8080、10.0.1.6:8080、10.0.1.7:8080 和另外两个, 这些都是正在运行 Hello World 应用程序的 Pod 的内部地址。 要验证这些是 Pod 地址,请输入以下命令:
  14. kubectl get pods --output=wide
    

    输出类似于:

    NAME                         ...  IP         NODE
    hello-world-2895499144-1jaz9 ...  10.0.1.6   gke-cluster-1-default-pool-e0b8d269-1afc
    hello-world-2895499144-2e5uh ...  10.0.1.8   gke-cluster-1-default-pool-e0b8d269-1afc
    hello-world-2895499144-9m4h1 ...  10.0.0.6   gke-cluster-1-default-pool-e0b8d269-5v7a
    hello-world-2895499144-o4z13 ...  10.0.1.7   gke-cluster-1-default-pool-e0b8d269-1afc
    hello-world-2895499144-segjf ...  10.0.2.5   gke-cluster-1-default-pool-e0b8d269-cpuc
  15. 使用外部 IP 地址(​LoadBalancer Ingress​)访问 Hello World 应用程序:
  16. curl http://<external-ip>:<port>
    

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

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

    Hello Kubernetes!
    

清理

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

kubectl delete services my-service

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

kubectl delete deployment hello-world

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/192438.html<

(0)
运维的头像运维
上一篇2025-04-01 14:22
下一篇 2025-04-01 14:23

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注