Kubernetes — учётные записи служб

Необходимы для того чтобы каждая служба имела свой доступ к метаданным, некоторым не нужен доступ, некоторым только на чтение, некоторым запись определённых метаданных Создание учётной записи kubectl create serviceaccount foo kubectl describe sa foo Name: foo Namespace: default Labels: <none> Annotations: <none> Image pull secrets: <none> Mountable secrets: foo-token-nxxfs Tokens: foo-token-nxxfs Events: <none> kubectl describe […]

Read More &#8594

Kubernetes API — защита

Аутентификация Из сертификата клиента Из токена аутентификации, переданного в заголовке http В результату обычной HTTP-аутентификации Плагины аутентификации активируются при запуске API Пользователи и группы Плагин аутентификации возвращает имя пользователя и группу. Kubernetes использует информацию для верификации дальнейших действий Пользователи могу быть:  Реальные люди Модули Встроенные группы:  system:unauthenticated  — где ни один плагин аутентификации не смог […]

Read More &#8594

Kubernetes отказоустойчивость кластера

Etcd Создана как распределённая система, достаточно указать при создании ноды что войти в кластер, число в кластере должно быть не чётным, чтобы работал принцип кворума. Число мастер узлов более 7 начинает влиять на производительность всего кластера. API Не хранит никакого состояния, все данные хранит в etcd, по этому экземпляров API может быть сколько угодно. Менеджер […]

Read More &#8594

Kubernetes службы

По сути службы представляют собой правила iptables основанные на паре IP-port По сути сам IP адрес без порта не имеет смысла, по этому службы не пингуются, они не могу отвечать на ping. Kube-proxy — зпущен на каждой ноде кластера. После того как в API поступает информация о создании службы. Всем kube-proxy посылается информация с виртуальным […]

Read More &#8594

Kubernetes как устроена сеть

Сеть реализована при помощи плагинов CNI (Container Network Interface):  Calico Flannel Romana Чтобы включить CNI, надо запускать kubelet с параметром —network-plugin=cni Таким образом обеспечивается свзять между контейнерами внутри кластера, не зависимо от сложности физической сети. Каждый контейнер получает уникальный IP адрес, чтобы не было конфликтов, контейнеры в одном поде принадлежать одной подсети, для обеспечения коммутации […]

Read More &#8594

Kubernetes внутреннее устройство

Чтобы посмотреть статусы компонентов kubectl get componentstatuses Вывести все запущенные системные контейнеры на всех узлах кластера kubectl get po -o custom-columns=POD:metadata.name,NODE:spec.nodeName —sort-by spec.nodeName -n kube-system ETCD Это быстрое, распределённое и согласованное хранилище в формате ключ — значение, для хранения манифестов — только API Kubernetes взаимодействует с etcd Особенность параллельной позитивной блокировки что каждая порция данных […]

Read More &#8594

Kubernetes SRV записи DNS для описания служб

Записи SRV используются для указания на хостнеймы и порты серверов, предоставляющих конкретную службу. Чтобы получить список SRV, можно запустить одноразовый модуль с командой dig, после выполнения команды он будет удалён $ kubectl run -it srvlookup —image=tutum/dnsutils —rm —restart=Never — dig SRV kubia.default.svc.cluster.local If you don’t see a command prompt, try pressing enter. ; <<>> DiG […]

Read More &#8594

Kubernetes StatefulSet

ReplicaSet — если мы захотим примонтировать для каждого контейнера диск, то не получится, все контейнеры в реплике будут ссылаться на один диск. StatefulSet — используется для организации инфраструктуры, для приложений с внутренним состоянием, когда модулям приложения необходимо знать о других модулях и сетевая структура была стабильна т.е. при пересоздании модулей чтобы не менялись IP и […]

Read More &#8594

Kubernetes Deployment

Старый метод Создадим тестовую площадку apiVersion: v1 kind: ReplicationController metadata: name: kubia-v1 spec: replicas: 3 template: metadata: name: kubia labels: app: kubia spec: containers: — image: luksa/kubia:v1 name: nodejs — apiVersion: v1 kind: Service metadata: name: kubia spec: type: NodePort selector: app: kubia ports: — name: http port: 80 nodePort: 30080 обновим контроллер и версию […]

Read More &#8594