Kubernetes REST API

Чтобы получить доступ к API kubectl proxy далее по адресу localhost:8001 можно полчить доступ к API $ curl localhost:8001/apis/batch/v1/jobs { «kind»: «JobList», «apiVersion»: «batch/v1», «metadata»: { «selfLink»: «/apis/batch/v1/jobs», «resourceVersion»: «298513» }, «items»: [] получить конкретный job к конкретном namespace curl http://localhost:8001/apis/batch/v1/namespaces/default/jobs/my-job Для того чтобы получить доступ к API из контейнера Сервис API всегда доступен как […]

Read More &#8594

Kubernetes metadata

Передача metadata в переменные окружения apiVersion: v1 kind: Pod metadata: name: downward spec: containers: — name: main image: busybox command: [«sleep», «9999999»] resources: limits: cpu: 100m memory: 4Mi env: — name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name — name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace — name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP — name: NODE_NAME valueFrom: fieldRef: […]

Read More &#8594

Kubernetes образы из приватного репозитория

Чтобы можно было забирать приватные контейнеры, надо создать Secret с учётными данными kubectl create secret docker-registry mydockerhubsecret \ —docker-username=myusername —docker-password=mypassword \ —docker-email=my.email@provider.com После этого в описании пода можно указывать откуда брать контейнер apiVersion: v1 kind: Pod metadata: name: private-pod spec: imagePullSecret: — name: mydockerhubsecret containers: — image: username/private:tag name: main  

Read More &#8594

Kubernetes Secret

Secret похожи на ConfigMap они такие же ассоциативные массивы, которые содержат данные в виде ключ-значение и могут передаваться как:  переменные среды в виде файлов в томе Отличие в том что они хранятся только в памяти и не записываются в файловую систему. Секреты используются для хранения защищенных данных, например сертификатов или доступы к базе или стороннему […]

Read More &#8594

Kubernetes ConfigMap

Передача параметров при запуске приложения В основном в docker используется передача значений через переменные окружения. Ресурс Kubernetes для хранения конфигурационных данных называется ConfigMap. Варианты передачи аргументов в контейнер:  передача аргументов командной строки переменные среды монтирование файла конфигурции Передача аргументов командной строки Команда, которая выполняется в docker состоит из команды и аргументов Entrypoint and CMD В […]

Read More &#8594

Kubernetes StorageClass

apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fast provisioner: k8s.io/minikube-hostpath parameters: type: pd-ssd — apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mongodb-pvc spec: storageClassName: fast resources: requests: storage: 100Mi accessModes: — ReadWriteOnce Когда создаётся PersistentVolumeClaim, автоматически создаётся PersistentVolume kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-505e3dcb-521b-11e9-8daa-080027284abe 100Mi RWO Delete Bound […]

Read More &#8594

Kubernetes PersistentVolume и PersistentVolumeClaim

Настраивается базовое хранилище, например NFS на NAS Затем регистрируется в K8S На его основе создаётся PersistentVolume — определяется размер и права доступа Пользователь делает зявку PersistentVolumeClaim и получает хранилище, не вдаваясь какой тип хранилища используется Для minikube apiVersion: v1 kind: PersistentVolume metadata: name: mongodb-pv spec: capacity: storage: 1Gi accessModes: — ReadWriteOnce — ReadOnlyMany persistentVolumeReclaimPolicy: Retain […]

Read More &#8594

Kubernetes Volumes

Тома являются компонентами пода, они не автономны и удаляются и создаются вместе с подом. Все контейнеры в поде могу получить к нему доступ и он может быть примонтирован в произвольном месте emptyDir – простой пустой каталог, используемый для хранения временных данных; hostPath – используется для монтирования каталогов из файловой системы рабочего узла в модуль; gitRepo […]

Read More &#8594

Kubernetes проверка готовности

Exec — определяет код выхода из програмы GET — просто запрос к серверу socket TCP — подключение к порту Можно задать паузу перед первым запросом на готовность пода. В дальнейшем если под не готов то он выкидывается из службы, когда он становится готов, то добавляется обратно в службу. apiVersion: v1 kind: ReplicationController metadata: name: kubia […]

Read More &#8594

Kubernetes доступ снаружи

NodePort — каждый узел кластера открывает порт на узле и перенаправляет трафик в службу. Service станет доступен по выделенному порту Тип службы LoadBalancer — служба будет доступна через выделенный балансировщик. Клиенты получат доступ к службе через IP балансировщика Ingress — предоставляет доступ к разным службам через один IP, работает на уровне HTTP ( уровень 7) […]

Read More &#8594