K8s

https://github.com/kubernetes/kubernetes
https://kubernetes.io/docs/concepts/
minikube - для локального тестирования

Дириктории macOs
~/.kube - домашняя папка утилиты kubectl
~/.kube/config - основной файл подключения к сети k8s

Запустить контейнер внутри сети k8s c консолью и curl

kubectl run -it --rm busybox --image=radial/busyboxplus:curl --restart=Never

Выполнить команды внутри пода

kubectl exec -it my_pod bash
kubectl exec my_pod -- curl -s http://ya.ru - двойное тире в команде является сигналом об окончании командных параметров

Вывести список всех запущенных модулей во всех пространствах имен
kubectl get po —all-namespaces

основные команды kubectl

kubectl version
kubectl cluster-info
kubectl get [nodes|pods|services|deployments]- list resources
kubectl get pods -o wide - показать ип адреса всех подов
kubectl describe [nodes|pods|services|deployments]- show detailed information about a resource
kubectl logs - print the logs from a container in a pod
kubectl exec - execute a command on a container in a pod
kubectl proxy - proxy access to them so we can debug and interact with them
kubectl exec -ti $POD_NAME bash

Типы Services
ClusterIP (default) - Exposes the Service on an internal IP in the cluster. This type makes the Service only reachable from within the cluster.
NodePort - Exposes the Service on the same port of each selected Node in the cluster using NAT. Makes a Service accessible from outside the cluster using <NodeIP>:<NodePort>. Superset of ClusterIP.
LoadBalancer - Creates an external load balancer in the current cloud (if supported) and assigns a fixed, external IP to the Service. Superset of NodePort.
ExternalName - Exposes the Service using an arbitrary name (specified by externalName in the spec) by returning a CNAME record with the name. No proxy is used. This type requires v1.7 or higher of kube-dns.

kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080
service/kubernetes-bootcamp exposed
kubectl delete service -l run=kubernetes-bootcamp

запуск контейнера

kubectl run kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1 --port=8080

работа с лейблами

kubectl get [pods|services] -l ${label} - показать поды с этим лейблом
kubectl label pod $POD_NAME ${label} - установить лейбл
kubectl get pods --show-labels - показать все поды и лейбы к ним
kubectl get pods -L creatin,env - показать дополнитульную колонку, где значение лейбл
kubectl get pod -l env - вывести все поды у которых есть метка env
kubectl get pod -l '!env' - и те у которых ее нет
env!=prod
env in (prod,develop)
env notin (prod,develop)
env=prod,ssd=true

Scaling

kubectl scale deployments/kubernetes-bootcamp --replicas=4

Обновление

kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
kubectl rollout status deployments/kubernetes-bootcamp - стутус обновления
kubectl rollout undo deployments/kubernetes-bootcamp - откатить назад

Конфигурация

--restart=Never - никогда не перезапускать этот под после того как он умрет

Получил дескриптор (yaml) задеплоиной сущности

kubectl get pod my_pod -o yaml

Пространства имен

kubectl get pod my_pod -n my_namespace - получить под из другого пространства имен

Сокращения
Namespace - ns
Pod - po
ReplicaSet - rs
ReplicationController - rc (deprecated)
DaemonSet - ds
StatefulSet - sts
Deployment - deploy
Service - svc
Endpoints - ep
Ingress - ing
ConfigMap - cm
PersistentVolume - pv
PersistenetVolumeClaim - pvc
StorageClass - sc

Порт-форварт
подключение к серивису, перекитка порта

kubectl port-forward service/{service name} {local port}:{remote port}

Проверка правв
какие права есть на k8s
утилита rakkess github

Пока не указано иное, содержимое этой страницы распространяется по лицензии Creative Commons Attribution-ShareAlike 3.0 License