I am not able to run both apache (httpd) and nginx in the same pod. Indeed both containers are running on port 80.
# kubectl logs -f multi-container -c apache
(98)Address in use: AH00072: make_sock: could not bind to address [::]:80
I visited the home page of nginx in dockerhub and I noticed the environment variable NGINX_PORT
, I set it to 81
and I changed containerPort
to 81 as well. Even though, the nginx is still running on port 80.
# kubectl exec -it multi-container -c nginx -- nc -zv localhost 80
localhost (127.0.0.1:80) open
# kubectl exec -it multi-container -c nginx -- nc -zv localhost 81
command terminated with exit code 1
In addition, the env variable inside the container is correct:
# kubectl exec -it multi-container -c nginx -- env | grep NGINX_PORT=
NGINX_PORT=81
This my pod definition:
apiVersion: v1
kind: Pod
metadata:
labels:
run: multi-container
name: multi-container
spec:
containers:
- image: nginx:alpine
name: nginx
ports:
- containerPort: 81
env:
- name: NGINX_PORT
value: "81"
- image: httpd:alpine
name: apache
ports:
- containerPort: 80
dnsPolicy: ClusterFirst
restartPolicy: Always
Without making nginx as reverse proxy to httpd, how to make two containers running separately on different ports. Should I customize its images and build new ones?