背景:
完成了client-go gin的簡單整合十-Update,下面示範一下namespace deployment pod的删除,删除完成了也可以總結一下進行更深入的操作了!删除就從pod deployment namespace的順序開始了!
delete Pod
以nginx Pod為例
注意:zhangpeng namespace 下nginx pod為例
[zhangpeng@zhangpeng k8s]$ kubectl get pods -n zhangpeng
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 113s
zhangpeng-5546976d9-mkslb 1/1 Running 0 102m
zhangpeng-5546976d9-tcsb5 1/1 Running 0 101m
編寫關于pod delete的代碼
繼續模仿create update 寫delete方法,其實delete隻需要namespace 和pod的name就可以了,簡化一下:
/src/service/Pod.go
func DeletePod(g *gin.Context) {
var NewPod Pod
if err := g.ShouldBind(&NewPod); err != nil {
g.JSON(500, err)
}
err := K8sClient.CoreV1().Pods(NewPod.Namespace).Delete(context.TODO(), NewPod.Name, metav1.DeleteOptions{})
if err != nil {
fmt.Println(err)
}
g.JSON(200, "ok")
}
添加路由運作main.go
main.go增加路由,并運作main.go
r.POST("/pod/delete", service.DeletePod)
postman操作
http://127.0.0.1:8080/pod/delete
{"name":"nginx",
"namespace":"zhangpeng"}
delete deployment
以zhangpeng deployment為例
以namespace zhangpeng命名空間下zhangpeng** deployment**為例
[zhangpeng@zhangpeng k8s]$ kubectl get pods -n zhangpeng
NAME READY STATUS RESTARTS AGE
zhangpeng-5546976d9-mkslb 1/1 Running 0 124m
zhangpeng-5546976d9-tcsb5 1/1 Running 0 123m
[zhangpeng@zhangpeng k8s]$ kubectl get deployment -n zhangpeng
NAME READY UP-TO-DATE AVAILABLE AGE
zhangpeng 2/2 2 2 141m
編寫delete deployment代碼
/src/service/Deployment.go
func DeleteDep(g *gin.Context) {
var newDep Deployment
if err := g.ShouldBind(&newDep); err != nil {
g.JSON(500, err)
}
err := K8sClient.AppsV1().Deployments(newDep.Namespace).Delete(context.Background(), newDep.Name, metav1.DeleteOptions{})
if err != nil {
g.JSON(500, err)
}
g.JSON(200, "Deployment has delete")
}
添加路由并運作main.go
r.POST("/deployment/delete", service.DeleteDep)
postman測試
http://127.0.0.1:8080/deployment/delete
{"name":"zhangpeng",
"namespace":"zhangpeng"}
delete namespace
以zhangpeng namespace為例
[zhangpeng@zhangpeng k8s]$ kubectl get ns
NAME STATUS AGE
default Active 54d
kube-node-lease Active 54d
kube-public Active 54d
kube-system Active 54d
zhangpeng Active 21h
zhangpeng1 Active 24h
編寫delete namespace代碼
/src/service/Deployment.go
func DeleteDep(g *gin.Context) {
var newDep Deployment
if err := g.ShouldBind(&newDep); err != nil {
g.JSON(500, err)
}
err := K8sClient.AppsV1().Deployments(newDep.Namespace).Delete(context.Background(), newDep.Name, metav1.DeleteOptions{})
if err != nil {
g.JSON(500, err)
}
g.JSON(200, "Deployment has delete")
}
添加路由并運作main.go
r.POST("/namespace/update", service.DeleteNameSpace)
postman測試
{"name":"zhangpeng"}
總結
- client-go 基于gin 的curd算是基本實作
- 接下來要實作的
- 更優雅的輸出
- 擴充一下statefulset svc configmap 等等其他k8s資源
- 資料的類型也的整理一下
- 方法的提取,公共類的整理?結構整理一下