kubernetes - 删除 kubectl apply -f 中不存在的注解
问题描述
当使用应用配置对 kubernetes 资源应用更新时,kubectl -f apply
我删除了一些当前存在于已部署资源中的注释,这些注释没有被删除(但现有注释中的更改正在正确更新)。如何在更新过程中强制删除已删除的注释?
顺便说一句,我想避免删除并重新创建资源
解决方案
正如@Matt 提到的
您是否使用 kubectl apply 在资源上创建此数据?apply 将先前的状态存储在注释中。如果该注释不存在,则它无法检测到要删除的数据
更多关于它在这里
您可以使用kubectl edit删除这些注释。
从默认编辑器编辑资源。
编辑命令允许您直接编辑可以通过命令行工具检索的任何 API 资源。它将打开由您的 KUBE_EDITOR 或 EDITOR 环境变量定义的编辑器,或者回退到 Linux 的“vi”或 Windows 的“记事本”。您可以编辑多个对象,但一次只应用一个更改。该命令接受文件名和命令行参数,尽管您指向的文件必须是以前保存的资源版本。
使用用于获取资源的 API 版本进行编辑。要使用特定 API 版本进行编辑,请完全限定资源、版本和组。
默认格式为 YAML。要在 JSON 中编辑,请指定“-o json”。
标志 --windows-line-endings 可用于强制 Windows 行结尾,否则将使用您的操作系统的默认值。
如果更新时发生错误,将在磁盘上创建一个临时文件,其中包含您未应用的更改。更新资源时最常见的错误是另一个编辑器更改了服务器上的资源。发生这种情况时,您必须将更改应用到较新版本的资源,或更新临时保存的副本以包含最新的资源版本。
我用 nginx pod 和一些注释做了一个例子
apiVersion: v1
kind: Pod
metadata:
name: annotations-demo
annotations:
delete: without-restart
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
我用了
kubectl describe检查是否添加了注解。
注释:删除:不重启
kubectl edit删除这个注解,它现在是空的。
注释:
推荐阅读
- azure - Azure 订阅:在 PowerShell 上使用证书或 AAD 身份验证?
- python - AWS API 网关,1 个 lambda,每个端点具有公共和私有 vpc 访问权限?
- r - 如何在 R 中使用 ggplot2 构建正确的直方图?
- selenium - 是否可以使用 Selenium 对许多基于云的虚拟机实例进行负载测试?
- python - 'x' 未在自定义十进制转换函数中定义
- java - 如何执行基本的 Spring Boot 应用程序安全性
- html - 自定义和本地存储的图标 (png) 无法加载
- tensorflow-federated - TFF:保存模型时出现类型错误
- firebase - Firebase 测试实验室。GameLoop - 标记测试已完成不适用于 IOS
- javascript - Javascript 问题 - 未捕获的类型错误:当我单击删除图标时无法读取未定义的属性 'incart'