kubernetes - 使用 pod 的名称而不是主机和端口调用 pod
问题描述
我在本地 minikube 集群(使用 helm 图表)内运行一组相互通信的微服务。每个服务的主机和端口都通过value-dev.yaml
其他服务和通信正常工作。现在我需要更进一步,将连接调用从http://helm-chart-name:PORT/
tohttp://helm-chart-name/
或http://service-pod-name/
. 我试图这样做,但没有奏效。有没有办法做到这一点?
解决方案
在您的服务中(特别是)将port:
数字设置为 80。这是 HTTP 的默认 TCP 端口号,因此如果...:12345
URL 中没有端口号,它将使用该端口号。targetPort:
需要匹配 pod 正在侦听的任何端口;它不需要匹配port:
.
apiVersion: v1
kind: Service
metadata:
name: {{ include "chart.fullname" . }}
spec:
selector:
{{- include "chart.selectorLabels" . | nindent 4 }}
ports:
- name: http
protocol: TCP
port: 80 # default HTTP port
targetPort: 3000 # port number the matching Pod uses
现在其他服务可以http://helm-chart-name/
在没有明确给出端口号的情况下调用。
(您几乎总是需要使用 Service 来接受与 pod 的连接;您通常不会直接与 pod 通信,除了一些特殊情况外,这样做很棘手。)
推荐阅读
- mysql - mysql变量有问题,我在这里做错了什么?
- android - 跟踪权限的使用
- system-verilog - 在 SystemVerilog 中制作二维数组/矩阵
- c# - 使用多个事实或单一理论
- java - Android:从 Firebase 数据库中获取带有两个 ValueEventListener 的数据(在 Arraylist Expires 之前设置适配器)
- scala - 简化嵌套函子转换
- c++ - 将完整的图片目录列表获取到不同的文件夹
- vue.js - 如何在Vue中再次从拦截器发送请求?
- reactjs - React Native:FlatList keyExtractor & toString() 问题?
- java - 使用 Camera2 API 的相机缩放设置