kubernetes - 关于在kubernetes(k8s)平台上运行pod的问题:pods are running but the containers are not-ready
问题描述
我使用 Virtual Box 在我的虚拟机(CentOS/7)上构建了一个 k8s 集群:
kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
k8s-master Ready control-plane,master 8d v1.21.2 192.168.0.186 <none> CentOS Linux 7 (Core) 3.10.0-1160.31.1.el7.x86_64 docker://20.10.7
k8s-worker01 Ready <none> 8d v1.21.2 192.168.0.187 <none> CentOS Linux 7 (Core) 3.10.0-1160.31.1.el7.x86_64 docker://20.10.7
k8s-worker02 Ready <none> 8d v1.21.2 192.168.0.188 <none> CentOS Linux 7 (Core) 3.10.0-1160.31.1.el7.x86_64 docker://20.10.7
几天前,我使用 ReplicaSet 在默认命名空间上运行了一些 pod。
起初它们都运行良好,然后我关闭了 VM。
今天,我重新启动虚拟机后,发现它们不再正常工作了:
kubectl get all
NAME READY STATUS RESTARTS AGE
pod/dnsutils 1/1 Running 3 5d13h
pod/kubapp-6qbfz 0/1 Running 0 5d13h
pod/kubapp-d887h 0/1 Running 0 5d13h
pod/kubapp-z6nw7 0/1 Running 0 5d13h
NAME DESIRED CURRENT READY AGE
replicaset.apps/kubapp 3 3 0 5d13h
然后我删除 ReplicaSet 并重新创建它以创建 pod。
我运行命令以获取更多信息:
[root@k8s-master ch04]# kubectl describe po kubapp-z887v
Name: kubapp-d887h
Namespace: default
Priority: 0
Node: k8s-worker02/192.168.0.188
Start Time: Fri, 23 Jul 2021 15:55:16 +0000
Labels: app=kubapp
Annotations: cni.projectcalico.org/podIP: 10.244.69.244/32
cni.projectcalico.org/podIPs: 10.244.69.244/32
Status: Running
IP: 10.244.69.244
IPs:
IP: 10.244.69.244
Controlled By: ReplicaSet/kubapp
Containers:
kubapp:
Container ID: docker://fc352ce4c6a826f2cf108f9bb9a335e3572509fd5ae2002c116e2b080df5ee10
Image: evalle/kubapp
Image ID: docker-pullable://evalle/kubapp@sha256:560c9c50b1d894cf79ac472a9925dc795b116b9481ec40d142b928a0e3995f4c
Port: <none>
Host Port: <none>
State: Running
Started: Fri, 23 Jul 2021 15:55:21 +0000
Ready: False
Restart Count: 0
Readiness: exec [ls /var/ready] delay=0s timeout=1s period=10s #success=1 #failure=3
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-m9rwr (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
kube-api-access-m9rwr:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 30m default-scheduler Successfully assigned default/kubapp-d887h to k8s-worker02
Normal Pulling 30m kubelet Pulling image "evalle/kubapp"
Normal Pulled 30m kubelet Successfully pulled image "evalle/kubapp" in 4.049160061s
Normal Created 30m kubelet Created container kubapp
Normal Started 30m kubelet Started container kubapp
Warning Unhealthy 11s (x182 over 30m) kubelet Readiness probe failed: ls: cannot access /var/ready: No such file or directory
我不知道它会发生什么以及我应该如何解决它。
所以我在这里向你们寻求帮助。
我是k8s新手,请帮忙。
感谢 paul-becotte 的帮助和推荐。我想我应该发布 pod 的定义:
apiVersion: apps/v1
kind: ReplicaSet
metadata:
# here is the name of the replication controller (RC)
name: kubapp
spec:
replicas: 3
# what pods the RC is operating on
selector:
matchLabels:
app: kubapp
# the pod template for creating new pods
template:
metadata:
labels:
app: kubapp
spec:
containers:
- name: kubapp
image: evalle/kubapp
readinessProbe:
exec:
command:
- ls
- /var/ready
https://github.com/Evalle/k8s-in-action/blob/master/Chapter_4/kubapp-rs.yaml有一个 yaml 的示例定义。
我不知道在哪里可以找到图像 evalle/kubapp 的 dockerfile。
而且我不知道它是否有 /var/ready 目录。
解决方案
看看你的活动
警告 Unhealthy 11s (x182 over 30m) kubelet Readiness probe failed: ls: cannot access /var/ready: No such file or directory
您的就绪探测失败 - 看起来它正在检查/var/ready
.
您的下一步是“这有意义吗?我的容器准备好后是否真的要在 /var/ready 中写入文件?” 如果是这样,您将需要查看 pod 中的日志并找出它不写入文件的原因。如果它不是正确的检查,请查看您用于创建 pod/deployment/replicaset 的 yaml,并将该检查替换为有意义的内容。
推荐阅读
- c++ - 解决多个重载
- ignite - Apache Ignite Yarn 部署 HDFS 问题
- go - 为什么在 golang 中写入全局地图时恢复不起作用
- wordpress - 如果 post 存在且 post_meta 存在
- angular - 在 agm 上放置自定义控制按钮
- python - Scikit 学习多元线性回归和多项式特征的系数顺序
- python - 使用底图和 matplotlib 对某个国家/地区的某些城市进行彩色绘图
- discord - 如果消息包含不和谐 py 的表情符号,如何检查 on_message?
- c - if 语句中的多个条件如何工作
- android - Arraylist 在 android 中为空检查