Поиск по сайту:

Статические модули в Kuberentes


На этой странице

  1. Предварительные условия
  2. Что будем делать?
  3. Создание статических модулей
  4. Заключение

Статические модули управляются непосредственно kubelet, и сервер API не имеет никакого контроля над этими модулями. kubelet следит за каждым статическим подом и перезапускает его в случае сбоя. Статические модули, работающие на узле, видны на сервере API, но не могут управляться сервером API. Static Pod не имеет связанного с ним контроллера репликации, сам сервис kubelet отслеживает его и перезапускает в случае сбоя. Проверка работоспособности статических модулей невозможна. Процесс kubelet отслеживает конкретный каталог, предназначенный для статических модулей.

Чтобы узнать больше о Static Pods, посетите официальную страницу Kubernetes здесь.

В этой статье мы рассмотрим шаги по созданию статического модуля из файла, сохраненного в расположении по умолчанию, из которого kubelet читает манифесты, а также мы изменим расположение по умолчанию на какой-либо другой каталог и увидим, как оттуда создается статический модуль. Мы создадим статические модули на рабочем узле.

Предпосылки

  1. Кластер Kubernetes по крайней мере с 1 рабочим узлом.
    Если вы хотите научиться создавать кластер Kubernetes, нажмите здесь. Это руководство поможет вам создать кластер Kubernetes с 1 мастером и 2 узлами на экземплярах AWS Ubuntu 18.04 EC2.

Что мы будем делать?

  1. Создание статических модулей

Создание статических модулей

Выполните следующие команды на главном узле, чтобы получить сведения об узлах и модулях в кластере.

$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 для изменения каталога по умолчанию для манифестов статических модулей.