Команда Grep для извлечения имени модуля kubernetes - PullRequest
0 голосов
/ 02 апреля 2020

В настоящее время я работаю над сценарием bash, чтобы сократить время, необходимое для создания db для проекта. В настоящее время у меня есть несколько баз данных, работающих в одном пространстве имен, и я хочу извлечь только указанное имя модуля c.

Я запускаю kubectl get pods

NAME                        READY   STATUS    RESTARTS   AGE
elastic                     1/1     Running   0          37h
mysql                       1/1     Running   0          37h

Теперь я хочу сохранить одну имен модулей.

В настоящее время я запускаю этот foo=$(kubectl get pods | grep -e "mysql"), и он возвращает mysql 1/1 Running 0 37h, который является ожидаемыми результатами команды. Теперь я просто хочу иметь возможность извлечь имя модуля в качестве этой переменной, чтобы я мог передать его позже.

Ответы [ 3 ]

1 голос
/ 02 апреля 2020

kubectl уже позволяет извлекать только имена:

kubectl get pods -o=jsonpath='{.items..metadata.name}' | fgrep mysql
0 голосов
/ 03 апреля 2020

Если я не ошибаюсь, вам просто нужно получить только имена стручков, чтобы использовать их позже.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 10036 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 10 * * * *;

Вывести один модуль в формате вывода JSON.

kubectl get -o json pod web-pod-13je7

Вывести информацию о ресурсах в пользовательских столбцах.

kubectl get pod test-pod -o custom-columns=CONTAINER:.spec.containers[0].name,IMAGE:.spec.containers[0].image

Возвращает только значение фазы указанного модуля. kubectl get -o template pod/web-pod-13je7 --template={{.status.phase}}

В этом конкретном случае я вижу как минимум 2 обходных пути:

1) Пользовательские столбцы. Вы можете получить практически любой вывод (и затем вы можете grep / tr / awk, если необходимо):

$ kubectl get pods --no-headers=true -o custom-columns=NAME_OF_MY_POD:.metadata.name

mmmysql-6fff9ffdbb-58x4b
mmmysql-6fff9ffdbb-72fj8
mmmysql-6fff9ffdbb-p76hx
mysql-tier2-86dbb787d9-r98qw
nginx-65f88748fd-s8mgc

2) jsonpath (один @vault предоставляется):

kubectl get pods -o=jsonpath='{.items..metadata.name}'

Надеюсь, что проливает свет на варианты, которые вы должны выбрать. Дайте нам знать, если это поможет.

0 голосов
/ 02 апреля 2020

Это должно работать для вас

foo=$(kubectl get pods | awk '{print $1}' | grep -e "mysql")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...