apiVersion: v1
kind: Pod
metadata:
name: echo-pod
namespace: echo
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 81
Run Code Online (Sandbox Code Playgroud)
尝试通过运行上面的 yaml 文件来连接端口 81,但它仍在端口 80 上连接。使用 telnet 检查连接
echo -pod的ip是192.168.211.1
root@ip-172-31-16-143:~# kubectl exec busybox -- telnet 192.168.211.1 80
Connected to 192.168.211.1
root@ip-172-31-16-143:~# kubectl exec busybox -- telnet 192.168.211.1 81
telnet: can't connect to remote host (192.168.211.1): Connection refused
command terminated with exit code 1
Run Code Online (Sandbox Code Playgroud)
通过containerPort: 81在 pod 模板上进行定义,您仅更改公开的容器端口,但您的 Nginx 服务器仍将侦听端口 80(因为它是默认配置的)。
您需要更改 Nginxlisten配置以匹配新的公开端口。
与大多数 docker 实现不同,Nginx 不支持使用环境变量进行此类配置(请参阅Docker Hub 页面上的在 Nginx 配置中使用环境变量)。
如果您希望调整 Nginx 默认配置,则需要使用nginx.conf该配置创建一个新配置,然后在 Dockerfile 中listen 81;使用替换原始配置来创建自定义镜像nginx。COPYFROM
如果您更喜欢仍然使用原始 Nginx 映像的“一行解决方法”,您可以更改命令/参数以替换每次启动时的监听配置:
containers:
- name: nginx
image: nginx
command: ["/bin/sh","-c"]
args: ["sed -i 's/listen .*/listen 81;/g' /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"]
ports:
- containerPort: 81
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2235 次 |
| 最近记录: |