gpt4 book ai didi

kubernetes - 容器无法使用kubernetes维持其状态?

转载 作者:行者123 更新时间:2023-12-02 11:51:48 26 4
gpt4 key购买 nike

我有一项在apache中运行的服务。容器状态显示为已完成并正在重新启动。为什么即使传递的参数没有问题,容器也不会保持其运行状态?

apiVersion: apps/v1
kind: Deployment

metadata:
name: ***
spec:
selector:
matchLabels:
app: ***
replicas: 1
template:
metadata:
labels:
app: ***
spec:
containers:
- name: ***
image: ****
command: ["/bin/sh", "-c"]
args: ["echo\ sid\ |\ sudo\ -S\ service\ mysql\ start\ &&\ sudo\ service\ apache2\ start"]
volumeMounts:
- mountPath: /var/log/apache2/
name: apache
- mountPath: /var/log/***/
name: ***
imagePullSecrets:
- name: regcred
volumes:
- name: apache
hostPath:
path: "/home/sandeep/logs/apache"
- name: vusmartmaps
hostPath:
path: "/home/sandeep/logs/***"

执行此参数后不久,它就会显示其状态为完成并进入循环。我们可以做些什么来保持它的运行状态。

最佳答案

,请注意,这不是一个好习惯。

如果您确实希望通过这种方式工作,则最后的过程一定不要结束。
例如,将sleep 9999添加到您的container.args

最佳选择是将它们分成2个单独的Deployments

首先,将很容易独立扩展它们。

其次,每个Deployment的图像会更小。

第三,Kubernetes将完全控制那些Deployments,并且可以利用self-healingrolling-updates

Deploying WordPress and MySQL with Persistent Volumes上有一个非常好的指南和示例,我认为这对您来说是完美的。

但是,如果您只想使用一个pod,则需要分割图像或使用官方的Docker图像,您的pod可能如下所示:

apiVersion: v1
kind: Pod
metadata:
name: app
labels:
app: test
spec:
containers:
- name: mysql
image: mysql:5.6
- name: apache
image: httpd:alpine
ports:
- containerPort: 80
volumeMounts:
- name: apache
mountPath: /var/log/apache2/
volumes:
- name: apache
hostPath:
path: "/home/sandeep/logs/apache"

您需要使用 pod公开 Service:
$ kubectl expose pod app --type=NodePort --port=80
service "app" exposed

检查它有什么端口:
$ kubectl describe service app
...
NodePort: <unset> 31418/TCP
...

另外,您应该阅读 Communicate Between Containers in the Same Pod Using a Shared Volume

关于kubernetes - 容器无法使用kubernetes维持其状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60651106/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com