I am trying to create a pod with 2 containers each having different images! Am not sure how to expose the two different containers to the client. Following is my yaml file for deployment.
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: checkdifimage
spec:
replicas: 1
template:
metadata:
labels:
app: checkdifimagelab
spec:
containers:
- name: checkallcont1
image: <dockerimage>
ports:
- containerPort: 32030
- name: checkall1cont2
image: <dockerimage2>
ports:
- containerPort: 32031
What am currently doing is after I have the deployment up. I run the following command to expose the service :
kubectl expose pod checkdifimage --port=8080 --type=NodePort --name=diffimage
This works for a single container and am able to hit the service from a rest client. But when I use 2 containers, i am only able to hit one container. How should I proceed to hit both the containers? Also, if someone can please guide on what are the advantages and disadvantages of using one pod having one image vs one pod having multiple images!
You can actually do this in the command line:
Set the ports just by a comma
You have multiple Options:
Create multiple services exposing one port each, on the same deployment.
Create single service exposing multiple ports:
Using kubectl expose:
Source
When to use multi container pods: A pod is a group of one or more containers, the shared storage for those containers, and options about how to run the containers. Pods are always co-located and co-scheduled, and run in a shared context. A pod models an application-specific “logical host” - it contains one or more application containers which are relatively tightly coupled — in a pre-container world, they would have executed on the same physical or virtual machine.