Kubectl: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
Строка 62: Строка 62:
 
kubectl get node --no-headers -o custom-columns=NAME:.metadata.name
 
kubectl get node --no-headers -o custom-columns=NAME:.metadata.name
 
</code>
 
</code>
List nodes by Age kubectl get node --sort-by .metadata.creationTimestamp
 
   
  +
===Сортировка===
To figure out the correct JSON Path, use kubectl <command> -o json
 
  +
<code>
Get all nodes and return the specified fields (Name, ExtId, Unschedulable - True if cant deploy to node)
 
 
kubectl get node --sort-by .metadata.creationTimestamp
  +
</code>
  +
  +
===Получение определенных полей с переименованием по аналогии с <code>SELECT AS ..</code>
  +
<code>
 
kubectl get no -o json | jq -r '[.items[] | {name:.metadata.name, id:.spec.externalID, unschedulable:.spec.unschedulable}]'
 
kubectl get no -o json | jq -r '[.items[] | {name:.metadata.name, id:.spec.externalID, unschedulable:.spec.unschedulable}]'
  +
</code>
  +
<PRE>
  +
[
  +
...
  +
{
  +
"name": "storage-3",
  +
"id": null,
  +
"unschedulable": null
  +
}
  +
]
  +
</PRE>
   
  +
===Простой просмотр утилизации==
Show Node utilization based on requests and limits (probably can do it better) kubectl describe node | grep -A5 "Allocated"
 
  +
<code>
  +
kubectl describe node | grep -A5 "Allocated"
  +
</code>
  +
<PRE>
  +
Allocated resources:
  +
(Total limits may be over 100 percent, i.e., overcommitted.)
  +
Resource Requests Limits
  +
-------- -------- ------
  +
cpu 1020m (8%) 4100m (34%)
  +
memory 1178Mi (0%) 3444Mi (2%)
  +
</PRE>

Версия 14:57, 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

Сортировка

kubectl get node --sort-by .metadata.creationTimestamp

===Получение определенных полей с переименованием по аналогии с SELECT AS .. kubectl get no -o json | jq -r '[.items[] | {name:.metadata.name, id:.spec.externalID, unschedulable:.spec.unschedulable}]'

[
...
  {
    "name": "storage-3",
    "id": null,
    "unschedulable": null
  }
]

=Простой просмотр утилизации

kubectl describe node | grep -A5 "Allocated"

Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource           Requests     Limits
  --------           --------     ------
  cpu                1020m (8%)   4100m (34%)
  memory             1178Mi (0%)  3444Mi (2%)