如何在 kubernetes pod 中访问我的计算机本地主机中的 运行 应用程序?

How can access running app in my computer localhost inside kubernetes pod?

我有一个关于 kubernetes 网络的问题。

我的工作经验:

    @app.route("/create",methods=["GET","POST"])
def create():
    
    if request.method =="POST":
        dosya_adi=request.form["sendmail"]
        server = jenkins.Jenkins('http://localhost:8080/', username='my-user-name', password='my-password')
        server.build_job('jenkins_openvpn', {'FILE_NAME': dosya_adi}, token='my-token')

docker run -it --network="host" --name=jenkins-app jenkins-app

但我想对 kubernetes 做同样的事情。为此,我写了这个 yml 文件。

apiVersion: v1
kind: Pod
metadata:
  name: jenkins-pod
spec:
  hostNetwork: true
  containers:
  - name: jenkins-app
    image: jenkins-app:latest
    imagePullPolicy: Never
    ports:
    - containerPort: 5000

如果有一种方法可以用 Kubernetes 做到这一点,您会建议吗?

首先公开你的 Jenkins 服务器:

kubectl expose pod jenkins-pod --port=8080 --target-port 5000

然后检查服务是否存在:

kubectl get svc jenkins-pod -o yaml

将它用于您的 Flask 应用程序以通过此服务连接到您的 Jenkins 服务器:

... jenkins.Jenkins('http://jenkins-pod.default.svc.cluster.local:8080/...'

请注意假设您 运行 默认命名空间中的所有内容,否则将“默认”更改为您的命名空间。

我创建了一个 endpoint.yml 文件并在下面的命令中添加了这个文件,这解决了我的问题:

apiVersion: v1
kind: Endpoints
metadata:
    name: jenkins-server
subsets:
    - addresses:
        - ip: my-ps-ip
    ports:
        - port: 8080

然后,我在我的烧瓶应用程序中更改这一行,如下所示:

server = jenkins.Jenkins('http://my-ps-ip:8080/', username='my-user-name', password='my-password')