Kubernetes tomcat容器中的kubernates网络python服务器
首先,我很抱歉语法可能不正确,因为我使用了谷歌翻译 1.在Kubernetes环境中部署吊舱和服务Kubernetes tomcat容器中的kubernates网络python服务器,kubernetes,Kubernetes,首先,我很抱歉语法可能不正确,因为我使用了谷歌翻译 1.在Kubernetes环境中部署吊舱和服务 apiVersion: v1 kind: Pod metadata: name: testml labels: app: testml-pod spec: containers: - name: testmlserver image: test_ml_server:2.8 ports: - containerPort: 8080 -
apiVersion: v1
kind: Pod
metadata:
name: testml
labels:
app: testml-pod
spec:
containers:
- name: testmlserver
image: test_ml_server:2.8
ports:
- containerPort: 8080
- containerPort: 5100
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
volumeMounts:
- name: testserver-api
mountPath: /app/test/api
- name: testmlserver-csv
mountPath: /app/test/csv
- name: testmldb
image: test_ml_db:1.4
ports:
- containerPort: 1433
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
volumeMounts:
- name: estmldb
mountPath: /var/opt/mssql/data
volumes:
- name: testmlserver-api
hostPath:
path: /usr/testhostpath/testmlserver/api
- name: testmlserver-csv
hostPath:
path: /usr/testmlhostpath/testserver/csv
- name: testmldb
hostPath:
path: /usr/testmlhostpath/testmldb
部署服务器容器后,在容器中运行python服务器
apiVersion: v1
kind: Service
metadata:
name: testml-service
spec:
type: NodePort
ports:
- name: testml-server-port
port: 8080
targetPort: 8080
protocol: TCP
nodePort: 30080
- name: testml-python-port
port: 5100
targetPort: 5100
protocol: TCP
nodePort: 30051
- name: testml-db-port
port: 1433
targetPort: 1433
protocol: TCP
nodePort: 30014
selector:
app: test-pod
通过这种方式,POD和服务都得到了部署
连接到服务器(tomcat)容器并运行python服务器文件。
此时,从web调用python服务器时使用的地址值为'http://testml:5100'
我试着写它,并与它交流。
然而,出现了跨源读阻塞(CORB)
我也试过了http://localhost:5100因为在一个容器中还有另一种通信方式,但康奈特拒绝了
在docker compose环境中,我检查了与localhost通信时是否调用了python服务器,但我不知道kubernets环境中错误的原因
apiVersion: v1
kind: Pod
metadata:
name: testml
labels:
app: testml-pod
spec:
containers:
- name: testmlserver
image: test_ml_server:2.8
ports:
- containerPort: 8080
- containerPort: 5100
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
volumeMounts:
- name: testserver-api
mountPath: /app/test/api
- name: testmlserver-csv
mountPath: /app/test/csv
- name: testmldb
image: test_ml_db:1.4
ports:
- containerPort: 1433
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
volumeMounts:
- name: estmldb
mountPath: /var/opt/mssql/data
volumes:
- name: testmlserver-api
hostPath:
path: /usr/testhostpath/testmlserver/api
- name: testmlserver-csv
hostPath:
path: /usr/testmlhostpath/testserver/csv
- name: testmldb
hostPath:
path: /usr/testmlhostpath/testmldb
通过检查服务器(tomcat)容器中的端口,可以确认0.0.0.0不仅适用于python端口。
如何在服务器容器中正常调用python服务器?
- 在web服务器(tomcat)中,通过pod名称连接db容器,如下所示。POD名称=>testml
<property name="url" value="jdbc:log4jdbc:sqlserver://testml:1433;database=test_ml;autoReconnect=true" />
- 同样,我尝试用pod名称连接python服务器,但失败了
Pod的
IP进行连接,但这不是推荐的方法,因为Pod的IP是动态的,并且可以在更新过程中更改
但是,由于您也创建了一个服务
对象,因此您可以使用它的名称作为http://testml-service:port
此外,由于
服务
对象是类型,您也可以通过集群节点的IP进行连接。我不想使用您的IP,因为它不好,我无法使用pod名称对其进行测试。例如,当您看到答案时,在调用python服务器时,是否需要与“http://testml服务:5100”进行通信?您也可以使用pod名称进行连接,但需要为其定义无头服务。我创建了一个无头服务,并尝试与“”通信,但失败了APIVATION:v1种类:服务元数据:名称:testml无头服务规范:类型:ClusterIP ClusterIP:无端口:-名称:web服务器端口:8080目标端口:8080协议:TCP-名称:python服务器端口:5100目标端口:5100协议:TCP-名称:数据库端口:1433目标端口:1433协议:TCP选择器:app:testml Pod您是否也将主机名
和子域
添加为在吊舱的规格中有多少?另请参见中的示例,我认为无头服务不需要在服务中定义类型
字段,有关无头服务的创建/使用,请查看此字段。