RCa*_*Cat 2 openshift kubernetes
我在 OC 中有一些项目,Pod 的名称是在链和提交的基础上生成的。因此,我想在 AzureDevOps 中创建一个指令,以删除所有 pod,名称不完整,名称带有特定字符,但以其他方式完成。
例子:
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
Run Code Online (Sandbox Code Playgroud)
我需要使用类似的东西:
oc delete po podB*
Error from server (NotFound): pods "podB*" not found
Run Code Online (Sandbox Code Playgroud)
如何使用几个字符而不是 pod 的完整名称过滤删除?
添加了 DeployConfig:
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>
Run Code Online (Sandbox Code Playgroud)
小智 6
对于基于正则表达式的方法,以下命令将删除所有以“podB”开头的 pod
oc get pods | awk '/^podB/{system("oc delete pod " $1)}'
Run Code Online (Sandbox Code Playgroud)
无论如何,我建议使用 Dashrath Mundkar 提供的方法。对于 openshift,如果您只想访问当前项目中的资源,则不需要提供任何命名空间,因此您只需从以下命令中删除“-n 命名空间”即可
oc get pod -l labelname=value
Run Code Online (Sandbox Code Playgroud)
oc delete pod -l labelname=value
Run Code Online (Sandbox Code Playgroud)
只需确保您提供的标签对于您要删除的 Pod 来说是唯一的
小智 5
我使用以下命令批量删除 Pod。这个命令可以帮助我删除我选择的选择性 Pod。它确实方便快捷,节省大量时间。快乐编码!
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 $1}' | xargs oc delete pod
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2238 次 |
| 最近记录: |