前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >client-go gin的简单整合十一-Delete

client-go gin的简单整合十一-Delete

原创
作者头像
对你无可奈何
发布2022-06-22 18:12:44
4100
发布2022-06-22 18:12:44
举报
文章被收录于专栏:运维专栏

背景:

完成了client-go gin的简单整合十-Update,下面演示一下namespace deployment pod的删除,删除完成了也可以总结一下进行更深入的操作了!删除就从pod deployment namespace的顺序开始了!

delete Pod

以nginx Pod为例

注意:zhangpeng namespace 下nginx pod为例

代码语言:txt
复制
[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

代码语言:txt
复制
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

代码语言:txt
复制
	r.POST("/pod/delete", service.DeletePod)

postman操作

http://127.0.0.1:8080/pod/delete

代码语言:txt
复制
{"name":"nginx",
"namespace":"zhangpeng"}
XlkVV48G5d.png
XlkVV48G5d.png

delete deployment

以zhangpeng deployment为例

namespace zhangpeng命名空间下zhangpeng deployment为例

代码语言:txt
复制
[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

代码语言:txt
复制
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

代码语言:txt
复制
	r.POST("/deployment/delete", service.DeleteDep)
 
image.png
image.png

postman测试

http://127.0.0.1:8080/deployment/delete

代码语言:txt
复制
{"name":"zhangpeng",
"namespace":"zhangpeng"}
KxFwPTjqoA.png
KxFwPTjqoA.png

delete namespace

以zhangpeng namespace为例

代码语言:txt
复制
[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

代码语言:txt
复制
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

代码语言:txt
复制
	r.POST("/namespace/update", service.DeleteNameSpace)
image.png
image.png

postman测试

http://127.0.0.1:8080/namespace/delete

代码语言:txt
复制
{"name":"zhangpeng"}
image.png
image.png

总结

  1. client-go 基于gin 的curd算是基本实现
  2. 接下来要实现的
  3. 更优雅的输出
  4. 扩展一下statefulset svc configmap 等等其他k8s资源
  5. 数据的类型也的整理一下
  6. 方法的提取,公共类的整理?结构整理一下

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景:
  • delete Pod
    • 以nginx Pod为例
      • 编写关于pod delete的代码
        • 添加路由运行main.go
          • postman操作
          • delete deployment
            • 以zhangpeng deployment为例
              • 编写delete deployment代码
                • 添加路由并运行main.go
                  • postman测试
                  • delete namespace
                    • 以zhangpeng namespace为例
                      • 编写delete namespace代码
                        • 添加路由并运行main.go
                          • postman测试
                          • 总结
                          相关产品与服务
                          容器服务
                          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档