gpt4 book ai didi

python - 无法连接到kubernetes集群上部署的服务器

转载 作者:行者123 更新时间:2023-12-01 07:37:43 24 4
gpt4 key购买 nike

我已经准备好了我的 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

# 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(套接字编程):

import socket
from datetime import datetime
import os

def ReceiveDATA():
hostname = socket.gethostname()
i=0
host = socket.gethostbyname(hostname)
port = 31700
while True:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Create a socket object

s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

s.bind((host, port)) # Bind to the port

s.listen(10) # Accepts up to 10 clientections.


print("############################# ",i+1," #################################")

print('Server listening.... on '+ str(host))

client, address = s.accept()

print('Connection from : ',address[0])

i+=1

date=str(datetime.now())
date=date.replace('-', '.')
date=date.replace(' ', '-')
date=date.replace(':', '.')

PATH = 'ClientDATA-'+date+'.csv'

print(date+" : File created")

f = open(PATH,'wb') #open in binary

# receive data and write it to file
l = client.recv(1024)

while (l):
f.write(l)
l = client.recv(1024)

f.close()


dt=str(datetime.now())
dt=dt.replace('-', '.')
dt=dt.replace(' ', '-')
dt=dt.replace(':', '.')

print(dt+' : '+'Successfully get the Data')

feedback = dt

client.send(feedback.encode('utf-8'))

client.close()

s.close()



if __name__ == '__main__':
ReceiveDATA()

我的 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 仪表板在 2 个 pod 中部署了 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

实际上 docker 镜像在两个 pod 中运行:

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')

我尝试了主节点的地址,但出现连接被拒绝的错误。

我想澄清一下,我正在开发一个由树莓派3组成的集群,客户端在我自己的电脑上。电脑和树莓卡连接到同一个本地网络。

谢谢你帮助我。

最佳答案

由于您将服务公开为 NodePort,因此您可以使用工作节点 IP 访问该服务。

WorkerNode:<NodePort>

这种方法的问题是,如果任何节点死亡,您可能会遇到问题。理想的解决方案是将服务公开为LoadBalancer,这样您就可以通过外部IP或DNS访问集群外部的服务。

关于python - 无法连接到kubernetes集群上部署的服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56904309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com