首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法通过Kubernetes服务访问独立的-chrome selenium服务器

无法通过Kubernetes服务访问独立的-chrome selenium服务器
EN

Stack Overflow用户
提问于 2021-11-22 19:22:03
回答 1查看 618关注 0票数 1

我在一个节点上有一个k0s Kubernetes集群。我正在尝试运行一个selenium/standalone-chrome来创建一个远程Selenium节点。我遇到的问题是,如果我从吊舱中转发4444,但似乎无法通过服务端口访问它,它就会做出响应。我被拒绝了。我不知道是不是因为忽略了非本地主机的连接。

Podpod/standalone-chrome的定义是:

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: standalone-chrome
spec:
  containers:
  - name: standalone-chrome
    image: selenium/standalone-chrome
    ports:
    - containerPort: 4444
    env:
    - name: JAVA_OPTS
      value: '-Dwebdriver.chrome.whitelistedIps=""'

我为service/standalone-chrome-service提供的service/standalone-chrome-service定义是:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: standalone-chrome-service
  labels:
    app: standalone-chrome
spec:
  ports:
  - port: 4444
    name: standalone-chrome
  type: ClusterIP
  selector:
    app: standalone-chrome

这将创建以下内容,以及用于测试连接性的busybox容器。

代码语言:javascript
复制
NAME                         READY   STATUS    RESTARTS   AGE
pod/busybox1                 1/1     Running   70         2d22h
pod/standalone-chrome        1/1     Running   0          3m15s

NAME                                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
service/kubernetes                  ClusterIP   10.96.0.1       <none>        443/TCP          18d
service/standalone-chrome-service   ClusterIP   10.111.12.1     <none>        4444/TCP         3m5s

我现在面临的问题是,我无法通过standalone-chrome-service访问远程Selenium服务。我被拒绝了。例如,这里试图通过busybox1容器来达到它:

代码语言:javascript
复制
$ wget http://standalone-chrome-service:4444
Connecting to standalone-chrome-service:4444 (10.111.12.1:4444)
wget: can't connect to remote host (10.111.12.1): Connection refused

不过,我可以使用pod/standalone-chrome将其从kubectl port-forward转发到主机,并且工作正常,我认为这可以确认服务正在成功运行,但无法通过Service访问。

代码语言:javascript
复制
$ kubectl port-forward pod/standalone-chrome 4444:4444 &
Forwarding from 127.0.0.1:4444 -> 4444
Forwarding from [::1]:4444 -> 4444
$ wget http://localhost:4444
--2021-11-22 13:37:20--  http://localhost:4444/
Resolving localhost (localhost)... ::1, 127.0.0.1
Connecting to localhost (localhost)|::1|:4444... connected.
...

对于如何通过Service访问Selenium远程服务器,我将非常感激您的帮助。

编辑:这是使用name更新的服务定义.

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: standalone-chrome-service
  labels:
    app: standalone-chrome
spec:
  ports:
  - port: 4444
    name: standalone-chrome
  type: ClusterIP
  selector:
    name: standalone-chrome

以下是“描述”的输出:

代码语言:javascript
复制
Name:              standalone-chrome-service
Namespace:         default
Labels:            app=standalone-chrome
Annotations:       <none>
Selector:          name=standalone-chrome
Type:              ClusterIP
IP Families:       <none>
IP:                10.100.179.116
IPs:               10.100.179.116
Port:              standalone-chrome  4444/TCP
TargetPort:        4444/TCP
Endpoints:         <none>
Session Affinity:  None
Events:            <none>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-23 11:14:22

服务的语法有:

代码语言:javascript
复制
  selector:
    app: standalone-chrome

是正确的,selector应该由label匹配。

服务使用标签和选择器匹配一组Pods,这是一个分组原语,允许对Kubernetes中的对象进行逻辑操作。标签是附加在对象上的键/值对。

有关更多细节,使用服务公开应用程序

现在,您需要将这个label (即app: standalone-chrome)添加到pod.yaml元数据中:

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: standalone-chrome
  labels:
    app: standalone-chrome # this label should match to selector in service
spec:
  containers:
  - name: standalone-chrome
    image: selenium/standalone-chrome
    ports:
    - containerPort: 4444
    env:
    - name: JAVA_OPTS
      value: '-Dwebdriver.chrome.whitelistedIps=""'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70071293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档