분리된 ConfigMap 찾기 및 삭제

2647 단어 kubernetestutorial
Kubernetes 클러스터를 유지 관리하기 위한 조치를 취하지 않으면 고아 리소스에 비용과 스토리지를 낭비하게 될 수 있습니다. ConfigMaps, Secrets 및 Services와 같은 고아(또는 사용되지 않는) 리소스는 스토리지 공간을 정리하고 성능 문제를 방지하기 위해 정기적으로 찾아서 제거해야 합니다.

이 게시물에서는 분리된 ConfigMap을 찾고 제거하는 방법에 중점을 둘 것입니다.

ConfigMaps 소량의 가시적 구성 데이터를 보유하기 위해 생성된 API 객체입니다. 이러한 개체는 애플리케이션의 최적 이식성을 위해 컨테이너 이미지 및 애플리케이션 코드에서 구성 데이터의 바인딩 해제를 지원하지만 비밀/암호화된 데이터를 보유할 수는 없습니다.

ConfigMap은 지원하기 위해 생성된 배포에서 격리된 상태로 남아 있거나 해당 소유자가 삭제된 경우 고아가 될 수 있습니다. 고아가 되면 이러한 ConfigMap은 임시 스토리지를 낭비하고 클러스터 불안정의 위험을 증가시킵니다.

분리된 ConfigMap 찾기 및 삭제



분리된 ConfigMap을 찾아 제거하기 위해 수행할 수 있는 몇 가지 단계는 다음과 같습니다.

1단계: 모든 ConfigMap 찾기



먼저 다음 명령을 사용하여 모든 ConfigMap 목록을 생성할 수 있습니다.

kubectl get configmaps –all-namespaces -o json


이 명령은 모든 네임스페이스에서 ConfigMap 목록을 반환하지만 보시다시피 ConfigMap 객체는 소유자를 참조하지 않습니다. 소유자가 있고 사용 중인 ConfigMap을 식별하려면 다른 명령을 실행해야 합니다.

2단계: 사용된 ConfigMap 목록과 비교



분리된 ConfigMap을 찾으려면 클러스터 전체에서 포드 목록을 가져와 사용 중인 모든 ConfigMap을 나열해야 합니다. 또는 다음을 사용하여 ConfigMap 목록과 사용된 ConfigMap을 비교하고 사용하지 않은 ConfigMap을 가져올 수 있습니다.

volumesCM=$( kubectl get pods -o
jsonpath='{.items[*].spec.volumes[*].configMap.name}' | xargs -n1)
volumesProjectedCM=$( kubectl get pods -o
jsonpath='{.items[*].spec.volumes[*].projected.sources[*].configMap.name}' | xargs -n1)
envCM=$( kubectl get pods -o
jsonpath='{.items[*].spec.containers[*].env[*].ValueFrom.configMapKeyRef.name}' | xargs -n1)
envFromCM=$( kubectl get pods -o
jsonpath='{.items[*].spec.containers[*].envFrom[*].configMapKeyRef.name}' | xargs -n1)

diff \
<(echo "$volumesCM\n$volumesProjectedCM\n$envCM\n$envFromCM" | sort | uniq) \
<(kubectl get configmaps -o jsonpath='{.items[*].metadata.name}' | xargs -n1 | sort | uniq)


마지막으로 두 목록을 비교하고 포드에서 사용하지 않는 첫 번째 목록에서 ConfigMap을 삭제할 수 있습니다.

3단계: 분리된 ConfigMap 삭제



이제 분리된 ConfigMap 목록이 있으므로 이 명령을 실행하여 클러스터에서 삭제하고 메모리를 확보할 수 있습니다.

kubectl delete configmap/samplemap


출력 예:

configmap "samplemap" deleted


찾은 고아 ConfigMap을 모두 삭제하면 클러스터에서 불필요하고 사용하지 않는 리소스를 제거하고 메모리와 저장 공간을 확보할 수 있습니다. 고립된 리소스를 정기적으로 제거하면 팀이 최적의 Kubernetes 리소스 관리를 유지하고 있는지 확인할 수 있습니다.

읽어 주셔서 감사합니다! 이것이 효과가 있는지 알려주세요.

좋은 웹페이지 즐겨찾기