如何在浏览器中访问Kubernetes NodePort服务?

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上的窗格也不起作用.

iam*_*nat 8

如果我理解正确,您希望群集中运行的任何容器都能够访问您的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