Kubernetes 使用多个容器处理单个吊舱

Kubernetes 使用多个容器处理单个吊舱,kubernetes,endpoint,kubernetes-pod,Kubernetes,Endpoint,Kubernetes Pod,我有一个要求,将一个多点设置转换为一个带有多个容器的单吊舱。我让x舱运行x微服务,y舱运行y微服务,低于剩余端点 http://x:8080/{context path-x}/endpoint http://y:8080/{context path-y}/endpoint 我想让x和y微型服务的z舱在同一个舱内,容器x暴露在8080端口,y暴露在8081端口。我能够实现这些与多集装箱吊舱 我的问题是,现在URL已更改 http://z:8080/{context path-x}/endpo

我有一个要求,将一个多点设置转换为一个带有多个容器的单吊舱。我让x舱运行x微服务,y舱运行y微服务,低于剩余端点

  • http://x:8080/{context path-x}/endpoint
  • http://y:8080/{context path-y}/endpoint
我想让x和y微型服务的z舱在同一个舱内,容器x暴露在8080端口,y暴露在8081端口。我能够实现这些与多集装箱吊舱

我的问题是,现在URL已更改

  • http://z:8080/{context path-x}/endpoint
  • http://z:8081/{context path-y}/endpoint
我正在寻找的方式,我可以在不改变的情况下点击端点是URL或以下URL的最低点击率

  • http://x:8080/{context path-x}/endpoint
  • http://y:8081/{context path-y}/endpoint
我的实际项目需求在单个pod上有5个容器,并且有100个端点暴露


如何实现这一点?

K8s服务是公开应用程序的方式。由于您有两个应用程序,并且希望在一个Pod中作为两个不同的容器运行它们,并且希望应用程序API URL中的更改最少,因此只需创建两个具有不同端口的不同服务即可。因此,您需要对应用程序的应用程序url进行0次更改

在K8s集群中,您可以简单地使用服务名称的名称作为来自同一命名空间的主机名。你可以看到

因此,您可以创建两个名为
x
y
的服务,其中
x
具有端口8080,
y
具有端口8081。因此,您可以使用与以前相同的URL

注:实现目标可能有不同的方式,但可能会出现不同的问题


以下是我解决问题的方法:

应用程序部署文件(部署z上的x和y容器)

http://x:8080/{context path-x}/endpoint
http://y:8080/{context path-y}/endpoint

您可以使用不同的服务吗?如果您希望url中的更改为0,那么您需要两个名为x&y的服务。x显示8080端口,y显示8081端口。你明白了吗?谢谢你的回复@舒迪普塔·夏尔马。我认为这个解决方案对我们有效。我现在已经创建了两个服务,分别达到8080和8081,旧的url可以改变端口号。很好,你已经解决了这个问题。请提供答案并将其标记为已接受。添加答案

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: z
spec:
  replicas: 1
  progressDeadlineSeconds: 600
  selector:
    matchLabels:
      component: z
  template:
    metadata:
      annotations:
        version: v1.0
      labels:
        component: z
        occloud.oracle.com/open-network-policy: allow
      name: z
    spec:
      containers:
        - name: x
          image:x:dev
          ports:
            - containerPort: 8080
        - name: y
          image: y:dev
          ports:
            - containerPort: 8081
---
kind: Service
apiVersion: v1
metadata:
  name: x
  annotations:
    version: v1.0
spec:
  selector:
    component: z
  ports:
     - name: x
       port: 8080
       targetPort: 8080
  type: ClusterIP           
---
kind: Service
apiVersion: v1
metadata:
  name: y
  annotations:
    version: v1.0
spec:
  selector:
    component: z
  ports:
     - name: y
       port: 8080
       targetPort: 8081
  type: ClusterIP