[英]How to access non containerised DB on remote IP from a docker container?
[英]How to access a container from node ip started using docker run
我有一個 web 應用程序,我試圖在 k8s 集群上運行。 我從 DockerFile 構建圖像並使用以下命令在本地進行測試:
docker run --name web-app -d -p 8888:80 web-app
我能夠使用 http://localhost:8888 訪問 GUI。
現在,我試圖在 k8s 集群中運行它,所以我在我的 k8s 集群中執行了相同的 docker 運行命令,當我嘗試從我的集群中訪問 curl http://localhost:8888 時,我得到了 o/p。 但這不是我想要的生產環境,我想使用節點 ip 訪問 web 應用程序,例如 http://<node_ip>:8888。 我嘗試了幾次但無法使用節點 ip 訪問它。
現在,我有兩個問題:
對於 NodePort 類型的服務,您需要輸入<node_ip>:<nodePort>
。 NodePort 是您在服務中暴露最多的端口。
kubectl get nodes -o wide
: 獲取 NodeIP 例如,在此服務清單中,節點端口為31000
。 請記住一件事, nodePort
范圍是從 30000 到 32767。
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 31000
如果您在 kube.netes 中部署應用程序,則不需要運行 docker。 您是否在 k8s 中創建了應用程序的部署? 如果是,那么您可以通過kubectl exec -it <pod_nam> sh
進入您的應用程序。 如果你想從集群外部進行通信,你需要像我說的那樣創建 se NodePort 類型的服務,然后你可以通過http://<node_ip>:<node_port>
獲得訪問權限。
這里我以部署一個yaml為例。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.1
ports:
- containerPort: 80
順便說一句,您在部署中的containerPort
必須等於服務中的targetPort
。
看來您正在嘗試使用錯誤的端口。 8888
這不是NodePort
。 NodePort
范圍是(30000-32767)
。 最好查看確切的nodeport
。
試試這個命令kubectl get svc
。 output 將是這樣的。
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 17h
test-srv NodePort 10.102.92.219 <none> 4000:31553/TCP 9s
對於test-srv
服務,節點端口是31553
。 你可以找到你的節點的 IP
kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
kind-control-plane Ready master 17h v1.18.2 172.18.0.2 <none> Ubuntu 19.10 5.8.0-41-generic containerd://1.3.3-14-g449e9269
對我來說,nodeIp 是172.18.0.2
。 現在試試curl -k 172.18.0.2:31553
。 模板類似於<node_ip>:<node_port>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.