我有一個關于 kubernetes 網路的問題。
我的作業情景:
- 我有一個 Jenkins 容器,我的本地主機和這個容器正在運行。在詹金斯內部,我有一份作業。訪問 jenkins ,我使用“http://localhost:8080”網址。(詹金斯不在 kubernetes 內運行)
- 我的燒瓶應用程式,使用以下命令觸發 Jenkins 作業:
@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')
- 然后,我對這個燒瓶應用程式進行了 Dockerize。我的圖片名稱是:“jenkins-app”
- 如果我運行這個命令,一切都很完美:
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
- 使用這個 yml 檔案,我使用埠 5000 訪問燒瓶應用程式。雖然我想觸發 jenkins 作業,但我收到如下錯誤:requests.exceptions.ConnectionError
你會建議是否有辦法用 Kubernetes 做到這一點?
uj5u.com熱心網友回復:
我創建了一個 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')
uj5u.com熱心網友回復:
首先你暴露你的 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/...'
請注意,假設您在默認名稱空間中運行所有內容,否則將“默認”更改為您的名稱空間。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/318837.html
標籤:码头工人 詹金斯 Kubernetes
下一篇:無法連接到外部IP
