让我们从Kubernetes事件的确切含义开始。这些对象提供了对集群内部发生的事情的洞察,例如调度器做出了什么决定,或者为什么一些Pod被从节点中驱逐出来。这些API对象在etcd中持久化。
你可以阅读更多关于他们的信息
here
和
here
.
还有一个关于Kubernetes事件的优秀教程,你可以找到
here
.
有几种方法可以从Kubernetes查看/获取更详细的事件:
使用
kubectl get events -o wide
。这将为您提供以下信息
object
,
subobject
和
source
事件的。这里有一个例子:
LAST SEEN TYPE REASON OBJECT SUBOBJECT SOURCE MESSAGE
<unknown> Warning FailedScheduling pod/web-1 default-scheduler running "VolumeBinding" filter plugin for pod "web-1": pod has unbound immediate PersistentVolumeClaims
6m2s Normal ProvisioningSucceeded persistentvolumeclaim/www-web-1 k8s.io/minikube-hostpath 2481b4d6-0d2c-11eb-899d-02423db39261 Successfully provisioned volume pvc-a56b3f35-e7ac-4370-8fda-27342894908d
6m2s Normal ProvisioningSucceeded persistentvolumeclaim/www-web-1 k8s.io/minikube-hostpath 2481b4d6-0d2c-11eb-899d-02423db39261 Successfully provisioned volume pvc-a56b3f35-e7ac-4370-8fda-27342894908d
使用
kubectl get events --output json
将为您提供事件列表
json
包含其他详细信息的格式,例如
selflink
.
---
"apiVersion": "v1",
"count": 1,
"eventTime": null,
"firstTimestamp": "2020-10-13T12:07:17Z",
"involvedObject": {
---
"kind": "Event",
"lastTimestamp": "2020-10-13T12:07:17Z",
"message": "Created container nginx",
"metadata": {
---
Selflink
可以用于确定从中提取数据的API位置。
我们可以举个例子
/api/v1/namespaces/default/events/
并使用从API服务器获取数据
kubectl proxy
:
kubectl proxy --port=8080 & curl http://localhost:8080/api/v1/namespaces/default/events/
使用所有这些信息,您可以使用
field-selector
:
kubectl get events --field-selector type=!Normal
or
kubectl get events --field-selector involvedObject.kind=PersistentVolumeClaim
LAST SEEN TYPE REASON OBJECT MESSAGE
44m Normal ExternalProvisioning persistentvolumeclaim/www-web-0 waiting for a volume to be created, either by external provisioner "k8s.io/minikube-hostpath" or manually created by system administrator
44m Normal Provisioning persistentvolumeclaim/www-web-0 External provisioner is provisioning volume for claim "default/www-web-0"
44m Normal ProvisioningSucceeded persistentvolumeclaim/www-web-0 Successfully provisioned volume pvc-815beb0a-b5f9-4b27-94ce-d21f2be728d5
还请记住,由提供的所有信息
kubectl events
它们是来自
kubectl describe <ojbect>
.
最后,如果你仔细看看
event.go
您可能会看到卷的所有事件引用。如果你把它们和
Table 13. Volumes
你可以看到它们几乎是一样的(除了
WaitForPodScheduled
和
ExternalExpanding
)
这意味着Openshift提供了一组关于集群中可能发生的来自不同kubernetes的可能事件的聚合信息。