[英]Is it possible to get the IP address a pod had prior to crashing?
在 Pod 崩溃并重新启动后,是否可以检索崩溃前 Pod 的 IP 地址?
这是一个非常广泛的问题,因为无法确定 pod 崩溃的确切位置和原因。 但是,我将展示在不同情况下可以做些什么。
在这种情况下,pod 将保存其 IP 地址。 最简单的方法是运行kubectl get pods -o wide
Output 会像
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-deployment-699f9b54d-g2w97 0/1 CrashLoopBackOff 2 55s 10.244.1.53 worker1 <none> <none>
如您所见,即使容器崩溃,pod 也已分配 IP 地址
也可以添加initContainers
并添加一个命令,该命令将获取 pod 的 IP 地址(取决于您将使用的图像,有不同的选项,如ip a
, ifconfig -a
等。
这是一个如何添加它的简单示例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
initContainers: # here is where to add initContainer section
- name: init-container
image: busybox
args: [/bin/sh, -c, "echo IP ADDRESS ; ifconfig -a"]
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
command: ["/sh", "-c", "nginx --version"] #this is to make nginx image failing
在您的主容器启动之前,此init-container
将运行ifconfig -a
命令并将其结果放入日志中。
您可以通过以下方式进行检查:
kubectl logs %pod_name% -c init-container
Output 将是:
IP ADDRESS
eth0 Link encap:Ethernet HWaddr F6:CB:AD:D0:7E:7E inet addr:10.244.1.52 Bcast:10.244.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1410 Metric:1 RX packets:5 errors:0 dropped:0 overruns:0 frame:0 TX packets:1 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:398 (398.0 B) TX bytes:42 (42.0 B)
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
您还可以通过在上面的命令中添加--previous
来检查以前运行的 pod 版本的日志。
volumes
。 例如hostPath
将日志存储在 pod 运行的节点上,或者nfs
可以附加到不同的 pod 并被访问。kubectl
访问日志,但是您的容器仍将在节点上运行。 要直接从运行容器的节点获取日志,请根据运行时使用docker
或crictl
。 这种情况的理想解决方案是使用监控系统,例如prometheus
或elasticseach
。 它将需要额外设置fluentd或kube-state-metrics
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.