我在單個節點上有一個 k0s Kubernetes 集群。我正在嘗試運行 aselenium/standalone-chrome來創建遠程 Selenium 節點。我遇到的問題是,如果我4444從 pod轉發,它會回應,但似乎無法通過服務埠訪問它。我得到連接被拒絕。我不知道是不是因為它忽略了非本地主機的連接。
的Pod定義pod/standalone-chrome是:
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我的定義service/standalone-chrome-service是:
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我剛剛用于測驗連接性的容器。
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. 我得到連接被拒絕。例如,這里嘗試通過busybox1容器訪問它:
$ 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:
$ 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.
編輯:這是更新后的服務定義name...
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
這是描述的輸出:
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>
uj5u.com熱心網友回復:
我從上面發布的 YAML 和控制臺輸出中發現了兩個問題。
- 服務選擇器,您已指定為
app: standalone-chrome,它應該是name: standalone-chrome(如果您嘗試從 kubernetes 集群內部訪問服務,您可以忽略下一個問題) - 您嘗試訪問的服務型別是clusterIp,它僅在您的集群網路中可用。要從集群外部訪問服務,請使用 NodePort 型別。請注意,NodePort 服務有一個預定義的埠范圍 30000 - 32767。您可以在此范圍內手動設定一個埠并將其映射到您的 4444,或者讓 Kubernetes 為您隨機選擇。
除此之外,您還可以使用該命令kubectl describe service standalone-chrome-service 來驗證您的所有 pod 是否都附加了該服務。
uj5u.com熱心網友回復:
服務的語法:
selector:
app: standalone-chrome
是正確的,selector應該是匹配的label。
服務使用標簽和選擇器匹配一組 Pod,這是一種允許對 Kubernetes 中的物件進行邏輯操作的分組原語。標簽是附加到物件的鍵/值對
有關更多詳細資訊,請參閱使用服務公開您的應用程式。
現在您需要將此label(即app: standalone-chrome)添加到您的pod.yaml元資料中:
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=""'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/363763.html
標籤:硒 硒网络驱动程序 Kubernetes
上一篇:從硒VBA中的日歷中選擇日期
