Python 无法连接到部署在kubernetes群集上的服务器
我已经准备好了我的docker形象。 我的Dockerfile:Python 无法连接到部署在kubernetes群集上的服务器,python,docker,kubernetes,Python,Docker,Kubernetes,我已经准备好了我的docker形象。 我的Dockerfile: FROM python:3.7-alpine # Creating Application Source Code Directory RUN mkdir -p /FogAPP/src # Setting Home Directory for containers WORKDIR /FogAPP/src # Copying src code to Container COPY fogserver.py /FogAPP/src
FROM python:3.7-alpine
# Creating Application Source Code Directory
RUN mkdir -p /FogAPP/src
# Setting Home Directory for containers
WORKDIR /FogAPP/src
# Copying src code to Container
COPY fogserver.py /FogAPP/src
# Application Environment variables
ENV APP_ENV development
# Exposing Ports
EXPOSE 31700
# Setting Persistent data
VOLUME ["/app-data"]
#Running Python Application
CMD ["python", "fogserver.py"]
我的源代码fogserver.py(套接字编程):
我的kubernetes群集已就绪:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
rpimanager Ready master 3d23h v1.15.0
rpiworker1 Ready worker 3d23h v1.15.0
rpiworker2 Ready worker 3d23h v1.15.0
然后,我通过kubernetes仪表板将docker映像部署在两个吊舱中:
kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
cluster-fogapp NodePort 10.101.194.192 <none> 80:31700/TCP 52m
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3d23h
我还有一个客户端源代码,也是socket编程。在这里,我发现了一个问题,我必须在集群中放置服务器的哪个地址
这是我的客户端代码源:
host = "????????????"#Which Address should I set
port = 31700
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
PATH = GenerateDATA()
f = open (PATH, "rb")
l = f.read(1024)
while (l):
s.send(l)
l = f.read(1024)
print(dt+' : '+'Done sending')
我尝试了主节点的地址,但收到连接被拒绝的错误消息
我想澄清一下,我正在使用由raspberry Pi3组成的集群,客户机在我自己的pc上。pc和raspberry卡连接到同一个本地网络
谢谢你帮助我 您可以使用工作节点IP访问该服务,因为您将该服务公开为NodePort
WorkerNode:
这种方法的问题是,如果任何节点都死了,您可能会面临这个问题。理想的解决方案是将服务公开为LoadBalancer,以便您可以使用外部IP或DNS访问群集中外部的服务。我已通过节点端口模式成功地将群集中的应用公开给外部:ManagerIP:31700。
我想知道raspberry集群在哪里存储它已经接收到的数据文件?您好,您是从外部访问它的吗?如果比
NodeIP:nodePort
哪个是给你的IP:31700
客户端在我自己的电脑上,它也通过WiFi连接到3张树莓卡的同一网络。连接是什么curl-vip:31700
您是如何连接的?您的服务器是否在普通的Docker环境中工作,没有Kubernetes?(通常您需要在容器环境中绑定到0.0.0.0,否则无法从外部访问容器;无法保证容器的主机名会解析。)@DavidMaze,因此我必须将服务器代码中的主机地址更改为0.0.0.0```kubectl获取服务名称类型CLUSTER-IP EXTERNAL-IP端口AGE cluster fogapp LoadBalancer 10.103.239.184 6443:32626/TCP 3m15s``负载平衡花费的时间太长?由于您在裸机上安装了kubernetes,而不是在云提供商管理的kubernetes安装程序上,因此您需要额外的安装来获得负载平衡器。这可能会有所帮助。如果您对nodePort选项没有意见,那么我已经在上面添加了我的客户端代码,问题是我应该请求哪个IP地址?
kubectl get pods
NAME READY STATUS RESTARTS AGE
cluster-fogapp-c987dfffd-6zc2x 1/1 Running 0 56m
cluster-fogapp-c987dfffd-gq5k4 1/1 Running 0 56m
host = "????????????"#Which Address should I set
port = 31700
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
PATH = GenerateDATA()
f = open (PATH, "rb")
l = f.read(1024)
while (l):
s.send(l)
l = f.read(1024)
print(dt+' : '+'Done sending')