Как выполнить очистку после создания кластера GKE с помощью кластеров gcloud? - PullRequest
1 голос
/ 02 декабря 2019

Я создаю кластеры Kubernetes программно для сквозных тестов в GitLab CI / CD. Я использую gcloud container clusters create. Я занимаюсь этим полгода и создал и удалил несколько сотен кластеров. Стоимость пошла вверх и вниз. Теперь я получил необычно высокий счет от Google и проверил распределение затрат. Я заметил, что стоимость «Storage PD Capacity» составляет> 95%. Я обнаружил, что gcloud container clusters delete никогда не удалял Google Compute Disks, созданные для утверждений о постоянных томах в кластере Kubernetes.

Как я могу удалить их программно? Что еще можно оставить после удаления кластера Kubernetes и дисков?

Ответы [ 2 ]

2 голосов
/ 02 декабря 2019

Предложения:

  1. Чтобы ответить на ваш немедленный вопрос: вы можете программно удалить свои дисковые ресурсы с помощью метода: disc.delete API.

  2. Чтобы определить, какие другие ресурсы могли быть выделены, посмотрите здесь: Список всех ресурсов в вашей иерархии .

  3. Наконец,эта ссылка также может помочь: GKE: понимание использования ресурсов кластера

1 голос
/ 02 декабря 2019

Поскольку эта часть ответа длинна: ​​

gcloud compute disks create disk-a \
--size=10gb \
--zone=us-west1-a \
--labels=something=monday \
--project=${PROJECT}

gcloud compute disks create disk-b \
--size=10gb \
--zone=us-west1-b \
--labels=something=else \
--project=${PROJECT}

Тогда:

ID=$(gcloud compute disks list \
--filter="name~disk zone~us-west1 labels.something=else" \
--format="value(id)" \
--project=${PROJECT}) && echo ${ID}

NB

  • фильтрAND подразумевается и опускается
  • вы можете удалять термины по мере необходимости
  • вам следует сделать фильтр как можно более конкретным

И - когда вы уверены , поскольку удаление невозможно восстановить:

gcloud compute disks delete ${ID} --project=${PROJECT} --region=${REGION}

Если имеется несколько совпадений, вы можете выполнить итерацию:

IDS=$(gcloud compute disks list ...)
for ID in ${IDS}
do
  gcloud compute disks delete ${ID}
done

Если вы предпочитаете - потрясающий jq, у вас будет универсальный способ (не gcloud -специфичный):

gcloud compute disks list \
--project=${PROJECT} \
--format=json \
| jq --raw-output '.[] | select(.name | contains("disk")) | select(.zone | contains("us-west1")) | select(.labels.something=="else")'
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...