删除所有 pods when starts for a word(pod 名称不完整)
Delete all pods when starts for a word (uncomplete name of the pod)
我在 OC 中有一些项目,pods 的名称是在链和提交的基础上生成的。因此,我想在 AzureDevOps 中创建一条指令,通过不完整的名称删除所有 pods 具有特定字符的名称,但以其他字符结尾。
示例:
root@oc-jump-pod:/# oc get po
NAME READY STATUS RESTARTS AGE
podA-74rt7 1/1 Running 0 20h
podB-6744849c59 1/1 Running 0 20h
podB-6746378213 1/1 Running 0 20h
我需要使用类似的东西:
oc delete po podB*
Error from server (NotFound): pods "podB*" not found
如何使用几个字符而不是 pod 的完整名称来过滤删除?
已添加部署配置:
root@oc-jump-pod-pre:/# oc describe deploy NAME
Name: NAME
Namespace: NAME-pre
CreationTimestamp: Mon, 25 May 2020 07:01:14 +0000
Labels: app.kubernetes.io/instance=NAME
app.kubernetes.io/managed-by=Helm
app.kubernetes.io/name=NAME
app.kubernetes.io/version=latest
helm.sh/chart=NAME-1.0.0
Annotations: deployment.kubernetes.io/revision=3
meta.helm.sh/release-name=NAME
meta.helm.sh/release-namespace=sda-NAME-pre
Selector: app.kubernetes.io/instance=NAME,app.kubernetes.io/name=NAME
Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app.kubernetes.io/instance=NAME
app.kubernetes.io/name=NAME
Service Account: default
Containers:
NAME:
Image: registry/sda-NAME-dev/test-NAME-java:0.0.2
Port: 8080/TCP
Limits:
cpu: 150m
memory: 1444Mi
Requests:
cpu: 100m
memory: 1Gi
Environment:
APP_NAME: NAME
JAVA_OPTS_EXT: ....
SPRING_CLOUD_CONFIG_PROFILE: pre
TZ: Europe/Madrid
WILY_MOM_PORT: 5001
spring_application_name: NAME_pre
spring_cloud_config_uri: https://config.d.cluster.local
Mounts:
/etc/jks from jks (ro)
/etc/secret-vol from secretvol (ro)
/etc/truststore from jssecacerts (ro)
Volumes:
....
Conditions:
Type Status Reason
---- ------ ------
Progressing True NewReplicaSetAvailable
Available True MinimumReplicasAvailable
OldReplicaSets: NAME-6744849c59 (1/1 replicas created)
NewReplicaSet: <none>
Events: <none>
首先获取 pod 名称,如果它属于这样的 deploymentConfig,我不认为使用通配符可以删除 pods,我建议为此使用标签和选择器。
oc get po -n namespace -l labelname=value
然后删除那些pods
oc delete po -l labelname=value -n namespace
对于基于正则表达式的方法,以下命令将删除所有以“podB”开头的pods
oc get pods | awk '/^podB/{system("oc delete pod " )}'
无论如何,我会推荐使用 Dashrath Mundkar 提供的方法。
对于 openshift,如果您只想访问当前项目中的资源,则无需提供任何命名空间,因此您只需从
等命令中删除“-n 命名空间”
oc get pod -l labelname=value
oc delete pod -l labelname=value
只需确保您提供的标签对于您要删除的 pods 是唯一的
我使用以下命令批量删除 pods。这个单一的命令帮助我删除了我选择的选择性 pods。它非常方便快捷,可以节省很多时间。编码愉快!
oc get pods -o wide -n <namespace> | grep -i -E "<search_string_1>|<search_string_2>" | grep -v "<exclude_results_with_search_string_3>" | awk '{print }' | xargs oc delete pod
我在 OC 中有一些项目,pods 的名称是在链和提交的基础上生成的。因此,我想在 AzureDevOps 中创建一条指令,通过不完整的名称删除所有 pods 具有特定字符的名称,但以其他字符结尾。
示例:
root@oc-jump-pod:/# oc get po
NAME READY STATUS RESTARTS AGE
podA-74rt7 1/1 Running 0 20h
podB-6744849c59 1/1 Running 0 20h
podB-6746378213 1/1 Running 0 20h
我需要使用类似的东西:
oc delete po podB*
Error from server (NotFound): pods "podB*" not found
如何使用几个字符而不是 pod 的完整名称来过滤删除?
已添加部署配置:
root@oc-jump-pod-pre:/# oc describe deploy NAME
Name: NAME
Namespace: NAME-pre
CreationTimestamp: Mon, 25 May 2020 07:01:14 +0000
Labels: app.kubernetes.io/instance=NAME
app.kubernetes.io/managed-by=Helm
app.kubernetes.io/name=NAME
app.kubernetes.io/version=latest
helm.sh/chart=NAME-1.0.0
Annotations: deployment.kubernetes.io/revision=3
meta.helm.sh/release-name=NAME
meta.helm.sh/release-namespace=sda-NAME-pre
Selector: app.kubernetes.io/instance=NAME,app.kubernetes.io/name=NAME
Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app.kubernetes.io/instance=NAME
app.kubernetes.io/name=NAME
Service Account: default
Containers:
NAME:
Image: registry/sda-NAME-dev/test-NAME-java:0.0.2
Port: 8080/TCP
Limits:
cpu: 150m
memory: 1444Mi
Requests:
cpu: 100m
memory: 1Gi
Environment:
APP_NAME: NAME
JAVA_OPTS_EXT: ....
SPRING_CLOUD_CONFIG_PROFILE: pre
TZ: Europe/Madrid
WILY_MOM_PORT: 5001
spring_application_name: NAME_pre
spring_cloud_config_uri: https://config.d.cluster.local
Mounts:
/etc/jks from jks (ro)
/etc/secret-vol from secretvol (ro)
/etc/truststore from jssecacerts (ro)
Volumes:
....
Conditions:
Type Status Reason
---- ------ ------
Progressing True NewReplicaSetAvailable
Available True MinimumReplicasAvailable
OldReplicaSets: NAME-6744849c59 (1/1 replicas created)
NewReplicaSet: <none>
Events: <none>
首先获取 pod 名称,如果它属于这样的 deploymentConfig,我不认为使用通配符可以删除 pods,我建议为此使用标签和选择器。
oc get po -n namespace -l labelname=value
然后删除那些pods
oc delete po -l labelname=value -n namespace
对于基于正则表达式的方法,以下命令将删除所有以“podB”开头的pods
oc get pods | awk '/^podB/{system("oc delete pod " )}'
无论如何,我会推荐使用 Dashrath Mundkar 提供的方法。 对于 openshift,如果您只想访问当前项目中的资源,则无需提供任何命名空间,因此您只需从
等命令中删除“-n 命名空间”oc get pod -l labelname=value
oc delete pod -l labelname=value
只需确保您提供的标签对于您要删除的 pods 是唯一的
我使用以下命令批量删除 pods。这个单一的命令帮助我删除了我选择的选择性 pods。它非常方便快捷,可以节省很多时间。编码愉快!
oc get pods -o wide -n <namespace> | grep -i -E "<search_string_1>|<search_string_2>" | grep -v "<exclude_results_with_search_string_3>" | awk '{print }' | xargs oc delete pod