Kubectl: различия между версиями
Sirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) (→Nodes) |
||
Строка 49: | Строка 49: | ||
==Nodes== |
==Nodes== |
||
+ | ===Метки=== |
||
+ | <code>kubectl get nodes --show-labels</code> |
||
+ | |||
+ | ===Top usage=== |
||
+ | <code>kubectl top nodes</code> |
||
+ | |||
+ | ===Фильтрация вывода - все кроме=== |
||
+ | <code>kubectl get node --selector='!node-role.kubernetes.io/master'</code> |
||
+ | |||
+ | ===Без хедеров === |
||
+ | <code> |
||
+ | kubectl get node --no-headers -o custom-columns=NAME:.metadata.name |
||
+ | </code> |
||
+ | List nodes by Age kubectl get node --sort-by .metadata.creationTimestamp |
||
+ | |||
+ | To figure out the correct JSON Path, use kubectl <command> -o json |
||
+ | Get all nodes and return the specified fields (Name, ExtId, Unschedulable - True if cant deploy to node) |
||
+ | kubectl get no -o json | jq -r '[.items[] | {name:.metadata.name, id:.spec.externalID, unschedulable:.spec.unschedulable}]' |
||
+ | |||
+ | Show Node utilization based on requests and limits (probably can do it better) kubectl describe node | grep -A5 "Allocated" |
Версия 13:46, 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
- вывести имя (но тут можно и содержимое или другое поле по желанию)
Nodes
Метки
kubectl get nodes --show-labels
Top usage
kubectl top nodes
Фильтрация вывода - все кроме
kubectl get node --selector='!node-role.kubernetes.io/master'
Без хедеров
kubectl get node --no-headers -o custom-columns=NAME:.metadata.name
List nodes by Age kubectl get node --sort-by .metadata.creationTimestamp
To figure out the correct JSON Path, use kubectl <command> -o json Get all nodes and return the specified fields (Name, ExtId, Unschedulable - True if cant deploy to node) kubectl get no -o json | jq -r '[.items[] | {name:.metadata.name, id:.spec.externalID, unschedulable:.spec.unschedulable}]'
Show Node utilization based on requests and limits (probably can do it better) kubectl describe node | grep -A5 "Allocated"