为什么这个 curl 从 k8s pod 中容器内的 tmp 获取?
why does this curl fetch from tmp inside container in k8s pod?
此部署创建了 1 个 pod,其中包含 init 容器。容器将卷装入 tmp/web-content 并将 1 行 'check this out' 写入 index.html
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-init-container
namespace: mars
spec:
replicas: 1
selector:
matchLabels:
id: test-init-container
template:
metadata:
labels:
id: test-init-container
spec:
volumes:
- name: web-content
emptyDir: {}
initContainers:
- name: init-con
image: busybox:1.31.0
command: ['sh', '-c' ,"echo 'check this out' > /tmp/web-content/index.html"]
volumeMounts:
- name: web-content
mountPath: /tmp/web-content/
containers:
- image: nginx:1.17.3-alpine
name: nginx
volumeMounts:
- name: web-content
mountPath: /usr/share/nginx/html
ports:
- containerPort: 80
我启动临时 pod 以检查我是否可以使用 curl 看到此行 'check this out'。
k run tmp --restart=Never --rm -i --image=nginx:alpine -- curl 10.0.0.67
确实显示了该行。然而,curl 是如何知道进入哪个目录的呢?
我没有指定它应该明确地转到 /tmp/web-content
这是因为 mountPath
:
The root directive indicates the actual path on your hard drive where
this virtual host's assets (HTML, images, CSS, and so on) are located,
ie /usr/share/nginx/html. The index setting tells Nginx what file or
files to serve when it's asked to display a directory
当您 curl 到默认端口 80 时,curl 会返回 html 目录的内容。
.
只是@P 的详细说明....回答。
- 以下是创建一个公共存储space“已标记”,名称为“web-content”
volumes:
- name: web-content
emptyDir: {}
- web-content 安装在名为
init-con
的初始容器上的 /tmp/web-content/
位置,它正在 index.html
中写入 check this out
initContainers:
- name: init-con
image: busybox:1.31.0
command: ['sh', '-c' ,"echo 'check this out' > /tmp/web-content/index.html"]
volumeMounts:
- name: web-content
mountPath: /tmp/web-content/
- 具有
index.html
的相同 web-content
卷正在作为目录 /usr/share/nginx/html
安装,因此 index.html
位置将被视为 /usr/share/nginx/html/index.html
。 (nginx 的默认登陆页面)对于容器 nginx
因此当你 curl 到它时它显示 check this out
。
containers:
- image: nginx:1.17.3-alpine
name: nginx
volumeMounts:
- name: web-content
mountPath: /usr/share/nginx/html
此部署创建了 1 个 pod,其中包含 init 容器。容器将卷装入 tmp/web-content 并将 1 行 'check this out' 写入 index.html
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-init-container
namespace: mars
spec:
replicas: 1
selector:
matchLabels:
id: test-init-container
template:
metadata:
labels:
id: test-init-container
spec:
volumes:
- name: web-content
emptyDir: {}
initContainers:
- name: init-con
image: busybox:1.31.0
command: ['sh', '-c' ,"echo 'check this out' > /tmp/web-content/index.html"]
volumeMounts:
- name: web-content
mountPath: /tmp/web-content/
containers:
- image: nginx:1.17.3-alpine
name: nginx
volumeMounts:
- name: web-content
mountPath: /usr/share/nginx/html
ports:
- containerPort: 80
我启动临时 pod 以检查我是否可以使用 curl 看到此行 'check this out'。
k run tmp --restart=Never --rm -i --image=nginx:alpine -- curl 10.0.0.67
确实显示了该行。然而,curl 是如何知道进入哪个目录的呢? 我没有指定它应该明确地转到 /tmp/web-content
这是因为 mountPath
:
The root directive indicates the actual path on your hard drive where this virtual host's assets (HTML, images, CSS, and so on) are located, ie /usr/share/nginx/html. The index setting tells Nginx what file or files to serve when it's asked to display a directory
当您 curl 到默认端口 80 时,curl 会返回 html 目录的内容。 .
只是@P 的详细说明....回答。
- 以下是创建一个公共存储space“已标记”,名称为“web-content”
volumes:
- name: web-content
emptyDir: {}
- web-content 安装在名为
init-con
的初始容器上的/tmp/web-content/
位置,它正在index.html
中写入
check this out
initContainers:
- name: init-con
image: busybox:1.31.0
command: ['sh', '-c' ,"echo 'check this out' > /tmp/web-content/index.html"]
volumeMounts:
- name: web-content
mountPath: /tmp/web-content/
- 具有
index.html
的相同web-content
卷正在作为目录/usr/share/nginx/html
安装,因此index.html
位置将被视为/usr/share/nginx/html/index.html
。 (nginx 的默认登陆页面)对于容器nginx
因此当你 curl 到它时它显示check this out
。
containers:
- image: nginx:1.17.3-alpine
name: nginx
volumeMounts:
- name: web-content
mountPath: /usr/share/nginx/html