Руководство по KUBECTL, как никогда раньше

Какой ты инженер? Сможет ли кто-нибудь догадаться об этом, просто взглянув на внешний вид? Наверное, невозможно угадать.

Перевод из книги «Руководство по 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

Другие источники

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

Эта статья была впервые опубликована на Yunyunzhongsheng ( https://yylives.cc/ ), приглашаем всех посетить ее.

Программист, родившийся в 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
{{o.name}}
{{м.имя}}

рекомендация

отmy.oschina.net/u/6919515/blog/11093686
рекомендация