Den*_*boy 2 service jenkins google-cloud-platform kubernetes
我在Kubernetes为jenkins创建了一个部署.pod运行正常,我已经创建了一个服务来访问service-ip:8080上的jenkins,但似乎无法正常工作.当我创建ingress上面的服务时,我可以使用public 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
Run Code Online (Sandbox Code Playgroud)
我按上述方法创建了我的服务:
$ 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
Run Code Online (Sandbox Code Playgroud)
我试图访问:10.47.xx.xx:8080但我无法访问jenkins UI.我究竟做错了什么?我也试过了10.47.xx.xx:30960
我想使用服务访问我的jenkins UI,但我想在我的集群中保持私有.(ingress公开).
更新:
$ 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>
Run Code Online (Sandbox Code Playgroud)
访问10.44.10.xx:8080上的窗格也不起作用.
如果我理解正确,您希望群集中运行的任何容器都能够访问您的jenkins服务,但是您不希望您的jenkins服务可以在群集外部访问,就像您的浏览器一样?
在这种情况下:
curl http://jenkins-ui.default:8080
curl http://10.47.10.xx:8080
Run Code Online (Sandbox Code Playgroud)
将在kubernetes集群中的任何容器内完美地工作.
此外,您无法10.47.10.xx:8080从群集外部访问它,因为该IP仅在您的kubernetes群集中有效/可用.
如果您想从集群外部访问它,那么入口控制器或连接http://<node-ip>: 30960是连接到jenkins-uik8s服务的唯一方法,因此也就是连接到它后面的pod.
编辑:使用kubectl port-forward
在开发模式下,如果要访问内部运行的容器,可以使用kubectl port-forward:
kubectl port-forward <jenkins-ui-pod> 9090:8080
Run Code Online (Sandbox Code Playgroud)
这样,http://localhost:9090将显示jenkins-ui屏幕,因为您有kubectl访问权限.
kubectl port-forward不适用于服务:https://github.com/kubernetes/kubernetes/issues/15180
| 归档时间: |
|
| 查看次数: |
3265 次 |
| 最近记录: |