当前位置: 首页 > news >正文

[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 <pod-name> <local-port>:<pod-port>

kubectl expose

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

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

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

示例:

kubectl expose <resource-type> <resource-name> --port=<port> --target-port=<target-port> --type=<service-type>

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

<resource-type>:指定要公开的资源类型,如 Deployment、Pod、ReplicaSet 等。
<resource-name>:指定要公开的资源名称。
--port=<port>:指定 Service 对象要监听的端口。
--target-port=<target-port>:指定 Service 对象要转发到的目标端口。
--type=<service-type>:指定 Service 对象的类型,如 ClusterIP、NodePort、LoadBalancer 或 ExternalName。

以下是 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 可以自动处理负载均衡和服务发现。

http://www.lryc.cn/news/168356.html

相关文章:

  • vscode如何设置文件折叠
  • Linux centos7 bash编程训练
  • k8s集群换ip
  • 选择HAL库还是标准库
  • 计算机竞赛 机器视觉的试卷批改系统 - opencv python 视觉识别
  • Mapbox gl HTML经纬度点渲染,动态轨迹播放,自定义图形以及轨迹上显示箭头方向
  • kubernetes部署(kubeadmin)
  • Leetcode168. Excel表列名称
  • 碎片笔记 | 大模型攻防简报
  • 【100天精通Python】Day63:Python可视化_Matplotlib绘制子图,子图网格布局属性设置等示例+代码
  • 【Android常见问题(六)】- UX标注色值带有百分比的使用方法
  • Prometheus+Grafana可视化监控【ElasticSearch状态】
  • Java手写堆排序(Heap Sort)和案例
  • Linux设备驱动模型之字符设备
  • Kafka3.0.0版本——消费者(自动提交 offset)
  • 【业务功能116】微服务-springcloud-springboot-Kubernetes集群-k8s集群-KubeSphere-公共服务 DNS
  • 马斯洛的动机与人格、需求层次理论
  • TCP/IP网络传输模型及协议
  • git 推送出现fatal: The remote end hung up unexpectedly解决方案
  • Hive内置函数字典
  • svg 知识点总结
  • 开源库源码分析:OkHttp源码分析(二)
  • 校园地理信息系统的设计与实现
  • Vulnhub实战-prime1
  • Scala学习笔记
  • 虹科分享 | 软件供应链攻击如何工作?如何评估软件供应链安全?
  • gRpc入门和springboot整合
  • 基于FPGA点阵显示屏设计-毕设
  • Rocky9.2基于http方式搭建局域网yum源
  • Android 串口通讯