天天看點

client-go gin的簡單整合十一-Delete背景:delete Poddelete deploymentdelete namespace總結

背景:

完成了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"}
           
client-go gin的簡單整合十一-Delete背景:delete Poddelete deploymentdelete namespace總結

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)
 
           
client-go gin的簡單整合十一-Delete背景:delete Poddelete deploymentdelete namespace總結

postman測試

http://127.0.0.1:8080/deployment/delete

{"name":"zhangpeng",
"namespace":"zhangpeng"}
           
client-go gin的簡單整合十一-Delete背景:delete Poddelete deploymentdelete namespace總結

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"}
           

總結

  1. client-go 基于gin 的curd算是基本實作
  2. 接下來要實作的
  3. 更優雅的輸出
  4. 擴充一下statefulset svc configmap 等等其他k8s資源
  5. 資料的類型也的整理一下
  6. 方法的提取,公共類的整理?結構整理一下

繼續閱讀