本文介紹容器服務作為事件源發布到事件總線EventBridge的事件類型。
注意事項
容器服務事件來自以下兩部分:
ARMS
您需要在K8s集群中安裝ARMS(ack-arms-prometheus)。更多信息,請參見步驟一:開啟阿里云Prometheus監控。
這類事件沒有分類,所有事件統一為cs:k8s:K8s-event-via-arms。
NPD
您需要在K8s集群安裝NPD(ack-node-problem-detector),并配置Sink為事件總線EventBridge。具體操作,請參見安裝NPD。
這類事件按資源類型分類,例如PodRelatedEvent表示所有Pod相關的事件。
事件類型
容器服務支持發布到事件總線EventBridge的事件類型如下所示。
事件類型 | type參數值 |
ConfigMap相關的K8s事件 | cs:k8s:ConfigMapRelatedEvent |
CronJob相關的K8s事件 | cs:k8s:CronJobRelatedEvent |
DaemonSet相關的K8s事件 | cs:k8s:DaemonSetRelatedEvent |
Deployment相關的K8s事件 | cs:k8s:DeploymentRelatedEvent |
Ingress相關的K8s事件 | cs:k8s:IngressRelatedEvent |
Job相關的K8s事件 | cs:k8s:JobRelatedEvent |
cs:k8s:k8s-event-via-arms | |
Namespace相關的K8s事件 | cs:k8s:NamespaceRelatedEvent |
Node相關的K8s事件 | cs:k8s:NodeRelatedEvent |
PersistentVolumeClaim相關的K8s事件 | cs:k8s:PersistentVolumeClaimRelatedEvent |
PersistentVolume相關的K8s事件 | cs:k8s:PersistentVolumeRelatedEvent |
cs:k8s:PodRelatedEvent | |
ReplicaSet相關的K8s事件 | cs:k8s:ReplicaSetRelatedEvent |
ReplicationController相關的K8s事件 | cs:k8s:ReplicationControllerRelatedEvent |
StatefulSet相關的K8s事件 | cs:k8s:StatefulSetRelatedEvent |
阿里云平臺對資源執行的操作事件 | cs:ActionTrail:AliyunServiceEvent |
API調用 | cs:ActionTrail:ApiCall |
控制臺的操作事件 | cs:ActionTrail:ConsoleOperation |
資源變更投遞 | cs:Config:ConfigurationItemChangeNotification |
資源評估不合規通知 | cs:Config:NonCompliantNotification |
CloudEvents規范中定義的參數解釋,請參見事件概述。
上述事件類型列表只包含高頻事件類型,并沒有列舉所有的K8s事件類型。您可以通過自定義規則來匹配上述列表中沒有的事件,也可以通過過濾所有的事件類型來獲得所有的事件類型。
容器服務事件type命名規范為cs:k8s:{資源類型名稱}RelatedEvent,例如Pod相關的K8s事件的type參數值為cs:k8s:PodRelatedEvent。
通過ARMS采集的K8s事件
通過應用實時監控服務ARMS采集的K8s事件,事件總線EventBridge接收到的示例事件如下所示。
{
"id":"4cf9678d-dfec-4d6e-9fd1-a9a2d205****",
"source":"acs.cs",
"time":"2020-11-19T21:04:41+08:00",
"data":{
"reason":"FailedCreatePodSandBox",
"involvedObject":{
"uid":"e0a7e4b6-5331-487f-bb0a-e69647a9****",
"apiVersion":"v1",
"kind":"Pod",
"resourceVersion":"40326010",
"namespace":"kube-system",
"name":"alicloud-application-controller-798784bf49-v88hc"
},
"count":1,
"source":{
"component":"kubelet",
"host":"cn-hangzhou.192.168.XX.XX"
},
"message":"Failed to create pod sandbox",
"type":"Warning",
"firstTimestamp":"2020-11-19T21:04:41Z",
"lastTimestamp":"2020-11-19T21:04:41Z"
},
"specversion":"1.0",
"datacontenttype":"application/json",
"type":"cs:k8s:K8s-event-via-arms",
"aliyunaccountid":"123456789098****",
"aliyuneventbusname":"default",
"aliyunpublishtime":"2020-11-19T21:04:42Z",
"aliyunregionid":"cn-hangzhou",
"aliyunpublishaddr":"172.25.XX.XX"
}
data字段包含的參數解釋如下表所示。
參數 | 類型 | 示例值 | 描述 |
reason | String | FailedCreatePodSandBox | K8s上報事件的原因。 |
involvedObject | Struct | 上報事件涉及的對象。 | |
uid | String | e0a7e4b6-5331-487f-bb0a-e69647a9**** | 資源的唯一ID。 |
apiVersion | String | v1 | API版本。 |
kind | String | Pod | 資源類型。 |
resourceVersion | String | 40326010 | 資源版本。 |
namespace | String | kube-system | 資源所在的命名空間。 |
name | String | alicloud-application-controller-798784bf49-v88hc | 資源名稱。 |
count | Integer | 1 | 事件發生的總次數。 |
source | Struct | 發現這個事件的資源。 | |
component | String | kubelet | source資源類型。 |
host | String | cn-hangzhou.192.168.XX.XX | source資源的唯一標識。 |
message | String | Failed to create pod sandbox | 事件的摘要。 |
type | String | Warning | 事件等級。 取值說明如下:
|
firstTimestamp | Timestamp | 2020-11-19T21:04:41Z | 事件第一次發生的時間。 |
lastTimestamp | Timestamp | 2020-11-19T21:04:41Z | 事件最近一次發生的時間。 |
Pod相關的K8s事件
Pod相關的K8s事件,事件總線EventBridge接收到的示例事件如下所示。
{
"datacontenttype":"application/json",
"aliyunaccountid":"123456789098****",
"data":{
"reason":"BackOff",
"metadata":{
"uid":"0a2d6413-ea4a-414b-a813-aa9b6a17****",
"resourceVersion":"1163710",
"creationTimestamp":"2021-01-08T07:11:52Z",
"name":"oom-test",
"namespace":"default"
},
"involvedObject":{
"uid":"3438fea9-1e54-4f71-aec5-6e874136****",
"apiVersion":"v1",
"kind":"Pod",
"resourceVersion":"425592514",
"name":"oom-test-85b",
"namespace":"default"
},
"reportingInstance":"",
"count":197,
"source":{
"component":"kubelet",
"host":"cn-hangzhou.172.16.XX.XX"
},
"message":"Back-off restarting failed container",
"type":"Warning",
"reportingComponent":"",
"firstTimestamp":"2021-01-08T07:11:52Z",
"lastTimestamp":"2021-01-08T07:56:41Z"
},
"subject":"acs:cs:cn-hangzhou:123456789098****:abc/apis/v1/namespaces/default/pods/oom-test-85b",
"source":"acs.cs",
"type":"cs:k8s:PodRelatedEvent",
"aliyunpublishtime":"2021-01-18T09:43:58.785Z",
"specversion":"1.0",
"aliyuneventbusname":"default",
"id":"af182bae-16b8-4327-bb3a-a972de72****",
"time":"2021-01-08T15:57:00+08:00",
"aliyunregionid":"cn-hangzhou",
"aliyunpublishaddr":"172.25.XX.XX"
}
data字段包含的參數解釋如下表所示。
參數 | 類型 | 示例值 | 描述 |
reason | String | BackOff | Pod相關的K8s事件產生的原因。 |
metadata | Struct | 事件的元數據。 | |
uid | String | 0a2d6413-ea4a-414b-a813-aa9b6a17**** | 每個事件在K8s集群中的唯一ID。 |
resourceVersion | Integer | 1163710 | 事件的版本。每次事件修改后會遞增。 |
creationTimestamp | Timestamp | 2021-01-08T07:11:52Z | 事件第一次創建的時間戳。 |
name | String | oom-test | 事件的名稱。 |
namespace | String | default | 事件歸屬的命名空間。 |
involvedObject | Struct | 事件涉及的對象。 | |
uid | String | 3438fea9-1e54-4f71-aec5-6e874136**** | 資源的唯一ID。 |
apiVersion | String | v1 | API版本。 |
kind | String | Pod | 資源類型。 |
resourceVersion | String | 40326010 | 資源版本。 |
namespace | String | default | 資源所在的命名空間。 |
name | String | oom-test-85b6c9494b-hpllq | 資源名稱。 |
reportingInstance | String | 無 | 發起事件的實例。 |
count | Integer | 197 | 事件發生的總次數。 |
source | Struct | 發現這個事件的資源。 | |
component | String | kubelet | source資源類型。 |
host | String | cn-hangzhou.172.16.XX.XX | source資源的唯一標識。 |
message | String | Back-off restarting failed container | 事件的摘要。 |
type | String | Warning | 事件等級。 取值說明如下:
|
reportingComponent | String | 無 | 發起事件的組件。 |
firstTimestamp | Timestamp | 2021-01-08T07:11:52Z | 事件第一次發生的時間。 |
lastTimestamp | Timestamp | 2021-01-08T07:56:41Z | 事件最近一次發生的時間。 |
安裝NPD
登錄容器服務管理控制臺。
在左側導航欄,選擇 。
在應用市場頁面,單擊應用目錄頁簽,在搜索欄文本框中,輸入應用名稱ack-node-problem-detector,然后單擊圖標。
單擊ack-node-problem-detector卡片,然后單擊一鍵部署。
在創建面板,完成以下配置,然后單擊確定。
在基本信息配置向導,選擇已創建的集群和命名空間,然后單擊下一步。
在參數配置配置向導,在參數代碼輸入框中修改參數Sink下eventbridge的enabled值為true。