如果我试图在永远保持“已完成”状态但从未处于就绪状态“ Ready 0/1”的k8s集群上运行Pod,会有任何理由吗? dns,kube-proxy pods等成功调度到分配给k8s集群的节点池中的每个节点下...所有工作节点似乎都处于健康状态
答案 0 :(得分:2)
这听起来好像pod生命周期已经结束,并且大多数原因可能是因为您的pod已经完成了它打算完成的任务。
类似下一个示例的操作不会执行任何操作,它将成功创建然后启动,将拉出图像,然后将其标记为完成。
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: test-pod
image: busybox
resources:
这是它的外观:
NAMESPACE NAME READY STATUS RESTARTS AGE
default my-pod 0/1 Completed 1 3s
default testapp-1 0/1 Pending 0 92m
default web-0 1/1 Running 0 3h2m
kube-system event-exporter-v0.2.5-7df89f4b8f-mc7kt 2/2 Running 0 7d19h
kube-system fluentd-gcp-scaler-54ccb89d5-9pp8z 1/1 Running 0 7d19h
kube-system fluentd-gcp-v3.1.1-gdr9l 2/2 Running 0 123m
kube-system fluentd-gcp-v3.1.1-pt8zp 2/2 Running 0 3h2m
kube-system fluentd-gcp-v3.1.1-xwhkn 2/2 Running 5 172m
kube-system fluentd-gcp-v3.1.1-zh29w 2/2 Running 0 7d19h
对于这种情况,我建议您检查yaml,检查您正在运行哪种pod?这是什么意思?
即使出于测试目的,您也可以添加命令参数以使其运行。
command: ["/bin/sh","-c"]
args: ["command one; command two && command three"]
类似:
args: ["-c", "while true; do echo hello; sleep 10;done"]
添加了命令的yaml看起来像这样:
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: test-pod
image: busybox
resources:
command: ["/bin/sh","-c"]
args: ["-c", "while true; do echo hello; sleep 10;done"]
这是它的外观:
NAMESPACE NAME READY STATUS RESTARTS AGE
default my-pod 1/1 Running 0 8m56s
default testapp-1 0/1 Pending 0 90m
default web-0 1/1 Running 0 3h
kube-system event-exporter-v0.2.5-7df89f4b8f-mc7kt 2/2 Running 0 7d19h
kube-system fluentd-gcp-scaler-54ccb89d5-9pp8z 1/1 Running 0 7d19h
kube-system fluentd-gcp-v3.1.1-gdr9l 2/2 Running 0 122m
kubectl describe pod $POD_NAME
将有助于进一步分析。
答案 1 :(得分:1)
此问题与k8s群集或设置无关。它主要与您的Dockerfile有关。
要使Pod处于运行状态,您需要将容器作为可执行文件,因为通常使用Entrypoint来指定指令可以解决您面临的问题。
解决此问题或调试此特定问题的更好方法是,在将本地docker容器部署到k8s集群之前,先在本地计算机上运行相应的docker容器。
答案 2 :(得分:1)
消息Completed
很可能暗示着k8启动了您的容器,然后容器又退出了。
在Dockerfile中,ENTRYPOINT
用pid 1定义了Docker容器应持有的进程,否则它将终止,因此无论pod试图做什么,您都需要检查ENTRYPOINT
命令是否在循环,并不会死。
要注意的是,一旦Kubernetes终止,Kubernetes将尝试重新启动Pod,但几次尝试后Pod的状态可能会变成CrashLoopBackOff
,并且您会看到类似于Back-off restarting failed container
的消息。