小编Jac*_*oMQ的帖子

“kubectl patch”中有没有办法在不指定索引的情况下删除数组中的特定对象?

当我使用“kubectl patch”删除数组中的特定对象时,我需要先检查该特定对象的索引,然后使用json/yaml路径进行kubectl patch。

例如,我有一个资源包含多个端口对象:

spec:
  clusterIP: 100.12.143.76
  externalTrafficPolicy: Cluster
  ports:
  - name: object1
    nodePort: 30681
    port: 1234
    protocol: TCP
    targetPort: 1234
  - name: object2
    nodePort: 31805
    port: 9876
    protocol: TCP
    targetPort: 9876
Run Code Online (Sandbox Code Playgroud)

如果我需要删除端口中的“object1”,这是我现在使用的命令(kong-proxy 是该服务资源的名称):

kubectl patch service kong-proxy --type=json -p='[{"op": "remove", "path": "/spec/ports/0"}]' -n kong
Run Code Online (Sandbox Code Playgroud)

通过执行上面的命令,它会删除索引“0”处名为“object1”的对象。

但这需要人提前知道正确的索引号,如果数组中的对象太多,将很难管理和计算索引。

因此,我想知道如果不编写单独的 bash 脚本,是否可以删除带有标识符的对象。

如:

kubectl patch service kong-proxy --type=json -p='[{"op": "remove", "path": "/spec/ports/{name:object1}"}]' -n kong
Run Code Online (Sandbox Code Playgroud)

kubernetes kubectl

2
推荐指数
1
解决办法
2578
查看次数

标签 统计

kubectl ×1

kubernetes ×1