web-services - Kubernetes: "persistent"端口转发

标签 web-services kubernetes port

我使用私有(private)在线服务器通过 kubernetes 设置 jenkins 环境。

我有以下服务文件:

apiVersion: v1
kind: Service
metadata:
  name: jenkins
  namespace: jenkins
spec:
  type: NodePort
  ports:
  - port: 8080
    targetPort: 8080
  selector:
    app: jenkins

它有效,这意味着我可以从我的服务器获取 jenkins pod。 但是,我无法从我的本地计算机网络浏览器访问我的服务。

为此,我必须键入以下命令:

kubectl port-forward -n jenkins service/jenkins 8080:8080 --address=<localServerIp>

我读到 port-forward 仅供调试 ( Difference between kubectl port-forwarding and NodePort service )。 但是我找不到如何将我的服务配置为在 Internet 上可见。我想要等效于持久端口转发的端口转发规则。

最佳答案

您提供的配置应该没问题,但您必须在节点上配置额外的防火墙规则才能连接到 NodeIP:NodePort 上的 Jenkins 服务。外部。

有一定的considerations在配置裸机集群时,因为您必须配置自己的负载均衡器才能为您的服务提供外部可用的 IP 地址。云环境使用自己的负载均衡器使这更容易。您可以配置自己的负载均衡器,然后创建一个 LoadBalancer服务类型并以这种方式连接到您的应用程序。检查different types of Services here

虽然不推荐,但您可以尝试的另一件事是制作您的 kubectl port-forward命令持久化。你可以设置 kubelet parameter streaming-connection-idle-timeout到 0 - 这将永远不会关闭您的转发。如果您不想更改任何配置,您可以运行:

while true; do kubectl port-forward -n jenkins service/jenkins 8080:8080 --address=<localServerIp>; done

一些您可能会觉得有用的链接:similar case , exposing apps in kubernetes .

关于web-services - Kubernetes: "persistent"端口转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70557167/

相关文章:

python - 无法打开文件应用。 Kubernetes和Docker

java - 带有调试参数的 Spring Boot 在应用程序停止后不关闭调试端口

php - XAMPP 端口 80 被 PID 4 的 "Unable to open process"使用

web-services - WSDL 与 REST 优缺点

c# - 是什么驱动数据传输对象的设计?

java - 包含 XML 内容的 CXF Web 服务响应

azure - Airflow Kubernetes 执行器日志

java - CXF 用户名 token 问题

docker - Kubernetes是否会自动下载Docker镜像?

apache - 从 Apache httpd 443 到 JBoss 8443 的端口转发