Основні команди для kubectl
Kubernetes — один з найпопулярніших інструментів для оркестрування застосунків, яким користуються команди по всьому світу. Щоб використовувати Kubernetes на максимум, DevOps-інженерам важливо опанувати kubectl — інтерфейс командного рядка, що є ключовим для взаємодії з кластерами.
У цьому тексті ми розглянемо базові команди kubectl, які потрібні для легкого керування кластерами Kubernetes.
Для чого потрібен kubectl?
Kubectl — важливий компонент Kubernetes, створений для керування та розгортання застосунків у кластерах. Командний рядок допомагає взаємодіяти напряму з API Kubernetes та контролювати стан кластера.
Kubectl потрібен для виконання таких завдань:
- створення, оновлення та видалення ресурсів Kubernetes;
- перегляд стану компонентів кластера та логів;
- перевірка ресурсів Kubernetes на наявність помилок;
- автоматизація рутинних завдань та безперервне оновлення застосунків;
- управління ролями та правами доступу до кластера;
- налаштування безпеки кластера.
Отже, kubectl є основним інструментом для взаємодії з кластерами Kubernetes, надаючи засоби для конфігурації, автоматизації та моніторингу застосунків.
Як налаштувати командний рядок Kubernetes на Debian?
Щоб користуватися kubectl, необхідно його встановити, налаштувати та під’єднати до кластера Kubernetes. Щоб почати використовувати репозиторій apt у Kubernetes, потрібно оновити індекс пакунків apt і встановити необхідні пакунки:
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
Якщо папки `/etc/apt/keyrings` немає, її слід створити:
sudo mkdir -p -m 755 /etc/apt/keyrings
Далі завантаж публічний ключ підпису для репозиторіїв пакетів Kubernetes. Для всіх репозиторіїв використовується один і той самий ключ підпису:
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg # дозволити непривілейованим програмам APT читати цей ланцюжок ключів
Далі необхідно перевірити конфігурацію. Щоб kubectl міг знайти та отримати доступ до кластера Kubernetes, йому потрібен файл kubeconfig. Він створюється автоматично під час розгортання кластера Minikube або створення кластера за допомогою kube-up.sh. Зазвичай конфігурація kubectl розташована за адресою ~/.kube/config.
Переконайся, що kubectl налаштований правильно:
kubectl cluster-info
Якщо у відповідь ти отримуєш URL-адресу, то kubectl налаштований для доступу до кластера.
Основні команди для kubectl
Перейдемо до команд, які потрібні, щоб ефективно використовувати kubectl та отримати доступ до всіх можливостей Kubernetes.
kubectl create
Команда використовується для створення ресурсів у кластері Kubernetes. Наприклад, щоб створити ресурс з файлу YAML:
kubectl create -f ім’я_файлу.yaml
Ця команда створює ресурс Kubernetes на основі конфігурації, наданої у вказаному файлі. Його вміст має відповідати синтаксису YAML і описувати потрібний ресурс Kubernetes.
Також можна створювати ресурс за допомогою вбудованої (inline) конфігурації:
kubectl create deployment my-deployment --image=nginx:latest --replicas=X
Де my-deployment — це розгортання, nginx:latest — це образ, X — кількість реплік.
Ця команда дозволяє швидко визначати та розгортати ресурси (Deployments, Services, ConfigMaps тощо), надаючи конфігурацію ресурсу у файлі або вказуючи її безпосередньо в команді. Це зручний спосіб створити ресурси без написання складних конфігурацій YAML.
kubectl apply
Ця команда створює або оновлює ресурс із файлу. Для прикладу, щоб створити або оновити ресурс із файлу YAML, введи:
kubectl apply -f ім’я_файлу.yaml
Якщо ти працюєш з Terraform, що використовується для автоматизації різних інфраструктурних завдань разом із налаштуванням Kubernetes, для керування кластером треба ввести наступну команду:
terraform apply -auto-approve && kubectl apply -f ім’я_файлу.yaml
Команда kubectl apply є потужним інструментом для керування ресурсами Kubernetes. Вона зазвичай використовується для розгортання та керування ресурсами декларативним способом, гарантуючи підтримку бажаного стану ресурсів.
kubectl get pods
Перелічує всі модулі в поточному просторі імен. Для застосування просто введи:
kubectl get pods
Під час виконання команда повертає таблицю, у якій відображається назва модуля, статус, вік та інші відповідні деталі. Це корисно для огляду модулів у кластері та отримання інформації про їхній поточний стан.
Також можна фільтрувати поди на основі міток:
kubectl get pods -l app=nginx
Де -l фільтрує пакети, app=nginx звужує кількість результатів до модулів, які мають мітку app зі значенням nginx.
Ця команда використовується для усунення несправностей, моніторингу та керування контейнерними програмами у Kubernetes. Вона допомагає адміністраторам і розробникам виявляти будь-які проблеми та виконувати подальші операції, як-от детальний опис модуля, доступ до логів модулів або виконання команд у модулі.
kubectl delete
Щоб видалити под, введи команду:
kubectl delete pod ім’я_пода
Ця команда буде корисною, коли треба видалити певний модуль зі свого кластера, щоб очистити ресурси або відтворити модуль з оновленими конфігураціями.
Якщо тобі треба видалити кілька модулів, які відповідають певній мітці, наприклад, це пакети, пов’язані з певною програмою, ти можеш відфільтрувати ресурси та видалити конкретні об’єкти:
kubectl delete pods -l app=nginx
Ця команда корисна для керування ресурсами, очищення та оновлення конфігурацій шляхом видалення.
kubectl logs
Щоб вивести логи певного пода, треба ввести команду:
kubectl logs ім’я_пода
Цю команду використовують під час усунення несправностей і дебагінгу, бо вона дозволяє переглядати вихідні дані логу певного модуля для виявлення будь-яких помилок, винятків або специфічної для програми інформації.
Також можна стежити за логами у режимі реального часу:
kubectl logs -f ім’я_пода
В результаті ти будеш постійно бачити вихідні дані логів, що генерує под. Це дає змогу контролювати поведінку програми під час виконання або відстежувати хід поточного процесу. Відстеження журналів у режимі реального часу дозволяє здійснювати проактивний моніторинг і усунення несправностей запущених модулів у кластері.
kubectl get deployments
Ця команда виводить список усіх розгортань у поточному просторі імен:
kubectl get deployments
В результаті ти побачиш назву розгортання, бажані репліки, поточні репліки та доступні оновлення. Це допомагає швидко перевірити стан і конфігурацію розгортань у кластері, що є важливим для ефективного керування та моніторингу розгортання програм.
Щоб отримати інформацію про конкретний деплоймент, введи:
kubectl get deployment ім’я_розгортання -o yaml
Ти отримаєш повну інформацію про конфігурацію розгортання, включаючи мітки, репліки тощо у форматі YAML. Це буде корисним, якщо тобі треба зрозуміти специфікації цього деплойменту чи усунути несправності.
kubectl rollout
Використовується для керування процесом розгортання в Kubernetes. Це дозволяє контролювати розгортання нових версій застосунку, виконувати відкат у разі виникнення проблем і відстежувати хід розгортання.
Щоб перевірити статус розгортання, введи команду:
kubectl rollout status deployment/ім’я_розгортання
kubectl config
Команда необхідна для керування файлами kubeconfig, що містять важливу інформацію про кластери, користувачів і контексти, необхідні для аутентифікації та доступу до кластерів Kubernetes. Він дозволяє виконувати такі дії, як перегляд, додавання, зміна та перемикання між різними конфігураціями.
Щоб отримати інформацію про поточний контекст у файлі kubeconfig, введи команду:
kubectl config current-context
В результаті ти побачиш назву поточного контексту, який використовується для взаємодії з кластером Kubernetes.
Якщо файл kubeconfig має декілька контекстів, ти можеш перемикатися між ними за допомогою команди:
kubectl config use-context ім’я_контексту
Тоді наступні команди Kubernetes будуть виконуватися для кластера та користувача, які пов’язані із вказаним контекстом.
kubectl get service
Дозволяє отримати список служб, які зараз запущені в кластері.
Щоб отримати список, можна просто виконати команду без додаткових параметрів:
kubectl get service
Ти побачиш таблицю з детальною інформацією про кожну службу: назву служби, тип, IP-адресу кластера, зовнішню IP-адресу (якщо є) і пов’язані порти.
Післяслово
Опанування основних команд kubectl — це важливий крок для ефективної роботи з кластерами Kubernetes. Використання командного рядка дозволяє швидко керувати ресурсами, стежити за станом кластерів та застосунків, а також автоматизувати деякі процеси. Коли ти навчишся використовувати ці команди, то зможеш продуктивніше працювати з Kubernetes.
Якщо ти тільки починаєш свій шлях в оркеструванні контейнерів, ідеальний варіант — це опанувати Kubernetes разом з ITEDU. За 3 тижні курсу «Kubernetes. Практикум з адміністрування» ти на практиці навчишся розгортати кластери різними способами, докеризувати застосунки, автоматизувати деплой і працювати з кластерами через командний рядок.