k8s 端口转发

最后发布时间 : 2026-07-08 17:40:12 浏览量 :

常见有 5 种方法让宿主机访问 RStudio 的 8787 端口:

  1. kubectl port-forward(最简单,临时)
    适合临时调试,不改 YAML。
kubectl -n default port-forward pod/rstudio 8787:8787

然后在宿主机打开 http://127.0.0.1:8787

  1. Pod 使用 hostPort(直接暴露宿主机 8787)
    在容器端口里加 hostPort,宿主机可直接访问。
ports:
- containerPort: 8787
  hostPort: 8787

访问地址:http://宿主机IP:8787
注意:同一台宿主机上这个端口只能被一个 Pod 占用。

  1. Pod 使用 hostNetwork(最直接,但隔离性最弱)
    让 Pod 直接使用宿主机网络栈。
spec:
  hostNetwork: true
  dnsPolicy: ClusterFirstWithHostNet

访问地址:http://宿主机IP:8787
注意:网络隔离更弱,和宿主机端口冲突风险更高。

  1. Service NodePort(生产里常用,推荐)
    给 Pod 建一个 Service,通过节点端口访问。
apiVersion: v1
kind: Service
metadata:
  name: rstudio-svc
  namespace: default
spec:
  type: NodePort
  selector:
    app: rstudio
  ports:
  - port: 8787
    targetPort: 8787
    nodePort: 30787

访问地址:http://宿主机IP:30787

  1. Ingress(有域名时推荐)
    先建 ClusterIP Service,再配 Ingress(k3s 默认常带 Traefik),通过域名走 80/443。
    适合长期对外访问、配 TLS 和反向代理。

你的场景建议:

  1. 临时用:port-forward
  2. 长期稳定用:NodePort
  3. 追求最少资源对象:hostPort

如果你要,我可以直接按你当前清单改成 NodePort 方案(含完整 YAML)。