![](/img/trans.png)
[英]How to configure ingress to a service in kubernetes hosted on jelastic?
[英]How to access Kubernetes NodePort service in browser?
我已經在Kubernetes中為詹金斯創建了一個部署。 該pod運行正常,我已經在service-ip:8080上創建了一個用於訪問jenkins的服務,但它似乎無法正常工作。 當我在服務上方創建ingress
,可以使用公共ip訪問它。
kind: Service
apiVersion: v1
metadata:
name: jenkins-ui
namespace: jenkins
spec:
type: NodePort
selector:
app: jenkins
ports:
- protocol: TCP
port: 8080
targetPort: 8080
name: ui
我如上所述創建了我的服務:
$ kubectl get svc --namespace=jenkins
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
jenkins-ui NodePort 10.47.xx.xx <none> 8080:30960/TCP 1d
我嘗試訪問: 10.47.xx.xx:8080
但無法訪問jenkins UI。 我究竟做錯了什么? 我也嘗試了10.47.xx.xx:30960
我想使用服務訪問我的jenkins UI,但是我想在集群中將其保持私有狀態。 (女主角將其公開)。
更新:
$ kubectl describe svc jenkins-ui --namespace jenkins
Name: jenkins-ui
Namespace: jenkins
Labels: <none>
Annotations: <none>
Selector: app=jenkins
Type: NodePort
IP: 10.47.xx.xx Port: ui 8080/TCP
TargetPort: 8080/TCP
NodePort: ui 30960/TCP
Endpoints: 10.44.10.xx:8080
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
訪問10.44.10.xx:8080上的Pod也不起作用。
如果我理解正確,您希望集群中運行的任何容器都能夠訪問您的jenkins服務,但是您不希望在集群外部通過諸如瀏覽器之類的東西來訪問jenkins服務嗎?
在這種情況下:
curl http://jenkins-ui.default:8080
curl http://10.47.10.xx:8080
從kubernetes集群中的任何容器內部都可以正常工作。
另外,您不能從群集外部訪問它10.47.10.xx:8080
,因為該IP僅在kubernetes群集內部有效/可用。
如果要從群集外部訪問它,請使用入口控制器或在http://<node-ip>: 30960
進行連接http://<node-ip>: 30960
是連接到jenkins-ui
k8s服務以及其后的pod的唯一方法。
編輯:使用kubectl端口轉發
在開發模式下,如果要訪問內部運行的容器,可以使用kubectl port-forward
:
kubectl port-forward <jenkins-ui-pod> 9090:8080
這樣, http://localhost:9090
將顯示jenkins-ui屏幕,因為您具有kubectl訪問權限。
kubectl port-forward
不適用於服務: https : //github.com/kubernetes/kubernetes/issues/15180
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.