gpt4 book ai didi

kubernetes - 在不指定端口号的情况下发现Kubernetes Pod

转载 作者:行者123 更新时间:2023-12-02 11:44:50 25 4
gpt4 key购买 nike

我有一个名为MyServices的kubernetes服务,其中包含四个部署。每个部署都作为单个Pod运行,并且每个Pod有其自己的端口号。

enter image description here

如前所述,所有Pod都在一个kubernetes服务中运行。

我可以通过该kubernetes服务的外部IP地址和端口号来调用服务。

示例:92.18.1.1:3011/MicroserviceA 92.18.1.1:3012/MicroserviceB

我现在正在尝试开发和协调层来调用这些服务并从中获得响应,但是,我试图找出一种方式,无需指定每个微服务端口号,而是可以调用它们通过他们的端点/ ServiceName。示例: 192.168.1.1/MicroserviceA

我该如何实现以上陈述?

从架构的 Angular 来看,将所有微服务部署在单个kubenetes服务中是一个好主意(例如我当前的方法),或者每个微服务需要它自己的服务

以下是kubernetes部署文件(我删除了微服务C和D的脚本,因为它们与A和B相同):

apiVersion: v1
kind: Service
metadata:
name: myservice
spec:
selector:
app: microservice
ports:
- name: microserviceA
protocol: TCP
port: 3011
targetPort: 3011
- name: microserviceB
protocol: TCP
port: 3012
targetPort: 3012
- name: microserviceC
protocol: TCP
port: 3013
targetPort: 3013
- name: microserviceD
protocol: TCP
port: 3014
targetPort: 3014
type: LoadBalancer
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: microserviceAdeployment
spec:
replicas: 1
template:
metadata:
labels:
app: microservice
spec:
containers:
- image: dockerhub.com/myimage:v1
name: microservice
ports:
- containerPort: 3011
imagePullSecrets:
- name: regcred
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: microserviceBdeployment
spec:
replicas: 1
template:
metadata:
labels:
app: microservice
spec:
containers:
- image: dockerhub.com/myimage:v1
name: microservice
ports:
- containerPort: 3012

最佳答案

有一种方法可以使用discover all the port of Kubernetes services

因此,您可以考虑使用kubectl get svc,如“Source IP for Services with Type=NodePort”所示

NODEPORT=$(kubectl get -o jsonpath="{.spec.ports[0].nodePort}" services <yourService>)

, I am trying to figure out a way in which I do NOT need to specify every micro-service port number, instead I can call them through their endpoint/ServiceName



然后,您需要通过一个入口点公开这些服务,通常是像NGiNX这样的反向代理。
想法是使用默认端口(80或443)公开这些服务,并将它们反向代理为实际的URL和端口号。

检查“ Service Discovery in a Microservices Architecture”的一般想法。

https://cdn-1.wp.nginx.com/wp-content/uploads/2016/04/Richardson-microservices-part4-1_difficult-service-discovery.png

和“ Service Discovery for NGINX Plus with etcd”用于实现(使用NGiNX plus,因此可能不是免费的)。
或使用“ Setting up Nginx Ingress on Kubernetes”获得更多手动方法。

关于kubernetes - 在不指定端口号的情况下发现Kubernetes Pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50206503/

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