为什么要把pod更新和pod创建合在一起呢和为什么删除前校验
来源:5-17 Pod更新操作之Watcher状态后更新(下)

JeromeOvO
2023-12-28
老师你好,请问pod的创建方法里面多次使用了创建pod的逻辑,为什么不把pod的创建和更新分成两个函数呢,感觉这样实际开发中会方便debug一点吧,是基于实际业务场景的考量嘛,就是说用户只需要提交yaml文件或者输入要的pod的字段,然后结果是他能得到这个他想要的pod就行了,不在乎是创建出来的还是更新出来的,这样子嘛?
然后还有一个问题是为什么校验pod参数的逻辑一开始没包含非法字段的校验,反而需要再删除pod之前进行一个校验,这目的不是特别清楚,而且感觉除非是直接在集群上手动修改pod的字段,否则创建出来的pod的字段都是合法字段才对吧,不需要删除前再进行校验了吧?
1回答
-
暮闲
2023-12-28
回答
同学你好 凌晨4点的提问 说明在通宵达旦的学习 强!
关于你的提问 为什么不把创建和更新两个接口分开?
这样设计有两个考虑
因为K8S的资源创建比较特殊的,他的创建有多个入口,例如用户可以通过kubectl创建他也可以通过其他的一些可视化的工具来创建,当然删除也有多个入口 假设用户在更新的时候有用户把资源删除或者更新 此时更新接口大概率会报错。另外一个考虑是将更新和创建合并在一起,可以减少路由的定义。
关于debug其实还好 只是多了一个判断资源是否存在。
为什要做两次校验?
关于资源校验的问题 调用k8S的接口,为什么再做一次资源校验,原因是做一次double check 可以进一步确保用户提交的字段没有问题 因为此时用户删除了如果无法创建就没法恢复了 关于同学这边说 除非直接在集群修改才会报错 其实不太成立哦 用户误操作的可能性太多了 即使前端可以做限制 但是假设前端有bug 字段校验不充分也是非常常见的
012023-12-28