Какой ты инженер? Сможет ли кто-нибудь догадаться об этом, просто взглянув на внешний вид? Наверное, невозможно угадать.
Перевод из книги «Руководство по kubectl, которого у меня никогда не было» , автор Джейк Пейдж.
Что, если бы кто-то мог догадаться об этом, просто взглянув на вашу клавиатуру? Наверное, сейчас немного легче.
Вы понимаете, что имеете дело с инженером Kubernetes, когда клавиша «k» на вашей клавиатуре износилась .
В офисе Glasskube повсюду вы найдете запасные ключи с буквой «k», на тот случай, если они вам понадобятся.
Конечно, я шучу.
Я не уверен, что потертая клавиатура говорит о своем владельце. Но я знаю, насколько важен kubectl для любого, кто хочет стать опытным администратором Kubernetes .
kubectl — это инструмент CLI для взаимодействия с Kubernetes API, который на первый взгляд может показаться простым, но может быстро стать сложным.
Итак, в этом посте моя цель — написать руководство, которое я хотел бы иметь, когда только начинал . Сначала сосредоточьтесь на синтаксисе команд и полезных командах, а затем переходите к динамичной экосистеме плагинов и инструментов, предназначенных для расширения возможностей kubectl и Kubernetes .
Также делюсь некоторыми советами и рекомендациями, а также полезной шпаргалкой по kubectl.
Давайте начнем.
Отказ от ответственности
Это статья не о Kubernetes. K8s — чрезвычайно большая технология, охватывающая множество концепций, таких как различные типы объектов Kubernetes и их взаимодействие. В рамках этого обсуждения я предполагаю, что вы знакомы с этими концепциями. Вместо этого я сосредоточусь конкретно на kubectl, его использовании и инструментах, созданных на его основе.
перед началом
Если вы поддерживаете проекты с открытым исходным кодом, которые делают управление пакетами Kubernetes лучше для всех, рассмотрите возможность поддержать Glasskube и поставить нам звезду на GitHub.
Установить
Чтобы установить kubectl, у вас есть несколько разных вариантов в зависимости от вашей операционной системы. Вот как его установить на некоторые распространенные платформы:
Linux (Убунту/Дебиан)
sudo apt-get update && sudo apt-get install -y kubectl
MacOS с использованием Homebrew
brew install kubectl
Windows с использованием Chocolatey
choco install kubernetes-cli
После установки вы можете убедиться, что kubectl установлен правильно, выполнив следующую команду:
kubectl version --client
команда кубектла:
kubectl — это инструмент интерфейса командной строки (CLI), используемый для взаимодействия с API Kubernetes. Команд много, слишком много, чтобы запомнить.
Но не волнуйтесь, это не так страшно, как некоторые могут себе представить.
Мы рассмотрим способы быстрого доступа к ссылкам на команды, командам, специфичным для объектов k8s, полезным псевдонимам и дополнению команд. Но сначала, как создается командная строка?
грамматика
Английский и китайский являются языками субъект-глагол-объект (SVO).
Хинди и корейский являются языками субъект-объект-глагол (SOV).
Если бы kubectl был языком, это был бы язык **kubectl + глагол + объект/[имя необязательно] + флаг(kvof)**.
Как и в случае с языком, лучший способ выучить и усвоить грамматику — использовать ее в контексте, а не запоминать длинные списки глаголов и объектов.
Если вы застряли и хотите быстро сослаться на существующие объекты Kubernetes из любой версии Kubernetes, запустите kubectl api-resources.
Команды — это ресурсы [объекты], созданные путем выбора действия [глагола], которое будет применено к нужному Kubernetes , за которым обычно следует имя ресурса. Кроме того, у вас есть большое количество фильтров [флагов] , которые можно применить к объекту . Команда Эти фильтры Будут определены окончательные объем и результат.
Давайте рассмотрим пример сборки команды, в которой используется общий глагол get для получения всех ресурсов в пространстве имен glasskube-system с выводом в формате yaml:
kubectl get all --namespace glasskube-system -o yaml
Если вы столкнулись с ресурсом Kubernetes, о котором никогда раньше не слышали, или вам нужно освежить знания, используйте kubectl объяснение [имя-ресурса], чтобы получить описание терминала и инструкции по использованию.
обязательная работа
При работе в среде Kubernetes у вас возникает множество задач: от развертывания новых приложений, устранения неполадок с отказавшими ресурсами, проверки использования и многого другого. Позже мы рассмотрим, как лучше использовать декларативный способ работы для определения и развертывания рабочих нагрузок, но для всего остального у нас есть готовые полезные императивные команды Kubernetes.
Простая команда, которая поможет нам начать:
# Create a new deployment named "nginx-deployment" with the nginx image
kubectl run nginx-deployment --image=nginx
# Delete a pod named "nginx-deployment" in the default namespace
kubectl delete pod nginx-deployment
Чтобы перейти к следующему шагу императивных команд, знайте, что вы можете использовать редактор TUI для изменения ресурсов:
Запустив kubectl edit -n [пространство имен] [имя ресурса], откроется текстовый редактор, аналогичный следующему. Отредактируйте и выйдите, как vim, запустите ESC + :q!.
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
kind: Pod
metadata:
annotations:
kubectl.kubernetes.io/default-container: manager
creationTimestamp: "2024-04-22T17:07:39Z"
generateName: glasskube-controller-manager-556ff6fccf-
labels:
control-plane: controller-manager
pod-template-hash: 556ff6fccf
name: glasskube-controller-manager-556ff6fccf-4qlxz
namespace: glasskube-system
ownerReferences:
- apiVersion: apps/v1
blockOwnerDeletion: true
controller: true
kind: ReplicaSet
name: glasskube-controller-manager-556ff6fccf
uid: 430e90e9-32f3-45f6-92dc-4bae26ae1654
"/var/folders/2q/wjmbwg1n5vn8v7vlw17nsz0h0000gn/T/kubectl-edit-1306753911.yaml" 209L, 5898B
Большинство команд работают со всеми типами объектов Kubernetes. Прежде чем обсуждать дальнейшие конкретные команды, полезные для определенных ресурсов Kubernetes, стоит разобраться с некоторыми полезными флагами, которые можно применять ко множеству различных объектов.
Полезные флаги:
— окружение:
Флаг --env позволяет указать переменные среды для создаваемого контейнера.
kubectl run nginx-deployment --image=nginx --env="ENV_VARIABLE=value"
- шаблон:
Этот флаг позволяет указать шаблон Go для формата вывода команды kubectl. Это очень удобно, если вы хотите настроить структуру вывода, фильтрацию или представление.
kubectl get pods --template='{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'
— селектор поля:
Используя этот флаг, вы можете фильтровать ресурсы по определенным полям. Например, вы можете фильтровать модули по их статусу или метке.
kubectl get pods --field-selector=status.phase=Running
— тип селектора поля=[Обычный/Предупреждение]:
Это особое использование флага селектора полей, позволяющее фильтровать события по типу (Обычное или Предупреждение).
kubectl events -n [resource-namespace] — for=[resource-kind]/[resource-name]
Эта команда получает события, связанные с определенным ресурсом в указанном пространстве имен. Он постоянно отслеживает новые события, связанные с данным ресурсом.
kubectl events -n my-namespace --for=deployment/my-deployment
Флаги наблюдения старой школы и новой школы:
-o широко задано -w:
-o широкий: это флаг «старой школы», который обеспечивает широкий формат вывода, показывая дополнительные сведения о ресурсе.
-w: это флаг **"новой школы"**, который позволяет осуществлять непрерывный мониторинг изменений ресурсов, аналогично команде watch.
Использование модулей
Поды — это самая маленькая абстракция в экосистеме Kubernetes. Это логические единицы, в которых размещаются контейнеры. Поды потребляют ресурсы, могут выполняться и генерировать журналы. Вот несколько команд, которые помогут вам управлять модулями.
# Show resource usage of a pod
kubectl top pod -n [namespace] [pod-name]
# Run a command inside a new pod in the cluster
kubectl run -it ubuntu --image ubuntu --rm -- bash
# Show resource labels as columns
# e.g. kubectl get pods -n [namespace] -L vault-active -L vault-sealed
kubectl get pods -n [namespace] -L vault-active -L vault-sealed
# Execute a command inside a pod
kubectl exec -it [pod-name] -n [namespace] --
# Port forward to a pod
kubectl port-forward [pod-name] [local-port]:[remote-port] -n [namespace]
# Show container logs
kubectl logs -n [namespace] [pod-name]
kubectl logs -n [namespace] /deployment/[deployment-name] # Use -f flag for continuous streaming
# Run a command inside an existing container
kubectl exec -it -n [namespace] [pod-name] -- [command...]
Использовать узел
Узлы — это базовые экземпляры, обеспечивающие вычислительную мощность и хранилище, а поверх них работают кластеры Kubernetes.
# Show node resource utilization
kubectl top node [node-name] # Node name is optional; without shows table of all nodes
# Get node information
kubectl get node
Использование развертываний, наборов DaemonSet и StatefulSets
Развертывания, наборы демонов и наборы с отслеживанием состояния — это абстракции более высокого уровня в Kubernetes, которые используются для управления развертыванием и масштабированием рабочих нагрузок приложений.
# Restart a workload (e.g. deployment, stateful set, daemon set)
kubectl rollout restart -n [namespace] [workload-kind]/[workload-name] # Triggers a re-creation of all pods for this workload, adhering to the workload configuration
# Check the status of a deployment rollout
kubectl rollout status deployment/[name]
# View rollout history of a deployment
kubectl rollout history deployment/[name] # View rollout history of a deployment
# Scale a deployment to the specified number of replicas
kubectl scale deployment/ --replicas=[number] # Scale a deployment to the specified number of replicas
# Watch events related to a deployment
kubectl events -n glasskube-system --for=deployment/glasskube-controller-manager
#Update Deployment Image
kubectl set image deployment/[deployment-name] [container-name]=new-image:tag
# Delete DaemonSet
kubectl delete daemonset [daemonset-name]
Использовать работу
Задание управляет выполнением модуля для выполнения конкретной задачи и обеспечивает успешное завершение задачи перед ее завершением.
# Run a CronJob manually
kubectl create job [job-name] --image=image/name
# Creates a new job from the job template specified in the cronjob
kubectl create job -n [namespace] --from=cronjob/[cron-job-name] [job-name]
Использовать секрет
Секреты используются для безопасного хранения конфиденциальной информации, такой как пароли, токены OAuth и ключи SSH, в Kubernetes.
# Create Secret
kubectl create secret generic [secret-name] --from-literal=key1=value1 --from-file=ssh-privatekey=~/.ssh/id_rsa
# Get a value from a secret
kubectl get secrets -n [namespace] [secret-name] --template='{{ .data.[key-name] | base64decode }}'
# Get a value from a secret using jsonpath
kubectl get secrets [secret-name] -o jsonpath="{.data.key1}" | base64 --decode
JSONPath — это язык запросов, используемый для извлечения определенных данных из документов JSON. В Kubernetes выражения JSONPath часто
-o jsonpath
используются с флагами в командах kubectl для извлечения конкретной информации из вывода этих команд.
Завершение оболочки
Возможно, вы заметили, что команды kubectl могут очень быстро становиться очень длинными. В файл bash или zshell можно добавить отличный сценарий завершения оболочки, чтобы упростить завершение тегов. Больше никакой зубрежки. Чтобы добиться этого во всех сеансах оболочки, добавьте в файл ~/.zshrc следующее:
source <(kubectl completion zsh)
и перезапустите оболочку. Если вы используете bash, следуйте инструкциям здесь:
# Install bash-completion package
sudo apt-get install -y bash-completion
# Store the output of the completion command in .bashrc
echo "source <(kubectl completion bash)" >> ~/.bashrc
# Activate the completion rules
source ~/.bashrc
работая декларативно
Декларативное управление ресурсами Kubernetes включает использование файлов манифеста YAML для указания желаемого состояния ресурсов и применение этих манифестов к кластеру.
Создать YAML-файл
Независимо от того, написаны ли объекты Kubernetes вами или кем-то другим, все объекты определяются в файлах YAML. API Kubernetes использует определения файлов YAML для понимания состояния кластера:
apiVersion: apps/v1
kind: Deployment
metadata:
name: glasskube-deployment
spec:
replicas: 3
selector:
matchLabels:
app: glasskube
env: prod
template:
metadata:
labels:
app: glasskube
env: prod
spec:
containers:
- name: glasskube-container
image: your-glasskube-image:latest
Чтобы создать это развертывание с нуля, используйте команду kubectl create:
kubectl create -f glasskube-deployment.yaml
YAML-файл приложения (клиентское приложение)
Использование файлов YAML — это стандартный способ управления ресурсами Kubernetes. Вы можете определить желаемое состояние ваших ресурсов в формате YAML и применить эти файлы YAML к кластеру.
kubectl apply -f manifest.yaml
Серверное приложение (SSA)
Серверное приложение — это новый метод применения изменений конфигурации к ресурсам Kubernetes. При использовании SSA изменения применяются непосредственно на стороне сервера, а это означает, что сервер API Kubernetes отвечает за обеспечение достижения желаемого состояния.
kubectl apply --server-side -f manifest.yaml
Плагины и инструменты
Всякий раз, когда я вижу какую-то дискуссию о Kubernetes, что именно? Для каких случаев использования он лучше всего подходит и как лучше об этом думать, приходит на ум тот же твит Келси Хайтауэр .
Эта точка зрения широко признана, о чем свидетельствует большая экосистема плагинов и инструментов Kubernetes, предназначенных для управления различными этапами жизненного цикла Kubernetes.
Менеджер плагинов Krew Kubernetes
Мощный менеджер плагинов для поиска новых плагинов — krew , его установка осуществляется следующим образом. Команда для установки плагина kubectl через Krew:
kubectl krew install <PLUGIN_NAME>
Давайте рассмотрим некоторые основные категории отладки и инструментов, выделив некоторые из наиболее полезных элементов. Поскольку есть на что обратить внимание, я добавлю раздел с отличием для каждого раздела.
Переключение контента и пространства имен
В среде Kubernetes вы всегда работаете в двух иерархических контекстах: кластерах и пространствах имен. Для обеспечения точного выполнения команд необходимо указать соответствующий контекст для получения желаемого результата. Переключение контекстов кластера или пространств имен может включать в себя длинные команды, которые трудно запомнить, и именно здесь на помощь приходят такие инструменты, как Kubectl и Kubens.
Кубекткс и Кубенс
Здесь легко просматривать доступные кластеры и пространства имен и переключаться между ними.
Инструкции по установке смотрите здесь .
Похвально:
kubectl-cf : более быстрый способ переключения между файлами kubeconfig (вместо контекстов).
видимость
Кластеры Kubernetes — это сложные системы со множеством движущихся частей, работа которых зависит друг от друга. Крайне важно всегда иметь четкое представление о том, что происходит.
к9с
K9s — это удобная и легкая интерактивная панель управления Kubernetes, работающая в терминале. Помимо визуализации ресурсов k8s, вы можете легко погружаться в модули, редактировать манифесты и управлять своими рабочими нагрузками в одном месте. Вероятно, это один из моих любимых инструментов управления Kubernetes.
Инструкция по установке здесь .
дерево кубектла
Плагин kubectl для изучения отношений владения между объектами Kubernetes с помощью владельцев ссылок на объекты.
Установить :
kubectl krew install tree
kubectl tree --help
кубеколор
KubeColor используется для добавления цвета к выводу kubectl.
Инструкция по установке здесь .
Управление пакетами
Управление пакетами кластера с использованием обычных инструментов управления пакетами может быть утомительным, а обновление пакетов может быть утомительным. Конфигурация неуклюжа, и до сих пор стек пакетов, необходимый для ее декларативного применения, выходил из-под контроля.
Стеклянный куб:
Благодаря Glasskube все болевые точки, обнаруженные в традиционных менеджерах пакетов, таких как Helm, устраняются, гарантируя, что у вас будет время управлять своими рабочими нагрузками и не беспокоиться об управлении стеком пакетов k8s.
сеть
Kubectl-Ресницы:
kubectl-Cilium — это плагин, который взаимодействует с Cilium, облачным решением на основе eBPF для обеспечения, защиты и наблюдения за сетевыми соединениями между рабочими нагрузками.
Установить:
kubectl krew install cilium
Серт-менеджер
Cert-manager добавляет сертификаты и их издателей в качестве типов ресурсов в кластерах Kubernetes, упрощая получение, обновление и использование этих сертификатов.
Инструкции по установке можно найти здесь.
Особое упоминание :
Ksniff : это плагин kubectl, который использует tcpdump и Wireshark для инициирования удаленного захвата любого пода в кластере Kubernetes.
РБАК
Кубология
Kubelogin — это плагин, сертифицированный Kubernetes OpenID Connect (OIDC), также известный как kubectl oidc-login.
Инструкция по установке здесь .
Kube-политический советник
Kube-policy-advisor упрощает создание политик безопасности подов K8s (PSP) или политик OPA из активной среды K8s или одного файла .yaml, содержащего спецификации подов (развертывания, наборы демонов, поды и т. д.).
Установить:
kubectl krew install advise-policy
Похвально:
- kubectl-who-can : показывает, что SUBJECTS имеет разрешения RBAC для VERB [TYPE | TYPE/NAME | NONRESOURCEURL] в Kubernetes.
- rakkess : Assessment access — плагин kubectl для отображения матрицы доступа к ресурсам сервера
- kubectl-rolesum : суммирует роли RBAC для указанного субъекта (ServiceAccount, пользователь и группа).
Линтинг
Kubectl-аккуратно:
Kubectl-neat : Kubectl-neat удаляет беспорядок из манифестов Kubernetes и делает их более читабельными. В основном он ищет и игнорирует две категории контента: значения по умолчанию, вставленные объектной моделью Kubernetes, и общие контроллеры мутаций.
Установить:
kubectl krew install neat
КубеЛинтер:
KubeLinter анализирует YAML-файлы Kubernetes и диаграммы Helm и сравнивает их с различными передовыми практиками, уделяя особое внимание готовности и безопасности производства.
Инструкции по установке: https://github.com/stackrox/kube-linter?tab=readme-ov-file#installing-kubelinter.
Обслуживание и безопасность кластера
КубеМопс
KubePug загружает сгенерированный файл данных data.json, содержащий информацию об устаревшем API для конкретной версии Kubernetes, сканирует работающий кластер Kubernetes, чтобы определить, затронуты ли устаревание каких-либо объектов, и отображает затронутые объекты пользователю.
Пример:
Вы можете использовать следующую команду для просмотра состояния работающего кластера.
$ kubepug --k8s-version=v1.22 # Will verify the current context against v1.22 version
[...]
RESULTS:
Deprecated APIs:
PodSecurityPolicy found in policy/v1beta1
├─ Deprecated at: 1.21
├─ PodSecurityPolicy governs the ability to make requests that affect the Security Context that will be applied to a pod and container.Deprecated in 1.21.
-> OBJECT: restrictive namespace: default
Deleted APIs:
APIs REMOVED FROM THE CURRENT VERSION AND SHOULD BE MIGRATED IMMEDIATELY!!
Ingress found in extensions/v1beta1
├─ Deleted at: 1.22
├─ Replacement: networking.k8s.io/v1/Ingress
├─ Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give servicesexternally-reachable urls, load balance traffic, terminate SSL, offer namebased virtual hosting etc.DEPRECATED - This group version of Ingress is deprecated by networking.k8s.io/v1beta1 Ingress. See the release notes for more information.
-> OBJECT: bla namespace: blabla
Установить:
kubectl krew install deprecations
Кубический пейзаж:
Kubescape — это платформа безопасности Kubernetes с открытым исходным кодом для ваших кластеров, конвейеров CI/CD и IDE, которая отделяет сигналы безопасности от шума сканера.
Инструкция по установке здесь .
Стоит поговорить о:
kubectl-watch : еще один инструмент наблюдения для визуального просмотра дополнительных изменений в ресурсах Kubernetes.
Поиск неисправностей
Инспектор Гаджет:
Inspektor-gadget — это набор инструментов (или гаджетов) для отладки и проверки ресурсов и приложений Kubernetes.
Инструменты Inspector Gadget называются гаджетами. Вы можете развернуть один, два или несколько гаджетов.
K8s-gpt:
k8sgpt — это инструмент для сканирования вашего кластера Kubernetes, диагностики и устранения проблем на простом английском языке.
Инструкция по установке здесь .
Стоит поговорить о:
kubectl node-shell : запустить корневую оболочку непосредственно в операционной системе работающего узла.
Ведение журнала
Стерн:
Stern позволяет отслеживать несколько подов в Kubernetes и несколько контейнеров внутри пода. Каждый результат имеет цветовую маркировку для более быстрой отладки.
Установить:
kubectl krew install stern
Некоторые последствия для безопасности использования плагинов kubectl включают возможные уязвимости, повышение привилегий и непреднамеренное раскрытие данных. Обязательно используйте только те плагины, которые активно поддерживаются и желательно имеют активное сообщество вокруг них.
Псевдоним
Необходимо запомнить так много команд kubectl, что упростите себе жизнь, используя сочетания клавиш или псевдонимы.
Здесь вы найдете репозиторий , содержащий скрипт для создания сотен удобных псевдонимов оболочки для kubectl. Проблема в том, что многие псевдонимы очень длинные и их трудно вспомнить. Но не волнуйтесь, я нашел очень полезную запись в блоге Бенуа Куэтиля о том, как бороться с многочисленными псевдонимами, сгенерированными приведенным выше сценарием.
Шпаргалка по Kubectl
Ни одно руководство не обходится без шпаргалки, верно?
# Basic Commands
# List API Resources
kubectl api-resources
# List Resources
kubectl get [name]
# Explain Resources
kubectl explain
# Working with Pods
# Create a new deployment named "nginx-deployment" with the nginx image
kubectl run nginx-deployment --image=nginx
# Show Resource Usage of a Pod
kubectl top pod -n [namespace] [pod-name]
# Run Command in Pod
kubectl run -it [pod-name] --image [image-name] --rm -- [command]
# Show Resource Labels
kubectl get pods -n [namespace] -L [label1] -L [label2]
# Execute Command in Pod
kubectl exec -it [pod-name] -- [command]
# Port Forwarding
kubectl port-forward [pod-name] [local-port]:[remote-port]
# Filtering Pods by Node Name
kubectl get pods --field-selector spec.nodeName=[node-name]
# Filtering Pods by Phase
kubectl get pods --field-selector status.phase=Running
# Delete a pod named "my-pod" in the default namespace
kubectl delete pod my-pod
# Working with Nodes
# Watch Nodes (Old School)
watch kubectl get nodes -o wide
# Watch Nodes (New School)
kubectl get nodes -w
# Node Resource Utilization
kubectl top node [node-name]
# Get Node Resource
kubectl describe node [node-name]
# Working with Deployments, Daemonsets, and StatefulSets
# Restart Workload
kubectl rollout restart -n [namespace] [kind]/[name]
# Rollout Status
kubectl rollout status [kind]/[name]
# Rollout History
kubectl rollout history [kind]/[name]
# Scale Deployment
kubectl scale deployment/[name] --replicas=[replica-count]
#Update Deployment Image
kubectl set image deployment/[deployment-name] [container-name]=new-image:tag
# Watch events related to a deployment
kubectl events -n glasskube-system --for=deployment/glasskube-controller-manager
# Delete DaemonSet
kubectl delete daemonset [daemonset-name]
# Working with Jobs
# Run CronJob Manually
kubectl create job -n [namespace] --from=cronjob/[cron-job-name] [job-name]
# Working with Secrets
# Get Value from Secret
kubectl get secret -n [namespace] [secret-name] -o=jsonpath='{.data.[key]}' | base64 --decode
# Create Secret
kubectl create secret generic [secret-name] --from-literal=key1=value1 --from-file=ssh-privatekey=~/.ssh/id_rsa
# Get a value from a secret
kubectl get secrets -n [namespace] [secret-name] --template='{{ .data.[key-name] | base64decode }}'
# Working with Containers
# Show Container Logs
kubectl logs -n [namespace] [pod-name]
kubectl logs -n [namespace] deployment/[deployment-name]
# Run Command in Container
kubectl exec -it -n [namespace] [pod-name] -- [command]
# Working Imperatively
# Modify Resource
kubectl edit -n [namespace] [resource-kind]/[resource-name]
# Delete Resource
kubectl delete [resource-kind]/[resource-name]
# Create Resource
kubectl create -f [resource-file]
# Working Declaratively
# Use Server-Side Apply (SSA)
kubectl apply --server-side -f [resource-file]
# Events and Logs
# Show Events for Resource
kubectl get events -n [namespace] --field-selector involvedObject.kind=[kind] --field-selector involvedObject.name=[name]
# Filtering Events by Type
kubectl get events --field-selector type=Warning
# Filtering Events by Involved Object Name
kubectl get events --field-selector involvedObject.name=[resource-name]
# Show Resource Usage
kubectl top
Другие источники
- Список рекомендуемых плагинов: https://github.com/ishantanu/awesome-kubectl-plugins .
- Список псевдонимов: https://github.com/ahmetb/kubectl-aliases
- Репозиторий плагинов Krew: https://krew.sigs.k8s.io/plugins/
Если вам нравится такой контент и вы хотите видеть его больше, поддержите нас , поставив звездочку на GitHub .
Программист, родившийся в 1990-х годах, разработал программу для переноса видео и заработал более 7 миллионов менее чем за год. Концовка была очень суровой! Старшеклассники создают свой собственный язык программирования с открытым исходным кодом в качестве церемонии совершеннолетия – резкие комментарии пользователей сети: Полагаясь на RustDesk из-за повального мошенничества, отечественный сервис Taobao (taobao.com) приостановил внутренние сервисы и возобновил работу по оптимизации веб-версии Java 17 является наиболее часто используемой версией Java LTS. Доля рынка Windows 10 Достигнув 70%, Windows 11 продолжает снижаться. Open Source Daily | Google поддерживает Hongmeng, чтобы взять на себя управление телефонами Rabbit R1 с открытым исходным кодом, поддерживаемыми Docker Microsoft; Electric закрывает открытую платформу Apple выпускает чип M4 Google удаляет универсальное ядро Android (ACK) Поддержка архитектуры RISC-V Юньфэн ушел из Alibaba и планирует в будущем производить независимые игры для платформ WindowsЭта статья была впервые опубликована на Yunyunzhongsheng ( https://yylives.cc/ ), приглашаем всех посетить ее.