实际上我遵循手册https://cloud.google.com/kubernetes-engine/docs/tutorials/hello-app#console部署web应用程序教程。我在本地目录中制作了docker文件和图像。我把图片上传到了谷歌云平台容器注册中心。将映像推送到注册表是成功的。然后我制作了kubernetes集群并尝试部署它;CrashLoopBackOff";。
我删除了集群和pod几次,但都没有改变。当容器刚启动时,会出现错误消息。
按照文档,错误是"pod重复启动并崩溃",解决方案是仔细观察日志。。。
我搜索了其他用户的案例:比如ImagePullPolicy:始终/restartPolicy:始终但错误未解决。。。在此处输入图像描述
ps:根据pods日志。。错误代码为0
pps:现在我尝试更改容器的yaml文件。CCD_ 1到CCD_。但是
Pod "nginx-1-99dcd4d9f-84szv" is invalid:
spec: Forbidden: pod updates may not change fields other than
`spec.containers[*].image`,
`spec.initContainers[*].image`,
`spec.activeDeadlineSeconds` or
`spec.tolerations` (only additions to existing tolerations)
core.PodSpec{
Volumes: []core.Volume{
{Name: "default-token-stk86", VolumeSource: core.VolumeSource{Secret: &core.SecretVolumeSource{SecretName: "default-token-stk86", DefaultMode: &420
}
}
}
}, InitContainers: nil, Containers: []core.Container{
{
TerminationMessagePath: "/dev/termination-log",
TerminationMessagePolicy: "File",
- ImagePullPolicy: "Always",
+ ImagePullPolicy: "IfNotPresent",
SecurityContext: nil,
Stdin: false,
},
}, EphemeralContainers: nil, RestartPolicy: "Always",
}
出现此错误消息。
这是我的Dockerfile。安装测试"phptest.php"的设置和网页为了允许phptest.php,我更改了默认文件和init.sh
FROM ubuntu
RUN apt-get update && apt-get upgrade -y &&
apt-get -y install
nginx
vim
php-fpm
COPY srcs/default /
COPY srcs/phptest.php /
COPY srcs/init.sh /
EXPOSE 80
CMD bash init.sh
init.sh在这里
rm /etc/nginx/sites-available/default
mv default /etc/nginx/sites-available/
mv phptest.php /var/www/html
chown -R www-data /var/www/*
chmod -R 755 /var/www/*
service nginx start
service php7.4-fpm start
bash
我上传了新任务,因为帖子问题不符合stackoverflow的指南
Kubernetes容器在很大程度上不能运行交互式shell,但这就是容器中的主要过程。(映像的CMD
运行init.sh
;它执行一些工作,包括启动一些辅助进程,然后运行bash
;bash
没有在tty上运行,所以它立即退出;所以容器也退出;由于其容器处于立即启动和退出循环中,pod进入CrashLoopBackOff状态。(
您应该重新设计此设置,以便有两个独立的部署,一个运行PHP应用程序,另一个运行Nginx反向代理。(类似地,还有两个匹配的服务。(它们中的每一个都直接作为映像的CMD
运行这些进程(不要尝试使用service
(。在将其转换回Kubernetes环境之前,您应该能够使用Docker Compose或其他较轻的工具测试类似的设置。