Kubernetes основы подов

Поднимаем локальный кластер minikube

curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
  && chmod +x minikube

sudo cp minikube /usr/local/bin && rm minikube

Чтобы запустить

minikube start

Просмотр WEB интерфейса

minikube dashboard

Открыть сервис через в minikube сразу в браузере

minikube service kubia-http

 

Работа с kubectl

Проброс порта пода на локальную машину например порт пода ( kubia-manual) 8080 на 8888 локальный

kubectl port-forward kubia-manual  8888:8080

Посмотреть расширенную информацию о поде

kubectl get po -o wide

Просмотр логов пода

kubectl logs kubia-manual

Просмотр логов конкретного контейнера в поде

kubectl logs kubia-manual -c kubia

Метки

Метки служат для определения и ориентации среди окружений и приложений, чтобы просмотреть метки

kubectl get po --show-labels

вывести каждую метку в отдельный столбик

kubectl get po -L creation_method,env

Изменить текущую

kubectl label po kubia-manual-v2 env=debug --overwrite

Задать новую

kubectl label po kubia-manual env=debug

 

Задаются

---
metadata:
    name: kubia-manual-v2
    labels:
      creation_method: manual
      env: prod
---

Метки так же можно присвоить нодам в кластере k8s, например для разделения по дискам SSD HDD или наличию GPU

kubectl label node gke-kubia-85f6-node-0rrx gpu=true

Для того чтобы потом выбрать ноду с gpu, добавляем селектор

spec:
  nodeSelector:
    gpu: "true"

 

Селектор меток

Позволяет выбрать все нужные нам ресурсы на основе меток, пример

kubectl get po -l creation_method=manual

Чтобы найти все поды у которых не задана метка env

kubectl get po -l '!env'

creation_method!=manual , чтобы выбрать модули с меткой creation_
method с любым значением, кроме manual ;

 env in (prod,devel) , чтобы выбрать модули с меткой env , установлен-
ной в prod или development ;

 env notin (prod,devel) , чтобы выбрать модули с меткой env , установ-
ленной в любое значение, кроме prod или devel .

Анотации

Можно добавлять для более понятного описания ресурсов

kubectl annotate pod kubia-manual neklo.com/tes="test foo bar"
kubectl get po kubia-manual -o yaml

metadata:
  annotations:
    neklo.com/tes: test foo ba

Пространства имён = namespace

kubectl get ns

В дальнейшем при запросе ресурсов из конкретного namespace достаточно указать -n

kubectl get po -n kube-system

Создание namespace:

apiVersion: v1
kind: Namespace
metadata:
  name: custom-namespace

Удаление

удаление namespace, удалится всё что находится внутри: поды, сервисы, реплики

kubectl delete ns custom-namespace

удаление по метке

kubectl delete po -l creation_method=manual

удаление всех подов в namespace

kubectl delete po --all

Удалить все ресурсы всех типов

kubectl delete all --all

Поиск информации о ресурсе

kubectl explain pod
kubectl explain pod.metadata

 

K8S

Related Articles

0 Comment

Leave a Comment

Ваш адрес email не будет опубликован.