kubernetes - 除了 Kubernetes 中的 pod,我还能从其他资源中获取事件吗?
问题描述
为 Pod 以外的资源(部署、ReplicaSet ...)运行此命令时
$ kubectl describe deployment xxx-deployment
---- ------ ------
Events: <none>
我已经部署了几个资源,但是除了 Pod,我还没有看到事件。
如果事件发生在其他资源中,会发生什么类型的事件?
你能推荐一些可以参考的材料吗?
解决方案
Kubernetes
您可以在Kubernetes 事件类型文章中找到很好的解释什么是事件。作者还提到了事件的类型。
Kubernetes 事件是 Kubernetes 中的一种资源类型,当其他资源发生状态更改、错误或其他应广播到系统的消息时自动创建。虽然没有太多可用于事件的文档,但在调试 Kubernetes 集群中的问题时,它们是非常宝贵的资源。
您不仅可以描述Kubernetes 中的资源pod
,deployment
还可以描述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
flag -$ kubectl get events --all-namespaces -o wide
$ 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
可能是根本原因。
一开始我无法在没有任何事件的情况下创建部署我猜你已经设置了Kube-apiserver docs--event-ttl
中描述的设置。
--event-ttl duration Default: 1h0m0s
保留事件的时间量。
Github线程中也提到了它。
简而言之,如果您设置了此标志,所有事件将在 1 小时后消失。
要检查你是否设置了这个标志,kube-apiserver
你可以检查这个 StackOverflow 线程。
如果这对您没有帮助,请使用配置 YAML、您使用的 K8 版本、重现步骤等信息编辑您的问题。
推荐阅读
- python - 使用 django 在后端维护和使用用户列表
- javascript - 从最大数开始的循环索引的Javascript
- r - R ggplot2:修改由于模式显示的图形结果
- javascript - 用于点访问键和值的数据结构
- python - 通过 SPI 写入 DAC MCP48FEB24 上的 EEPROM
- python - python unittest的setUp函数不使用在类上声明的模拟
- spring - 如何在 build.gradle 中配置 Heroku?
- javascript - 如何在编辑/创建组件中使用 onFailure() 显示服务器端验证错误?
- flutter - 如何在颤动中转到rootViewController底部导航栏
- arrays - 如何从数组元素访问方法?