我用一个私人的在线服务器通过kubernetes设置一个jenkins环境。
我有以下服务文件:
apiVersion: v1
kind: Service
metadata:
name: jenkins
namespace: jenkins
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
selector:
app: jenkins
它能工作,这意味着我可以从我的服务器wget jenkins pod。但是我不能从我的本地计算机网络浏览器访问我的服务。
为此,我必须键入以下命令:
kubectl port-forward -n jenkins service/jenkins 8080:8080 --address=<localServerIp>
我读到port-forward是只调试的(kubectl port-forwarding和NodePort服务之间的区别)。但是我找不到如何配置我的服务使其在互联网上可见。我想要一个持久的port-forward的port-forward规则的等价物。
2条答案
按热度按时间x33g5p2x1#
您提供的配置应该没有问题,但您必须在节点上配置其他防火墙规则,以便能够从外部连接到
NodeIP:NodePort
上的Jenkins服务。配置裸机群集时存在某些considerations问题,因为你必须配置自己的负载平衡器,以便为你的服务提供外部可用的IP地址。云环境使用自己的负载平衡器,从而简化了此操作。你可以配置自己的负载平衡器,然后创建
LoadBalancer
类型的服务,并以这种方式连接到你的应用。在此处检查不同类型的服务另一个你可以尝试的方法是使你的
kubectl port-forward
命令持久化。你可以将kubelet parameterstreaming-connection-idle-timeout
设置为0 -这将永远不会关闭转发。如果你不想更改任何配置,你可以运行:while true; do kubectl port-forward -n jenkins service/jenkins 8080:8080 --address=<localServerIp>; done
以下链接可能对您有用:这是一个很好的例子。
t0ybt7op2#
您可能需要测试Telepresence.io,它允许您建立到远程Kubernetes集群的连接。这就像您的本地笔记本电脑位于Kubernetes集群中一样。您可以使用集群DNS,甚至重新路由连接到您的笔记本电脑。