Ha *_* Ja 2 kubernetes kubectl
在发布此问题之前,我遵循以下答案:如何在Kubernetes中模仿“ --volumes-from”,但它对我不起作用。
我有2个容器:
/var/www)/clientBuild我拥有所有资产的文件夹)节点映像内部是什么:
$ docker run node ls -l
> clientBuild/
> package.json
> ...
Run Code Online (Sandbox Code Playgroud)
的一部分nginx.prod.conf:
location ~* \.(jpeg|jpg|gif|png|ico|css|js|gz|map|json)$ {
include /etc/nginx/mime.types;
root /usr/local/nginx/html/clientBuild/;
}
Run Code Online (Sandbox Code Playgroud)
以及部署设置:
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: pwa-app-production
labels:
app: MyApp
spec:
replicas: 1
template:
metadata:
name: app
labels:
app: MyApp
env: production
spec:
containers:
- name: nginx
image: nginx
command: [nginx, -c, /nginx.prod.conf, -g, 'daemon off;']
resources:
limits:
memory: "500Mi"
cpu: "100m"
imagePullPolicy: Always
volumeMounts:
- mountPath: /usr/local/nginx/html
name: pwa-disk
readOnly: true
ports:
- name: nginx
containerPort: 80
initContainers:
- name: node
image: node
command: [npm, start]
resources:
limits:
memory: "500Mi"
cpu: "100m"
imagePullPolicy: Always
volumeMounts:
- mountPath: /var/www
name: pwa-disk
ports:
- name: app
containerPort: 3000
- name: api
containerPort: 3001
volumes:
- name: pwa-disk
emptyDir: {}
Run Code Online (Sandbox Code Playgroud)
我第一次尝试将两个图像在相同的containers钥匙,但我得到:/var/www/package.json not found上npm start
然后我将其移入,initContainers但是现在我只知道它失败了,但没有告诉我原因。查看日志也不显示任何详细信息。
请注意,当我删除体积部分时,该npm start工程正常。
我假设您的资产已经打包在的映像中/var/www。如果emptyDir在该路径上安装卷,则其中的所有内容都会被emptyDir卷的内容覆盖-最初没有任何内容。这意味着您的所有资产都将通过该挂载被删除-这就是您的节点服务器很可能出现故障的原因。
您要做的是将emptyDir卷挂载到其他路径,例如/data。然后,覆盖节点容器cmd并将cp -r /var/www/* /data其复制到pwa-disk卷中。现在,您可以将该卷安装到您的nginx容器中。
我认为对initContainers工作方式有误解。它们注定要终止。它们在启动任何其他容器之前运行-在initContainers成功终止之前,不会启动容器中的其他容器。因此,很可能您不想将您的节点服务器启动为initContainer。我猜您的节点服务器不应该终止,在这种情况下,您的nginx容器将永远不会启动。取而代之的是,您可能想在此containers部分中将节点服务器与nginx一起声明。此外,您还将带有覆盖cmd(cp -r /var/www/* /data)的节点容器添加到该initContainers部分,以将资产复制到卷。整个事情可能看起来像这样:
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: pwa-app-production
labels:
app: MyApp
spec:
replicas: 1
template:
metadata:
name: app
labels:
app: MyApp
env: production
spec:
containers:
- name: nginx
image: nginx
command: [nginx, -c, /nginx.prod.conf, -g, 'daemon off;']
resources:
limits:
memory: "500Mi"
cpu: "100m"
imagePullPolicy: Always
volumeMounts:
- mountPath: /usr/local/nginx/html
name: pwa-disk
readOnly: true
ports:
- name: nginx
containerPort: 80
- name: node
image: node
command: [npm, start]
resources:
limits:
memory: "500Mi"
cpu: "100m"
imagePullPolicy: Always
ports:
- name: app
containerPort: 3000
- name: api
containerPort: 3001
initContainers:
- name: assets
image: node
command: [bash, -c]
args: ["cp -r /var/www/* /data"]
imagePullPolicy: Always
volumeMounts:
- mountPath: /data
name: pwa-disk
volumes:
- name: pwa-disk
emptyDir: {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4337 次 |
| 最近记录: |