除了Kubernetes中的Pod之外,我还可以从其他资源中获取事件吗?

时间:2020-08-06 01:04:28

标签: kubernetes kubectl

为Pod以外的资源(部署,ReplicaSet ...)运行此命令时

$ kubectl describe deployment xxx-deployment 

----           ------  ------

Events:          <none>

我已经部署了一些资源,但是除了Pod之外,我还没有看过该活动。

如果事件发生在其他资源中,将会发生什么类型的事件?

您能推荐任何参考资料吗?

3 个答案:

答案 0 :(得分:1)

是的,部署中确实有事件。但是请记住,事件仅在1小时左右可用。

enter image description here

答案 1 :(得分:1)

很好的解释,Test中的事件是什么,您可以在Types of Kubernetes Events文章中找到。作者还提到了事件类型。

Kubernetes事件是Kubernetes中的一种资源类型,当其他资源具有状态更改,错误或应向系统广播的其他消息时,会自动创建。尽管没有太多有关事件的文档,但在调试Kubernetes集群中的问题时,它们是宝贵的资源。

您不仅可以描述kubernetes中的Kubernetespoddeployment,而且可以描述几乎所有资源。

示例:

  • replicaset
kubectl describe job pi -n test
  • Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulCreate 12s job-controller Created pod: pi-5rgbz
kubectl describe node ubuntu

要列出您可以使用的所有资源事件 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning MissingClusterDNS 22h (x98 over 23h) kubelet, ubuntu-18 kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. Falling back to "Default" policy. Normal Starting 22h kubelet, ubuntu-18 Starting kubelet. Warning InvalidDiskCapacity 22h kubelet, ubuntu-18 invalid capacity 0 on image filesystem Normal NodeHasSufficientMemory 22h kubelet, ubuntu-18 Node ubuntu-18 status is now: NodeHasSufficientMemory Normal NodeHasSufficientPID 22h

$ kubectl get events --all-namespaces

在“对象”列中,输入资源类型。

如果您想了解更多详细信息,可以使用$ kubectl get events --all-namespaces NAMESPACE LAST SEEN TYPE REASON OBJECT MESSAGE default 50m Normal Starting node/gke-cluster-1-default-pool-XXXXXXXXXXXXX Starting kubelet. default 50m Normal NodeHasSufficientMemory node/gke-cluster-1-default-pool-XXXXXXXXXXXXX Node gke-cluster-1-default-pool-XXXXXXXXXXXXX status is now: NodeHasSufficientMemory default 2m47s Normal SuccessfulCreate job/pi Created pod: pi-5rgbz kube-system 50m Normal ScalingReplicaSet deployment/fluentd-gcp-scaler Scaled up replica set fluentd-gcp-scaler-6855f55bcc to 1 标志--o wide

$ kubectl get events --all-namespaces -o wide

可能是根本原因。

一开始我没有任何事件就无法创建部署,我猜您已经设置了Kube-apiserver docs中描述的$ kubectl get events -o wide LAST SEEN TYPE REASON OBJECT SUBOBJECT SOURCE MESSAGE FIRST SEEN COUNT NAME 20m Normal Scheduled pod/hello-world-86d6c6f84d-8qz9d default-scheduler Successfully assigned default/hello-world-86d 6c6f84d-8qz9d to ubuntu-18

--event-ttl

保留事件的时间。

Github thread中也提到了它。

简而言之,如果您设置了此标志,所有事件将在1小时后消失。

要检查是否在--event-ttl duration Default: 1h0m0s中设置了此标志,可以检查this StackOverflow thread

如果这对您没有帮助,请使用配置YAML,使用的K8版本,复制步骤等信息来编辑问题。

答案 2 :(得分:0)

您还可以按标签--labels进行过滤,以描述所有资源