Kubectl: различия между версиями
Sirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
| Строка 11: | Строка 11: | ||
==Сортировка== |
==Сортировка== |
||
| + | |||
<code> |
<code> |
||
kubectl get events --sort-by=.metadata.creationTimestamp |
kubectl get events --sort-by=.metadata.creationTimestamp |
||
</code> |
</code> |
||
| + | |||
| + | ==Поиск по полю== |
||
| + | Скорее всего это все можно делать используя <code>-o jsonpath</code> но я встречал неоднократные упоминания о багах, по-тому использую <code>jq</code> |
||
| + | ===простое условие== |
||
| + | Получить только имя репликасетов у которых число реплик = 1 |
||
| + | <code> |
||
| + | kubectl get rs -o json | jq -r '.items[] |select(.status.replicas==1) | .metadata.name' |
||
| + | </code> |
||
| + | |||
| + | ===Поиск специфичного объекта=== |
||
| + | Получить секрет(ы) у которых в аннотации в поле <code>.metadata.annotations."lcm.mirantis.com/cluster-secret-type"</code> значение <code>"kubeconfig"</code> <BR> |
||
| + | (Пример специфичен для окружений определенного вида, но работает для любых объектов) |
||
| + | <code> |
||
| + | kubectl get secret -A -o json | jq ' .items[] | select(.metadata.annotations."lcm.mirantis.com/cluster-secret-type"=="kubeconfig") | .metadata.name' |
||
| + | </code> |
||
| + | |||
| + | Как писать такие запросы: |
||
| + | * Получить список, тут видно что все объекты помешены в List <code>.items[]</code> |
||
| + | <PRE> |
||
| + | { |
||
| + | "apiVersion": "v1", |
||
| + | "items": [ |
||
| + | { |
||
| + | "apiVersion": "v1", |
||
| + | "kind": "Secret", |
||
| + | "metadata": { |
||
| + | "annotations": { |
||
| + | "kubernetes.io/service-account.name": "default", |
||
| + | "kubernetes.io/service-account.uid": "1ccf69fb-2f37-4684-bb16-19a8f20fd2fe" |
||
| + | }, |
||
| + | </PRE> |
||
| + | * Конструкция <code> jq '.items[] | <команда>' проверяет каждый элемент списка, возвращая только соответствующие условию (в примере это условие <code>select(.metadata.annotations."lcm.mirantis.com/cluster-secret-type"=="kubeconfig")</code>) |
||
| + | * <code>.metadata.name</code> - вывести имя (но тут можно и содержимое или другое поле по желанию) |
||
Версия 13:41, 19 февраля 2024
Шпаргалка по kubectl
--show-managed-fields - посмотреть какие были операции с объектом
иногда помогает найти когда были работы с объектом, например меняли ли его недавно (может не работать с CRD)
kubectl -n kaas get secret iam-api-secrets --show-managed-fields -o yaml
Сортировка
kubectl get events --sort-by=.metadata.creationTimestamp
Поиск по полю
Скорее всего это все можно делать используя -o jsonpath но я встречал неоднократные упоминания о багах, по-тому использую jq
=простое условие
Получить только имя репликасетов у которых число реплик = 1
kubectl get rs -o json | jq -r '.items[] |select(.status.replicas==1) | .metadata.name'
Поиск специфичного объекта
Получить секрет(ы) у которых в аннотации в поле .metadata.annotations."lcm.mirantis.com/cluster-secret-type" значение "kubeconfig"
(Пример специфичен для окружений определенного вида, но работает для любых объектов)
kubectl get secret -A -o json | jq ' .items[] | select(.metadata.annotations."lcm.mirantis.com/cluster-secret-type"=="kubeconfig") | .metadata.name'
Как писать такие запросы:
- Получить список, тут видно что все объекты помешены в List
.items[]
{
"apiVersion": "v1",
"items": [
{
"apiVersion": "v1",
"kind": "Secret",
"metadata": {
"annotations": {
"kubernetes.io/service-account.name": "default",
"kubernetes.io/service-account.uid": "1ccf69fb-2f37-4684-bb16-19a8f20fd2fe"
},
- Конструкция
jq '.items[] | <команда>' проверяет каждый элемент списка, возвращая только соответствующие условию (в примере это условиеselect(.metadata.annotations."lcm.mirantis.com/cluster-secret-type"=="kubeconfig")) .metadata.name- вывести имя (но тут можно и содержимое или другое поле по желанию)