5

kubectl create/apply/replace/edit tips

 3 years ago
source link: https://www.ishells.cn/archives/kubectl-create-replace-apply-edit-tips
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
kubectl create/apply/replace/edit tips

kubectl create/apply/replace/edit tips

33 次访问 2021-06-08
Scroll Down

今天开发同事更新了镜像的代码包,然后因为是测试环境所以他并没有修改镜像的tag,然后他提供了一个服务名qld2managerpkg让我帮他部到k8s里边,因为我刚入职,不是特别清楚服务器上的目录结构,也就不是很清楚他想使用服务的资源清单是哪个。

16231315661.jpg

先用kubectl get deploy -A | grep qld2managerpkg,也describe了啥的,然后我想第一时间想到的是使用kubectl edit编辑修改Deployment,因为仓库的镜像名称什么都没改,edit的时候什么也没改,退出编辑之后就发现也并没有发生变化。

16231341361.jpg

然后我就使用find /home/k8s/ -name '*qld2managerpkg*'模糊查询找到了对应yaml资源清单,最终使用replace重新发布了一遍,同时领导也告知该开发同学测试环境也要维护版本。

# find /home/k8s/ -name  "*qld2managerpkg*"# kubectl replace --force -f /home/k8s/XXXXX/qld2managerpkg.yml

16231342581.jpg

然后就引发了我一个小疑问?kubectl edit的原理是什么呢?为什么没有变化呢?暂时还不会go,就放弃了edit源码剖析。思考了一下我觉得是这样:

1、kubectl edit/replace 区别:

replace是主动替换资源并进行发布(默认会检查资源是否发生了变化,如果加上--force就会将原先资源删除后重新创建),edit则是会检测资源清单的字段有没有发生变化(spec下字段发生变化就会更改,metadata下字段变化就不会更改),例如我没有更改镜像名称(什么也没改),所以edit就不会重新发布。

replace集群svc资源时必须要加上--force,否则会报错 The Service "XXXXX" is invalid: spec.clusterIP: Invalid value: "": field is immutable

然后我又想到了create、apply,就去回顾了一下区别

---------------------如下为转载内容:------------------------(https://www.cnblogs.com/shix0909/p/13566148.html)

2、kubectl create/apply 区别

kubectl create -f nginx.yamlkubectl replace -f nginx.yaml# 对于上面这种先 kubectl create,再 replace 的操作,称为命令式配置文件操作
kubectl apply -f nginx.yaml# 如果修改镜像,只需修改nginx.yaml文件,然后执行kubectl apply -f nginx.yaml

kubectl create / replace 与kubectl apply 的区别:

kubectl replace 的执行过程,是使用新的 YAML 文件中的 API 对象,替换原有的 API 对象

kubectl apply,则是执行了一个对原有 API 对象的 PATCH 操作

kubectl create命令,是先删除所有现有的东西,重新根据yaml文件生成新的。所以要求yaml文件中的配置必须是完整的

kubectl apply命令,根据配置文件里面列出来的内容,升级现有的。所以yaml文件的内容可以只写需要升级的属性

apply-create-diference


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK