Kubernetes - 在一个Pod中创建两个容器

3
我正在开发一个由两个容器组成的应用程序。我想将它们部署到Kubernetes中的一个Pod中,因为我希望这两个服务在一个IP地址后面。然而,我很难将Kubernetes服务与容器连接起来。
我该如何编写deployment.yml文件,以便当用户调用x.x.x.x:port1时,请求被转发到第一个容器,当调用x.x.x.x:port2时,请求被转发到第二个容器。我该如何指定服务?
以下是我目前拥有的:
apiVersion:v1
kind: Pod
metadata:
  name: my_app
spec:
  containers:
  - name: first_container
    image: first_image
  
  - name: second_container
    image: second_image
---
apiVersion: v1
kind: Service
...

2
通常情况下,您只需要将它们作为单独的部署和单独的服务进行处理。您不会直接连接到Pod,无论它们是相同的还是不同的IP地址通常都不相关;从集群外部连接始终是“特殊”的,并且通常涉及NodePort或LoadBalancer类型的服务。 - David Maze
1
只是补充一下 @DavidMaze 的观点 - 在同一个 pod 中有两个容器。无法独立地对它们进行扩展。除非这些容器紧密耦合,否则不建议在单个 pod 中放置两个容器。 - Praveen Sripati
1个回答

6
在您的容器部分,您需要为每个容器定义一个containerPort:
  containers:
  - name: first_container
    image: first_image
    ports:
    - containerPort: port1
  - name: second_container
    image: second_image
    ports:
    - containerPort: port2

然后,在服务定义的端口部分,您需要将服务的targetPorts指向那些端口,就像https://dev59.com/nFgQ5IYBdhLWcg3wxGlP#42272547中所示。


3
根据 K8S 文档中的容器端口说明 - https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#container-v1-core - 在此处公开端口会为系统提供有关容器使用的网络连接的其他信息,但主要是信息性的。在此处未指定端口并不会防止该端口被公开。任何在容器内部使用默认“0.0.0.0”地址监听的端口都可以从网络访问。 - Praveen Sripati

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接