• [k8s] kubectl port-forward 和kubectl expose的区别


    kubectl port-forward 和 kubectl expose 是 Kubernetes 命令行工具 kubectl 提供的两种不同方式来公开服务。

    kubectl port-forward

    kubectl port-forward 命令用于在本地主机集群内部的 Pod 之间建立一个临时的端口转发通道。
    该命令将本地机器上的一个端口绑定到集群内部的 Pod 上的指定端口,从而允许您直接访问该 Pod。
    适用于临时调试测试,或者当您只需要与特定 Pod 进行交互时使用。
    示例:

    kubectl port-forward  :
    
    • 1

    kubectl expose

    kubectl expose 命令用于创建一个新的 Service 资源对象,以公开指定的 Deployment、Pod 或其他资源。

    通过创建 Service 对象,您可以为集群内外提供稳定的服务访问点,并自动启用负载均衡服务发现

    适用于常驻性的服务公开和长期运行。

    示例:

    kubectl expose   
    		--port= --target-port= 
    		--type=
    
    • 1
    • 2
    • 3

    kubectl expose 命令是通过指定一些选项来创建 Service 对象。以下是创建 Service 时可能用到的一些选项:

    :指定要公开的资源类型,如 Deployment、Pod、ReplicaSet 等。
    :指定要公开的资源名称。
    --port=:指定 Service 对象要监听的端口。
    --target-port=:指定 Service 对象要转发到的目标端口。
    --type=:指定 Service 对象的类型,如 ClusterIP、NodePort、LoadBalancer 或 ExternalName。
    
    • 1
    • 2
    • 3
    • 4
    • 5

    以下是 service-type 详解:

    • ClusterIP(默认):

    ClusterIP 类型将服务公开为仅在集群内部可访问的 IP 地址。
    通过该类型的 Service,其他 Pod 或服务可以通过 Cluster IP 地址访问服务。
    这是默认的 Service 类型。

    • NodePort

    NodePort 类型为每个节点分配一个随机端口,并将请求转发到 Service 上的目标端口。
    通过该类型的 Service,可以使用节点的 IP 地址和分配的端口从集群外部访问服务。
    注意,虽然会打开一个高于 30000 的端口范围,但是该类型不适合直接在生产环境中使用,通常用于开发和测试。

    • LoadBalancer

    LoadBalancer 类型通过云服务提供商为 Service 创建一个外部的负载均衡器,并为 Service 分配一个公共 IP 地址。
    通过该类型的 Service,可以从公共 IP 地址访问服务,负载均衡器会自动将请求转发到后端 Pod。
    注意,使用该类型的 Service 需要确保 Kubernetes 集群运行在支持提供商的云平台上,并且需要正确配置提供商的负载均衡器。

    • ExternalName

    ExternalName 类型允许将 Service 映射到集群外部的任意 DNS 记录。
    通过该类型的 Service,可以使用 Service 的名称访问外部服务或域名,而不需要通过 Cluster IP 或者负载均衡器来转发请求。


    区别总结如下

    1. kubectl port-forward 主要用于临时的本地端口转发,允许直接与 Pod 进行交互,适用于调试和测试。
      kubectl expose 创建一个新的 Service 对象来公开资源(如 Deployment 或 Pod),提供稳定的服务访问点,适用于长期运行。

    2. kubectl port-forward 可以单独与一个指定的 Pod 进行通信,
      而 kubectl expose 会在集群中创建一个新的 Service 对象,为多个 Pod 提供统一的访问点。

    3. 使用 kubectl port-forward 后,您需要手动将本地服务地址告知其他人或服务,而 kubectl expose 可以自动处理负载均衡和服务发现。

  • 相关阅读:
    LVS+Keepalived群集
    【简单的留言墙】HTML+CSS+JavaScript
    人机融合有助于解决P-NP问题的理解与解决
    我自己理解的JAVA反射
    微信小程序——生命周期详解(代码解读)
    3. Java 并发
    HDF5编译安装
    【梳理】第一章 浅谈物体检测与PyTorch
    【.NET6+Avalonia】开发支持跨平台的仿WPF应用程序以及基于ubuntu系统的演示
    Windows11+wsl2+cuda+conda+pytorch安装记录之处处都是坑
  • 原文地址:https://blog.csdn.net/qq_44810930/article/details/132921290