Управление кластером на PLCnext?
Являясь стандартом в области информационных технологий в течение многих лет, он еще не оказал большого влияния на промышленность. Часто такие технологии рассматриваются как
слишком сложно и не нужно. Возникает вопрос, приносят ли они нам пользу?
Видение PLCnext на примере Kubernetes.
Кубернет
Kubernete — это оркестратор (система управления, мастер), который использует в том числе контейнеры и таким образом формирует сеть через различные устройства. Система используется для предоставления приложений немного другим способом.
Классически приложения будут распространяться и поддерживаться на устройствах. Известно, на каком компьютере работает приложение. Если приложение должно работать на другом компьютере, это должен сделать человек. Если один из компьютеров выйдет из строя, все приложения компьютера перестанут быть доступными.
В Kubernetes мастеру дается описание состояния приложения, а мастер позаботится обо всем остальном. Это гарантирует, что запрошенное состояние поддерживается все время. Однако неизвестно, на каком узле в данный момент запущено приложение, но в принципе оно доступно.
Вопросы и ответы
Что вызывает сожаление, описание состояния
- Описание состояния является основой каждого приложения. Например, он содержит информацию о том, какой контейнер используется в какой версии или если приложение должно запускаться несколько раз для балансировки нагрузки. Записывается полностью в текстовом виде как
json
илиyaml
файл. Таким образом, он полностью поддерживает версии (например, Git или SVN).
Как установить кластер
- Участникам (мастеру и узлам) должны быть предоставлены два программных компонента (среда выполнения контейнера и Kubernetes). После этого нужен только один вход по токену к мастеру. Остальное сделает мастер.
Как выполнять обновления приложений
- Обновление — это просто замена описания состояния приложения новым. Обновление выполняется «на лету», то есть сначала устанавливается и запускается новое приложение, а в последний момент старое приложение закрывается. В случае сбоя обновления можно выполнить откат и просто восстановить старое состояние. Оркестратор сохраняет все старые состояния. Кроме того, существует возможность описанной версии условий.
- Здесь возникают новые возможности сценариев обновления. Например, если приложение часто запускается в кластере, сначала можно обновить только некоторые приложения. Если после нескольких дней или недель тестов в приложении не возникает ошибок, остальные можно обновить.
Что произойдет, если узел выйдет из строя
- Если в любой момент узел выходит из строя, все приложения просто становятся доступными на другом узле. Доступность осталась прежней. Пока доступно достаточно вычислительной мощности, все приложения могут продолжать работать. Много обсуждается сервер MQTT, который как центральный компонент вызывает много проблем в случае сбоя, но в кластере это не проблема.
Что произойдет, если мастер выйдет из строя
- Мастера также можно запускать с резервированием:если один из них выходит из строя, его работу может взять на себя другой узел.
Некоторые приложения должны работать на определенных узлах, потому что необходим доступ к оборудованию.
- Это может быть включено в описания состояний. Состояния также можно назначать на основе тегов, принадлежащих устройствам. Например, каждый AXCF2152 должен запускать определенное приложение. Чтобы снова вернуться к примеру MQTT, в федерации работает сервер MQTT, кроме того, каждый узел может быть оснащен клиентом MQTT для установления связи с сервером MQTT. Мастер существует только один раз, клиент запускается на каждом узле.
Пример
Пример описания состояния приложения, состоящего из трех контейнеров (внешний интерфейс, серверная часть, база данных).
Развертывание:
- Определяет все необходимые настройки для контейнеров.
Сервис:
- Создает интерфейс для приложения централизованно в кластере. Интерфейс всегда действителен независимо от того, на каком узле выполняется развертывание.
Вход:
- Связывает интерфейс с внешним интерфейсом с помощью записи DNS. Таким образом, внешний интерфейс всегда доступен в одном домене.
- Прокси-сервер http://MyApp.MyDomain.de/ для внешней службы (порт 80)
- Прокси-сервер http://MyApp.MyDomain.de/api для серверной службы (порт 3000)
# Kind of the Deployment
kind: Deployment
apiVersion: apps/v1
metadata:
name: MyApplicationName
labels:
app: MyApplication
MyApplication: MyApplicationName
namespace: default
## Container specs
spec:
containers:
## Container spec for Frontend
## Name for the Container
- name: MyContainer-frontend
## Container Image to use
image: MyApplicationImage_frontend
## Ports for the frontend, http
ports:
- containerPort: 80
## Container spec for Backend
- name: MyContainerName-backend
image: MyApplicationImage_backend
ports:
- containerPort: 3000
## Container spec for mongodb
- name: MyContainerName-mongo
image: mongo:3.4
## Startup commands for Mongo DB
command:
- "mongod"
- "--bind_ip"
- "0.0.0.0"
ports:
- containerPort: 27017
---
## Service declaration, expose Ports to the kubernetes api (only internal rechable)
apiVersion: v1
kind: Service
metadata:
name: MyApplicationName
spec:
ports:
- name: frontend
targetPort: 80
port: 80
- name: backend
targetPort: 3000
port: 3000
selector:
app: MyApplication
task: MyApplicationName
---
## Ingress declaration, bind proxy to fronted and backend
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
## Bind ingress to traefik service proxy
metadata:
name:MyApplicationName
annotations:
kubernetes.io/ingress.class: traefik
## Ingress class for frontend, map dns ingress to service port 80
spec:
rules:
- host: MyApp.Mydomain.de
http:
paths:
- path: /
backend:
serviceName:MyApplicationName
servicePort: frontend
## Ingress class for backend, map dns ingress to service port 3000
- host: MyApplicationName.MyDomain.de
http:
paths:
- path: /api
backend:
serviceName:MyApplicationName
servicePort: backend
Посмотрите
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/
https://github.com/k3s-io/k3s
https://github.com/rancher/k3d
https://github.com/inercia/k3x
Промышленные технологии
- Что такое штамповка? - Типы, операции и применение
- Что такое сварка трением? - Работа и применение
- Что такое термическое напыление? - Типы и применение
- Применение силиката натрия в литейном производстве
- Настройка VLAN в PLCnext Technology
- Удаленный gRPC с помощью grpcurl
- Шаблоны интерфейса командной строки PLCnext
- Доступ к веб-серверу PlcNext по DHCP
- Как создать простое консольное приложение PLCnext на C#
- Информационная панель PLCnext Tableau