DEMO:基於Kubernetes的CRD & Go-client 構建的一個查詢pod詳細信息的示例

本文是一個示例程序,展示一下如何基於Kubernetes的CRD(Custom Resource Defination)& Go-client構建一個查詢Pod詳細信息的服務。

該服務運行起來後,可以通過標準的kubernetes api接口,基於CRD來查詢某個Pod的詳細信息。

代碼的地址在:

https://github.com/weiyuanke/PodInfoLookup

首先我們基於配置文件創建一個我們自定義的資源——Testcr

#PodInfoLookup/yaml/testcrd.yaml

#創建了一個名爲Testcr的自定義資源類型
#group:stable.example.com
#version:v1
#resource:testcrs
$kubectl apply -f yaml/testcrd.yaml

本文假定本地已經有一個kubernetes集羣在運行了,如果沒有的話,可以基於minikube安裝一個。

#拉取最新代碼:
go get github.com/weiyuanke/PodInfoLookup

#啓動服務
go run main.go --kubeconfig=/Users/yuankewei/.kube/config

在另外一個終端創建一個pod

kubectl apply -f yaml/pod.yaml 

#服務會監聽到pod的創建,同時將該pod的相關信息寫入Testcr資源中,
add:  default/nginx

current list:
&{map[kind:Testcr metadata:map[generation:1 name:29b36e2c6835dded8a115aee874d1ddc resourceVersion:113140 selfLink:/apis/stable.example.com/v1/testcrs/29b36e2c6835dded8a115aee874d1ddc uid:a2440f67-9ca4-11e9-9f23-080027f1737d creationTimestamp:2019-07-02T08:37:32Z] spec:map[podip:nginx podkey:a242bc2d-9ca4-11e9-9f23-080027f1737d podname:29b36e2c6835dded8a115aee874d1ddc poduid:] apiVersion:stable.example.com/v1]}

#同理,刪除pod,會導致Testrc中對應的資源被刪除
kubectl delete -f yaml/pod.yaml 

delete:  default/nginx

current list:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章