Це багатосторінковий друкований вигляд цього розділу. Натисність щоб друкувати.
Доступ до застосунків у кластері
1 - Отримання переліку всіх образів контейнерів, що працюють у кластері
На цій сторінці показано, як за допомогою kubectl отримати перелік усіх образів контейнерів для Podʼів, що працюють у кластері.
Перш ніж ви розпочнете
Вам треба мати кластер Kubernetes, а також інструмент командного рядка kubectl має бути налаштований для роботи з вашим кластером. Рекомендується виконувати ці настанови у кластері, що має щонайменше два вузли, які не виконують роль вузлів управління. Якщо у вас немає кластера, ви можете створити його, за допомогою minikube або використовувати одну з цих пісочниць:
Для перевірки версії введіть kubectl version.
У цій вправі ви за допомогою kubectl отримаєте всі Podʼи, що працюють у кластері, і відформатуєте вивід, щоб отримати перелік контейнерів для кожного з них.
Перелік усіх образів контейнерів у всіх просторах імен
- Отримайте всі Podʼи у всіх просторах імен за допомогою
kubectl get pods --all-namespaces. - Відформатуйте вивід, щоб він містив лише перелік назв образів контейнерів, за допомогою
-o jsonpath={.items[*].spec['initContainers', 'containers'][*].image}. Це рекурсивно витягне полеimageз отриманого json.- Докладніше про використання jsonpath дивіться в довіднику з jsonpath.
- Відформатуйте вивід за допомогою стандартних інструментів:
tr,sort,uniq.- Використовуйте
trдля заміни пробілів на нові рядки. - Використовуйте
sortдля сортування результатів. - Використовуйте
uniqдля підрахунку образів.
- Використовуйте
kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec['initContainers', 'containers'][*].image}" |\
tr -s '[[:space:]]' '\n' |\
sort |\
uniq -c
Jsonpath інтерпретується так:
.items[*]: для кожного отриманого значення..spec: отримати spec.['initContainers', 'containers'][*]: для кожного контейнера..image: отримати образ.
Примітка:
Під час отримання одного Podʼа за назвою, наприкладkubectl get pod nginx, частину шляху .items[*] слід пропустити, оскільки повертається один Pod, а не список елементів.Перелік образів контейнерів за Podʼами
Форматування можна додатково контролювати за допомогою операції range, щоб перебирати елементи окремо.
kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.containers[*]}{.image}{", "}{end}{end}' |\
sort
Перелік образів контейнерів із фільтрацією за міткою Podʼа
Щоб вибрати лише Podʼи з певною міткою, використовуйте прапорець -l. Наведена нижче команда вибирає лише Podʼи з міткою app=nginx.
kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}" -l app=nginx
Перелік образів контейнерів із фільтрацією за простором імен Podʼа
Щоб вибрати лише Podʼи в певному просторі імен, використовуйте прапорець namespace. Наведена нижче команда вибирає лише Podʼи в просторі імен kube-system.
kubectl get pods --namespace kube-system -o jsonpath="{.items[*].spec.containers[*].image}"
Перелік образів контейнерів за допомогою go-template замість jsonpath
Як альтернативу jsonpath kubectl підтримує go-templates для форматування виводу:
kubectl get pods --all-namespaces -o go-template --template="{{range .items}}{{range .spec.containers}}{{.image}} {{end}}{{end}}"
Що далі
Довідка
- Довідник Jsonpath
- Довідник Go template
2 - Налаштування DNS для кластера
Kubernetes пропонує надбудову DNS для кластера, яка стандартно ввімкнена в більшості підтримуваних середовищ. У Kubernetes версії 1.11 і новіших рекомендовано CoreDNS, який стандартно встановлюється з kubeadm.
Докладніше про налаштування CoreDNS для кластера Kubernetes дивіться Налаштування сервісу DNS.