Tag Archives: Mimbolovek8s
Ресурсы Kubernetes
Namespace* (ns) [v1] — позволяет организовывать ресурсы в неперекрывающиеся группы (для каждого потребителя ресурсов).
Развертывающие рабочие нагрузки
Pod (po) [v1] — основная развертываемая единица, содержащая один или более процессов в расположенных рядом контейнерах. Метки (Labels).
ReplicaSet (rs) — поддерживает одну или несколько реплик модуля.
ReplicationController (rc) [v1] – устаревший и менее функциональный эквивалент ресурса ReplicaSet.
Job [batch/v1] — запускает модули, выполняющие завершаемую задачу.
CronJob [batch/v1beta1] — запускает назначаемое задание один раз или периодически.
DaemonSet (ds) — запускает одну реплику модуля в расчете на узел (на всех узлах или только на тех, которые соответствуют селектору узлов).
StatefulSet (sts) — запускает модули, имеющие внутреннее состояние, со стабильной идентичностью.
Deployment (deploy) — декларативное развертывание и обновление модулей.
Службы
Service (svc) [v1] — предоставляет доступ к одному или нескольким модулям на одной и стабильной паре IP-адреса и порта.
Endpoints (ep) [v1] — определяет, к каким модулям (или другим серверам) предоставляется доступ через службу.
NodePort — открывает сервис на том же порту каждого выбранного узла в кластере с помощью NAT. Делает сервис доступным вне кластера через :.
Ingress (ing) [extensions/v1beta1] — предоставляет внешним клиентам доступ к одной или нескольким службам через один доступный извне IP-адрес.
Конфигурация
ConfigMap (cm) [v1] — словарь в формате «ключ-значение» для хранения незащищенных параметров конфигурации приложений и предоставления им доступа к ним.
Secret [v1] — словарь в формате «ключ-значение» для хранения конфиденциальных данных. (далее…)
Ресурс Role определяет, какие действия можно предпринимать и на каких ресурсах (или какие типы HTTP-запросов можно выполнять и на каких ресурсах RESTful). В следующем ниже листинге определяется роль, которая позволяет пользователям получать и выводить список служб в пространстве имен boo.
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: boo name: service-reader rules: - apiGroups: [""] verbs: ["get", "list"] resources: ["services"]
Учетные записи ServiceAccount – это ресурсы, такие же, как модули, секреты, словари конфигурации и т. д., которые ограничиваются отдельными простран[1]ствами имен. Устанавливаемая по умолчанию учетная запись ServiceAccount создается автоматически для каждого пространства имен (именно их и ис[1]пользовали ваши модули все время). Список учетных записей ServiceAccount можно вывести точно так же, как вы делаете это с другими ресурсами:
$ kubectl get sa
Текущее пространство имен содержит учетную запись по умолчанию ServiceAccount. При необходимости могут быть добавлены дополнительные учетные записи служб. Каждый модуль связан ровно с одной учетной записью службы, но несколько модулей могут использовать одну и ту же учетную запись. Как видно на рисунке, модуль может использовать учетную запись ServiceAccount только из того же пространства имен.
Чтобы создать службу NodePort, необходимо описать его в манифесте: kubia-svc-nodeport.yaml. В файле задается тип NodePort и указывается порт узла, к которому должна быть привязана эта служба на всех узлах кластера, при этом указание порта не является обязательным. Если его не указать, Kubernetes выберет случайный порт.
apiVersion: v1 kind: Service metadata: name: kubia-nodeport spec: type: NodePort ports: – port: 80 targetPort: 8080 nodePort: 30123 selector: app: kubia
Конечные точки служб (Endpoints) Kubernetes используются для подключения к службам, находящимся за пределами кластера. Иногда через функционал служб Kubernetes требуется обеспечить доступ к внешним службам, чтобы она перенаправляла подключения на внешние IP-адреса и порты, что позволяет использовать преимущества и балансировки нагрузки служб и обнаружения служб. Клиентские модули, работающие в кластере, могут подключаться к внешней службе так же, как и к внутренним службам.
Службы (Service) не связываются с модулями напрямую. Вместо этого между ними находится ресурс конечных точек (Endpoints). Ресурс Endpoints – это список IP-адресов и портов, предоставляющих доступ к службе. Ресурс конечных точек похож на любой другой ресурс Kubernetes, поэтому можно вывести его основную информацию с помощью команды kubectl get:
$ kubectl get endpoints kubia
Если создать службу без селектора модулей, то Kubernetes не создаст ресурс конечных точек. Поэтому, необходимо вручную создать ресурсы Service и Endpoints и указать список конечных точек для службы. (далее…)
1