代码之家  ›  专栏  ›  技术社区  ›  bUff23

PV/PVC会触发哪些事件,从哪里触发?

  •  0
  • bUff23  · 技术社区  · 4 年前

    kubectl get events 列出K8s对象的事件。 PV/PVC的事件实际上是从哪里触发的? 有一个卷事件列表 https://docs.openshift.com/container-platform/4.5/nodes/clusters/nodes-containers-events.html 但它没有确定哪些事件适用于哪些资源?

    0 回复  |  直到 4 年前
        1
  •  3
  •   acid_fuji    4 年前

    让我们从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的可能事件的聚合信息。

    推荐文章