[英]Kafka connect - Failed to connect to localhost port 8083: Connection refused
我有一個依賴 kafka 服務的應用程序。
使用 Kafka 連接時,在運行用於 Kafka 連接的 kube.netes pod 的 Linux VM 上嘗試curl localhost:8083
時出現錯誤。
curl -v localhost:8083
給出:
kubectl get po -o wide
for my kube.netes 命名空間給出:
當我使用sudo lsof -i -P -n | grep LISTEN
檢查打開的端口時 sudo lsof -i -P -n | grep LISTEN
我沒有看到列出的 8083。 kafka connect pod 正在運行,並且該 pod 的日志中沒有任何可疑之處。
我認為有一個 kube.netes 清單可能用於設置 Kafka 連接服務,這些是相關部分。 我非常感謝有關如何弄清楚為什么我不能 curl localhost:8083 的任何建議
apiVersion: apps/v1
kind: Deployment
metadata:
name: kafka-connect
namespace: my-namespace
spec:
...
template:
metadata:
labels:
app: connect
spec:
containers:
- name: kafka-connect
image: confluentinc/cp-kafka-connect:3.0.1
ports:
- containerPort: 8083
env:
- name: CONNECT_REST_PORT
value: "8083"
- name: CONNECT_REST_ADVERTISED_HOST_NAME
value: "kafka-connect"
volumes:
- name: connect-plugins
persistentVolumeClaim:
claimName: pvc-connect-plugin
- name: connect-helpers
secret:
secretName: my-kafka-connect-config
---
apiVersion: v1
kind: Service
metadata:
name: kafka-connect
namespace: my-namespace
labels:
app: connect
spec:
ports:
- port: 8083
selector:
app: connect
如果不進行一些修改,您無法從集群外部連接到集群內部運行的服務。
您有三種可能的解決方案:
使用類型為NodePort
或LoadBalancer
的服務使服務可在集群外訪問。
請參閱服務和kubectl 公開文檔。
請注意,根據您的環境,這可能會將服務暴露給 inte.net。
使用代理動詞訪問:(參見此處)
這僅適用於 HTTP/HTTPS。 如果您的服務不夠安全,無法暴露給 inte.net,請使用此選項。
從集群內運行的 pod 進行訪問。
正如您在評論中注意到的那樣,您可以從 pod 內部curl
。 您也可以從同一集群中運行的任何其他 pod 執行此操作。 Pod 無需任何額外配置即可相互通信。
為什么我ssh不能curl 8083到VM上?
如果不使用上述方法(第 1 點或第 2 點)公開,則無法從集群外部訪問 Pod/服務。
為什么沒有在具有 pod 的主機 VM 上公開端口?
它不會暴露在您的 VM 上,而是暴露在您的集群內部。
我強烈建議您閱讀集群網絡文檔以了解更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.