Статические модули в Kuberentes
На этой странице
- Предварительные условия
- Что будем делать?
- Создание статических модулей
- Заключение
Статические модули управляются непосредственно kubelet, и сервер API не имеет никакого контроля над этими модулями. kubelet следит за каждым статическим подом и перезапускает его в случае сбоя. Статические модули, работающие на узле, видны на сервере API, но не могут управляться сервером API. Static Pod не имеет связанного с ним контроллера репликации, сам сервис kubelet отслеживает его и перезапускает в случае сбоя. Проверка работоспособности статических модулей невозможна. Процесс kubelet отслеживает конкретный каталог, предназначенный для статических модулей.
Чтобы узнать больше о Static Pods, посетите официальную страницу Kubernetes здесь.
В этой статье мы рассмотрим шаги по созданию статического модуля из файла, сохраненного в расположении по умолчанию, из которого kubelet читает манифесты, а также мы изменим расположение по умолчанию на какой-либо другой каталог и увидим, как оттуда создается статический модуль. Мы создадим статические модули на рабочем узле.
Предпосылки
- Кластер Kubernetes по крайней мере с 1 рабочим узлом.
Если вы хотите научиться создавать кластер Kubernetes, нажмите здесь. Это руководство поможет вам создать кластер Kubernetes с 1 мастером и 2 узлами на экземплярах AWS Ubuntu 18.04 EC2.
Что мы будем делать?
- Создание статических модулей
Создание статических модулей
Выполните следующие команды на главном узле, чтобы получить сведения об узлах и модулях в кластере.
$master kubectl get nodes
$master kubectl get pods
Вы можете проверить контейнеры, запущенные в составе модулей.
$worker docker ps
$worker docker ps -a
Теперь войдите в рабочий узел и создайте новый файл со следующим содержимым по пути по умолчанию для манифестов статических модулей.
$worker vim /etc/kubernetes/manifests/static-web.yaml
apiVersion: v1 kind: Pod metadata: name: static-web labels: role: myrole spec: containers: - name: web image: nginx ports: - name: web containerPort: 80 protocol: TCP
Как только вы создаете определение модуля в расположении по умолчанию манифеста статических модулей, создается модуль, который не контролируется сервером API.
Вы можете проверить только что созданный модуль с помощью следующей команды, чтобы просмотреть список модулей из всех пространств имен на главном узле.
$master kubectl get pods
$master kubectl get pods --all-namespaces
Чтобы проверить контейнеры, созданные как часть пода, выполните следующую команду на рабочем узле
$worker docker ps
$worker docker ps -a
Мы также можем изменить местоположение по умолчанию, из которого kubelet читает манифесты.
Теперь создайте новую папку, в которой мы хотели бы хранить манифесты статических модулей.
Здесь мы создаем \/etc/kubelet.d/\.
$worker mkdir -p /etc/kubelet.d/
Создайте файл определения модуля в созданном нами каталоге.
$worker vim /etc/kubelet.d/static-web.yaml
apiVersion: v1 kind: Pod metadata: name: static-web-2 labels: role: myrole spec: containers: - name: web image: nginx ports: - name: web containerPort: 80 protocol: TCP
Чтобы изменить путь по умолчанию, по которому Kubelets считывает манифесты статических модулей, отредактируйте файл /var/lib/kubelet/config.yaml и измените значение \staticPodPath\ на \staticPodPath=/etc/kubelet.d\.
После настройки перезапустите службу Kubelet.
$worker systemctl restart kubelet
Как только служба перезапускается, Kubelet определяет новое местоположение, считывает манифесты из этого местоположения и создает модули.
Проверьте, был ли создан pod или нет.
$master kubectl get pods
Проверьте контейнер, созданный как часть пода на рабочем узле, с помощью следующей команды.
$worker docker ps
Заключение
В этой статье мы рассмотрели шаги по созданию статических модулей, а также увидели изменение конфигурации, необходимое в Kubelet для изменения каталога по умолчанию для манифестов статических модулей.