簡體   English   中英

Kubernetes Pod與內部/外部IP地址的互通

[英]Kubernetes Pods intercommunication with internal/external IP addresses

可以說我在本地計算機上有一個Python代碼,該代碼在localhost和端口8000上進行偵聽,如下所示:

import waitress
app = hug.API(__name__)
app.http.add_middleware(CORSMiddleware(app))
waitress.serve(__hug_wsgi__, host='127.0.0.1', port=8000)

此代碼接受127.0.0.1:8000請求,並發送回一些響應。

現在,我想將此應用程序(以及其他兩個相關應用程序)移至Docker,並使用Kubernetes協調它們之間的通信。

但是為了簡單起見,我將僅使用此Python節點(應用程序)。

首先,我使用以下命令構建了docker映像:

docker build -t gcr.io/${PROJECT_ID}/python-app:v1 .

然后我將其推入gcloud docker(我使用的是Google Cloud而不是docker hub):

gcloud docker -- push gcr.io/${PROJECT_ID}/python-app:v1

現在,我創建了容器集群:

gcloud container clusters create my-cluster

將應用程序部署到kubernates中:

kubectl run python-app --image=gcr.io/${PROJECT_ID}/python-app:v1 --port 8000

最后通過以下方式將其公開到互聯網:

kubectl expose deployment python-app --type=LoadBalancer --port 80 --target-port 8000

現在,命令kubectl get services的輸出為:

kubectl獲得服務

好的,我的問題是,我想從另一個應用程序發送一個請求(讓我們說一個節點js應用程序)。

  1. 我該如何在外部進行? 即從任何機器。
  2. 我怎樣才能在內部做到這一點? 即從另一個容器吊艙。

如何讓我的Python應用使用這些IP地址並監聽它們?

這是Python應用程序的Dockerfile:

FROM python:3
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD [ "python", "./app.py" ]

提前致謝!

外部

通過運行:

kubectl run python-app --image=gcr.io/${PROJECT_ID}/python-app:v1 --port 8000

您指定您的Pod在端口8000上偵聽。

通過運行:

kubectl expose deployment python-app --type=LoadBalancer --port 80 --target-port 8000

您指定您的服務偵聽端口80,並且該服務將流量發送到TargetPort 8000(pod偵聽的端口)。

因此,可以總結出,您的配置流量遵循以下路徑:

traffic (port 80) > Load Balancer > Service (Port 80) > TargetPort/Pod (port 8000)

使用負載平衡器類型的服務(而不是創建節點端口類型的服務的替代“入口”和HTTP負載平衡器而不是TCP負載平衡器),您可以指定以Pod為目標的流量在端口80上的LoadBalancer中,然后該服務將流量定向到您應用程序上的端口8000。 因此,如果您希望根據屏幕快照中的地址從外部來源將流量引至您的應用,則可以將流量發送至35.197.94.202:80。

內部

正如其他人在評論中指出的那樣,群集IP可用於內部定位Pod。 您可以將指定為服務端口的端口(在本例中為80,盡管可以為服務選擇任何數字)可以與群集IP一起使用,以將服務定位到該群集上的Pod。 例如,您可以定位:

10.3.254.16:80

但是,要定位特定的Pod,可以使用Pod的IP地址和Pod偵聽的端口。 您可以通過在pod上運行describe命令來發現此問題:

kubectl describe pod

或通過運行:

kubectl get endpoints 

它將生成列出的Pod IP和端口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM