Как установить кластер Kubernetes MicroK8s на CentOS 8
MicroK8s — это сертифицированное CNCF восходящее развертывание Kubernetes, которое полностью работает на вашей рабочей станции или пограничном устройстве. Благодаря тому, что он запускает все службы Kubernetes изначально (то есть без виртуальных машин), он упаковывает весь набор необходимых библиотек и двоичных файлов. Установка ограничена тем, насколько быстро вы можете загрузить пару сотен мегабайт, и удаление MicroK8s ничего не оставляет позади Источник: страница Ubuntu .
CNCF запускает сертифицированную программу соответствия Kubernetes, чтобы гарантировать соответствие, чтобы обеспечить бесперебойную совместимость от одной установки Kubernetes к другой. Соответствие программного обеспечения гарантирует, что версия Kubernetes каждого поставщика поддерживает необходимые API, как и версии сообщества с открытым исходным кодом. Источник: сайт CNCF .
В этом руководстве мы вместе сделаем следующее:
- Установите кластер Kubernetes с помощью MicroK8s
- Включите основные надстройки Kubernetes, такие как DNS и панель управления.
- Развертывание модулей и добавление новых узлов
- Настроить хранилище
- Включить ведение журнала, мониторинг прометея и графаны
- Настроить реестр
Все, что нам понадобится, это дистрибутив Linux с поддержкой Snap, и в этом руководстве мы будем придерживаться CentOS 8. Начнем.
Шаг 1. Обновите сервер и установите Snap
Чтобы начать работу на чистой и готовой платформе, мы обновим наш сервер, чтобы получить последние исправления и программное обеспечение, добавим репозиторий Epel, а затем установим наш пакет snap от Epel. Выполните приведенные ниже команды, чтобы добиться этого.
sudo dnf install epel-release -y
sudo dnf update
sudo dnf -y install snapd
Отключить SELinux
Если у вас есть SELinux в принудительном режиме, выключите его или используйте разрешающий режим.
sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
После завершения установки пакета модуль systemd, который управляет основным сокетом мгновенной связи, должен быть включен следующим образом:
sudo systemctl enable --now snapd.socket
Кроме того, чтобы включить поддержку классической привязки, введите следующее, чтобы создать символическую ссылку между /var/lib/snapd/snap и /snap, затем добавьте привязку к переменной PATH
sudo ln -s /var/lib/snapd/snap /snap
echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/mysnap.sh
После этого либо выйдите из системы и снова войдите, либо перезапустите систему, чтобы убедиться, что пути привязки обновлены правильно. Теперь оснастка будет установлена. Чтобы проверить это, мы можем найти пакет и посмотреть, работает ли он должным образом:
$ snap find microk8s
Name Version Publisher Notes Summary
microk8s v1.19.0 canonical✓ classic Lightweight Kubernetes for workstations and appliances
Шаг 2: Установите MicroK8s на CentOS 8
Теперь, когда наш сервер обновлен и Snap установлен, мы готовы с комфортом загрузить MicroK8 и начать использовать его для тестирования и запуска наших приложений в режиме контейнеров. Чтобы установить MicroK8s, выполните простую команду snap ниже, и все будет готово. Такова красота Снаппи.
$ sudo snap install microk8s --classic
microk8s v1.19.0 from Canonical✓ installed
Если вы не добавите переключатель –classic, вы получите сообщение об ошибке. Так что любезно добавьте это.
Чтобы иметь возможность запускать команду microk8s от имени пользователя sudo, вам необходимо добавить пользователя в группу microk8s, затем выйти из системы и снова войти в систему. Добавьте пользователя, как показано ниже:
sudo usermod -aG microk8s $USER
sudo chown -f -R $USER ~/.kube
После того, как разрешения были реализованы, выйдите из системы и снова войдите в систему.
После этого мы можем просмотреть установленные снимки
$ snap list
Name Version Rev Tracking Publisher Notes
core 16-2.45.3.1 9804 latest/stable canonical✓ core
microk8s v1.19.0 1668 latest/stable canonical✓ classic
В целях добавления новых узлов позже нам нужно будет открыть порты на сервере. Это применимо, если на вашем сервере установлен брандмауэр. Добавьте порты следующим образом:
sudo firewall-cmd --permanent --add-port={10255,12379,25000,16443,10250,10257,10259,32000}/tcp
sudo firewall-cmd --reload
Шаг 3: Управление MicroK8s в CentOS 8
MicroK8s теперь установлен на нашем сервере, и мы готовы к работе. Для управления MicroK8 (то есть запуском, состоянием, остановкой, включением, отключением, списком узлов и т. Д.) Вы просто делаете следующее:
#####Check Status#####
$ microk8s status
microk8s is running
high-availability: no
datastore master nodes: 127.0.0.1:19001
datastore standby nodes: none
#####Stop MicroK8s#####
$ microk8s stop
stop of [microk8s.daemon-apiserver microk8s.daemon-apiserver-kicker microk8s.daemon-cluster-agent microk8s.daemon-containerd microk8s.daemon-contr…Stopped
#####Start MicroK8s#####
$ microk8s start
Started.
#####List MicroK8s Nodes#####
$ microk8s kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready <none> 2m6s v1.19.0-34+1a52fbf0753680
#####Disable MicroK8s#####
$ sudo snap disable microk8s
#####Enable MicroK8s#####
$ sudo snap enable microk8s
Потрясающий материал! Наш MicroK8s установлен и без проблем реагирует на наши команды. Перейдем к следующему шагу.
Шаг 4. Разверните модули и включите панель управления
Здесь мы продолжим и развернем модули и включим панель инструментов, чтобы упростить нашу работу с помощью хороших визуальных эффектов. Развернем образец модуля Redis следующим образом:
$ microk8s kubectl create deployment my-redis --image=redis
deployment.apps/my-redis created
Список развернутых модулей
$ microk8s kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-847c8c99d-f7zd2 1/1 Running 2 3h48m
kube-system calico-node-xxhwx 1/1 Running 2 3h48m
default my-redis-56dcdd56-tlfpf 1/1 Running 0 70s
И наша последняя капсула Redis работает и мурлычет !!
Если вы хотите войти в экземпляр Redis, действуйте, как показано ниже:
$ microk8s kubectl exec -it my-redis-56dcdd56-tlfpf -- bash
root@my-redis-56dcdd56-tlfpf:/data#
Чтобы проверить журналы модуля, убедитесь, что вы включили его соответствующее пространство имен, потому что оно будет проверять только пространство имен “default” если оно не указано.
$ microk8s kubectl logs my-redis-56dcdd56-tlfpf -n default
1:C 14 Sep 2020 12:59:32.350 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 14 Sep 2020 12:59:32.350 # Redis version=6.0.8, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 14 Sep 2020 12:59:32.350 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
1:M 14 Sep 2020 12:59:32.352 * Running mode=standalone, port=6379.
1:M 14 Sep 2020 12:59:32.352 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower
value of 128.
1:M 14 Sep 2020 12:59:32.352 # Server initialized
1:M 14 Sep 2020 12:59:32.352 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo madvise > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled (set to 'madvise' or 'never').
1:M 14 Sep 2020 12:59:32.352 * Ready to accept connections
Затем давайте включим панель управления и DNS, чтобы наслаждаться просмотром наших рабочих нагрузок. Включите его следующим образом
$ microk8s enable dns dashboard
Enabling Kubernetes Dashboard
Enabling Metrics-Server
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
Нам понадобится токен для входа в Личный кабинет. Чтобы получить токен, выполните две команды ниже.
$ token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
$ microk8s kubectl -n kube-system describe secret $token
Name: default-token-gnj26
Namespace: kube-system
Labels: <none>
Annotations: kubernetes.io/service-account.name: default
kubernetes.io/service-account.uid: 40394cbe-7761-4de9-b49c-6d8df82aea32
Type: kubernetes.io/service-account-token
Data
ca.crt: 1103 bytes
namespace: 11 bytes
token: eyJhbGciOiJSUzI1NiIsImtpZCI6InBOVTc3NVd5ZDJHT1FYRmhWZFJ5ZlBVbVpMRWN5M1BEVDdwbE9zNU5XTDgifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLWduajI2Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI0MDM5NGNiZS03NzYxLTRkZTktYjQ5Yy02ZDhkZjgyYWVhMzIiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.vHqwKlMGX650dTuChwYWsPYZFH7zRhRjuh-BEPtgYYPfrayKU08DSC5v3CixkrZH-wXZydOPit50H5SfCZPwY1TqDNCFgbz--0GnB7GhgwSoK4laXpr42Al7EBgbMWfUEAtnWXVkObUYzF31Sfhac2AnPIBp2kFlqJt8M03uoperJuFLl5x-fDacGrcXTQqvY2m5K1oE4zE38vtaJXdzgNfBMbtUrMneihoFczzOzwPLxzJJ4eZ7vAz1svG6JHO5PDDYbV0gded0egoLQkhu4Saavf8ILUjupJdYywA2VCqB6ERrrElMBHs5tYfckfyi4f6eR59_EZkf7-neCDWTAg
Скопируйте токен и сохраните его в надежном месте.
Далее вам нужно подключиться к сервису дашборда. Хотя оснастка MicroK8s будет иметь IP-адрес в вашей локальной сети (IP-адрес кластера службы kubernetes-dashboard), вы также можете получить доступ к панели управления, перенаправив ее порт на свободный порт на вашем хосте с помощью:
microk8s kubectl port-forward -n kube-system service/kubernetes-dashboard --address 0.0.0.0 30560:443
Обратите внимание, что мы добавили –адрес 0.0.0.0, чтобы он мог быть доступен с любого IP- адреса, а не локально (127.0.0.1) на сервере. Теперь вы сможете получить доступ к панели управления через порт 30560. Убедитесь, что этот порт включен на вашем брандмауэре, если он настроен в вашей среде.
sudo firewall-cmd --permanent --add-port=30560/tcp
sudo firewall-cmd --reload
Теперь откройте браузер и укажите IP-адрес или полное доменное имя вашего сервера. Это https://[ip или FQDN]:30560 . Должна отобразиться следующая страница входа. Вы заметите, что ему нужен токен или файл Kubeconfig. Мы уже сгенерировали токен, как указано выше (Fetch token). Просто скопируйте его и вставьте на страницу входа.
Вставьте токен
И вы должны быть введены
Шаг 5: Добавьте узлы в кластер
До сих пор мы работали над одним узлом (сервером), и если вы хотите масштабировать и распространять свои приложения на двух или более узлах (серверах), тогда это доставит вас туда. Чтобы добавить еще один узел в свой кластер, вам просто нужно установить на нем Snap и MicroK8S, поскольку это уже было описано в шагах 1 и 2. Выполните шаги 1 и 2 на своем новом сервере CentOS 8, затем продолжите ниже.
Если Firewalld запущен, разрешите порты
node-01 ~ $ export OPENSSL_CONF=/var/lib/snapd/snap/microk8s/current/etc/ssl/openssl.cnf
node-01 ~ $ sudo firewall-cmd --add-port={25000,10250,10255}/tcp --permanent
node-01 ~ $ sudo firewall-cmd --reload
На главном узле (тот, который мы установили первым), выполните следующие команды, чтобы получить наш токен и присоединиться к команде
$ microk8s add-node
From the node you wish to join to this cluster, run the following:
microk8s join 172.26.24.237:25000/dbb2fa9e23dfbdda83c8cb2ae53eaa53
Как вы можете видеть сверху, теперь у нас есть команда для запуска на нашем рабочем узле, чтобы присоединиться к кластеру. Не раздумывая, скопируйте команду, войдите в свой рабочий узел и выполните ее, как показано ниже:
На новом узле выполните следующие команды
node-01 ~ $ microk8s join 172.26.24.237:25000/dbb2fa9e23dfbdda83c8cb2ae53eaa53
Contacting cluster at 172.26.16.92
Waiting for this node to finish joining the cluster. ..
Шаг 6: Настройка хранилища
MicroK8s поставляется со встроенным хранилищем, которое нужно просто включить. Чтобы включить хранилище, добавьте каталог /lib86 к пути переменной среды LD_LIBRARY_PATH, затем включите хранилище, как показано ниже, на главном узле:
$ export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/lib64"
$ microk8s enable storage
deployment.apps/hostpath-provisioner created
storageclass.storage.k8s.io/microk8s-hostpath created
serviceaccount/microk8s-hostpath created
clusterrole.rbac.authorization.k8s.io/microk8s-hostpath created
clusterrolebinding.rbac.authorization.k8s.io/microk8s-hostpath created
Storage will be available soon
Чтобы проверить, включено ли хранилище, мы должны проверить наши модули и убедиться, что модуль hostpath-provisioner запущен.
$ microk8s kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system kubernetes-dashboard-7ffd448895-ht2j2 1/1 Running 2 22h
kube-system dashboard-metrics-scraper-6c4568dc68-p7q6t 1/1 Running 2 22h
kube-system metrics-server-8bbfb4bdb-mgddj 1/1 Running 2 22h
kube-system coredns-86f78bb79c-58sbs 1/1 Running 2 22h
kube-system calico-kube-controllers-847c8c99d-j84p5 1/1 Running 2 22h
kube-system calico-node-zv994 1/1 Running 2 21h
kube-system hostpath-provisioner-5c65fbdb4f-llsnl 1/1 Running 0 71s <==
Подтвердите созданный StorageClass, выполнив следующую команду:
$ microk8s kubectl get storageclasses
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
microk8s-hostpath (default) microk8s.io/hostpath Delete Immediate false 8m42s
Как видите, существует класс хранилища с именем « microk8s-hostpath » cerated. Это важно, потому что это имя будет использоваться при создании PersistentVolumeClaims, как будет показано ниже.
Создать PersistentVolumeClaim
Чтобы создать наш образец PersistentVolumeClaim, просто откройте свой любимый редактор и добавьте следующие строки yaml . Обратите внимание на microk8s-hostpath в storageClassName.
$ nano sample-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: elk-data-1
spec:
storageClassName: microk8s-hostpath
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
Затем создайте PVC, выполнив команду create, как показано ниже. Вы должны увидеть напечатанное созданное сообщение.
$ microk8s kubectl create -f sample-pvc.yaml
persistentvolumeclaim/elk-data-1 created
Чтобы подтвердить, что наш PVC был создан, просто введите волшебную команду MicroK8S, как показано ниже. И да, ПВХ действительно создан.
$ microk8s kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
elk-data-1 Bound pvc-fe391d65-6909-4c76-a6c9-87b3fd5a58a1 2Gi RWO microk8s-hostpath 5s
А поскольку MicroK8S доставляет постоянные тома динамически, наш PVC создаст постоянный том, что может быть подтверждено командой ниже.
$ microk8s kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-fe391d65-6909-4c76-a6c9-87b3fd5a58a1 2Gi RWO Delete Bound default/elk-data-1 microk8s-hostpath 5m 39s
Шаг 7: Настройка реестра
Реестр — это в основном система хранения и доставки контента, содержащая именованные образы Docker, доступные в различных версиях с тегами, которые следуют за ходом разработки и выпусками. MicroK8S имеет встроенный реестр, который также необходимо включить и использовать. Включение реестра довольно просто, как мы до сих пор видели в других сервисах. Единственное, что следует учитывать, это то, что он выбирает 20 ГБ в качестве размера реестра по умолчанию, если вы его не укажете. Если вы хотите указать размер, вы просто добавляете конфигурацию размера, как показано ниже. Если вас устраивает 20G, игнорируйте вариант размера.
$ microk8s enable registry:size=25Gi
The registry is enabled
The size of the persistent volume is 25Gi
Подтвердите, что модуль реестра был развернут
$ microk8s kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system kubernetes-dashboard-7ffd448895-ht2j2 1/1 Running 2 22h
kube-system dashboard-metrics-scraper-6c4568dc68-p7q6t 1/1 Running 2 22h
kube-system metrics-server-8bbfb4bdb-mgddj 1/1 Running 2 22h
kube-system coredns-86f78bb79c-58sbs 1/1 Running 2 22h
kube-system calico-kube-controllers-847c8c99d-j84p5 1/1 Running 2 22h
kube-system calico-node-zv994 1/1 Running 2 22h
kube-system hostpath-provisioner-5c65fbdb4f-llsnl 1/1 Running 0 52m
container-registry registry-9b57d9df8-6djrn 1/1 Running 0 3m34s <==
Чтобы проверить производительность нашего вновь созданного реестра, мы установим Podman, извлечем образ и поместим его в локальный реестр. Все команды проиллюстрированы ниже:
$ sudo dnf -y install podman
$ podman pull redis
Подтвердите, что изображение было вытащено
$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE 9ueue state U
docker.io/library/redis latest 84c5f6e03bf0 5 days ago 108 MB
Как видите, наш образ взят из репозитория docker.io.
Затем отредактируйте файл конфигурации Podman и включите локальный реестр в [registries.insecure], поскольку мы не будем использовать какие-либо сертификаты. Убедитесь, что вы добавили IP или имя хоста сервера, чтобы другие узлы в вашем кластере могли связаться с ним. Реестр прослушивает порт 32000, который мы уже открыли в брандмауэре на шаге 2.
$ sudo vim /etc/containers/registries.conf
[registries.insecure]
registries = ['172.26.16.92', '127.0.0.1']
Как видно из приведенной выше команды Podman images, наш образ взят из репозитория docker.io, как уже упоминалось. Давайте пометим его и настроим так, чтобы он соответствовал нашему локальному реестру и сохранялся в нем.
$ podman tag 84c5f6e03bf0 172.26.16.92:32000/custom-redis:geeksregistry
$ podman push 172.26.16.92:32000/custom-redis:geeksregistry
Getting image source signatures
Copying blob ea96cbf71ac4 done
Copying blob 2e9c060aef92 done
Copying blob 7fb1fa4d4022 done
Copying blob 07cab4339852 done
Copying blob 47d8fadc6714 done
Copying blob 45b5e221b672 done
Copying config 84c5f6e03b done
Writing manifest to image destination
Storing signatures
Снова запустите команду podman images, чтобы подтвердить изменения.
$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
172.26.16.92:32000/custom-redis geeksregistry 84c5f6e03bf0 5 days ago 108 MB
docker.io/library/redis latest 84c5f6e03bf0 5 days ago 108 MB
Войдите в узел Worker и вытащите изображение
Теперь мы готовы извлечь образ из локального реестра, который мы только что включили. Войдите в свой рабочий узел или любой узел с установленным podman и попробуйте получить изображение с главного сервера. Если у вас не установлен podman, просто введите команду ниже.
node-01 ~ $ sudo dnf install -y podman
На рабочем узле снова или на любом сервере вы захотите получить изображения, отредактировать файл конфигурации podman и включить локальный реестр в [registries.insecure], поскольку мы не будем использовать какие-либо сертификаты.
$ sudo vim /etc/containers/registries.conf
[registries.insecure]
registries = ['172.26.16.92', '127.0.0.1']
После того, как все будет хорошо сделано, давайте теперь попробуем вытащить образ из реестра MicroK8S.
node-01 ~ $ podman pull 172.26.16.92:32000/custom-redis:geeksregistry
Trying to pull 172.26.16.92:32000/custom-redis:geeksregistry...
Getting image source signatures
Copying blob 08c34a4060bc done
Copying blob 50fae304733d done
Copying blob 8de9fbb8976d done
Copying blob 72c3268a4367 done
Copying blob edbd7b7fe272 done
Copying blob b6c3777aabad done
Copying config 84c5f6e03b done
Writing manifest to image destination
Storing signatures
84c5f6e03bf04e139705ceb2612ae274aad94f8dcf8cc630fbf6d91975f2e1c9
Проверить детали изображения
$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
172.26.16.92:32000/custom-redis geeksregistry 84c5f6e03bf0 5 days ago 108 MB
И теперь у нас есть хорошо работающий реестр !! Далее мы настроим ведение журнала и мониторинг на нашем кластере MicroK8s.
Шаг 8. Включите ведение журнала с помощью FluentD, Elasticsearch и Kibana
MicroK8s поставляется с пакетом под названием fluentd, который автоматически развертывает FluentD, Elasticsearch и Kibana (EFK) !!. Это позволяет довольно легко включить ведение журнала в вашем кластере с помощью доступных инструментов (EFK), что делает его еще более приятным.
Чтобы EFK запускался без ошибок, вам потребуется как минимум 8 ГБ памяти и 4 виртуальных ЦП. Если вы ограничены в памяти, вы можете отредактировать его Stateful Set, как будет показано после того, как мы включим fluentd.
Включите fluentd следующим образом:
$ microk8s enable fluentd
Enabling Fluentd-Elasticsearch
Labeling nodes
node/master labeled
Addon dns is already enabled.
Adding argument --allow-privileged to nodes.
service/elasticsearch-logging created
serviceaccount/elasticsearch-logging created
clusterrole.rbac.authorization.k8s.io/elasticsearch-logging created
clusterrolebinding.rbac.authorization.k8s.io/elasticsearch-logging created
statefulset.apps/elasticsearch-logging created
configmap/fluentd-es-config-v0.2.0 created
serviceaccount/fluentd-es created
clusterrole.rbac.authorization.k8s.io/fluentd-es created
clusterrolebinding.rbac.authorization.k8s.io/fluentd-es created
daemonset.apps/fluentd-es-v3.0.2 created
deployment.apps/kibana-logging created
service/kibana-logging created
Fluentd-Elasticsearch is enabled
В случае , если вы видите elasticsearch-каротаж 0 в ожидании и его статус не меняется и fluentd вместе с kibana нометрии находятся в CrashLoopBackOff состоянии, логин к приборной панели и нажмите на elasticsearch-каротаж 0 стручка так , чтобы мы могли видеть его события. Если вы видите « Доступно 0/1 узлов: 1 Недостаточно памяти. microk8s ”, затем перейдите к редактированию набора с отслеживанием состояния, как показано ниже.
$ microk8s kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system kubernetes-dashboard-7ffd448895-ht2j2 1/1 Running 2 24h
kube-system dashboard-metrics-scraper-6c4568dc68-p7q6t 1/1 Running 2 24h
kube-system metrics-server-8bbfb4bdb-mgddj 1/1 Running 2 24h
kube-system coredns-86f78bb79c-58sbs 1/1 Running 2 24h
kube-system calico-node-zv994 1/1 Running 2 24h
kube-system hostpath-provisioner-5c65fbdb4f-llsnl 1/1 Running 0 156m
container-registry registry-9b57d9df8-6djrn 1/1 Running 0 107m
kube-system calico-kube-controllers-847c8c99d-j84p5 1/1 Running 2 24h
kube-system elasticsearch-logging-0 0/1 Pending 0 4m57s <==
kube-system kibana-logging-7cf6dc4687-bvk46 0/1 ContainerCreating 0 4m57s
kube-system fluentd-es-v3.0.2-lj7m8 0/1 Running 1 4m57s
После редактирования удалите модуль elasticsearch-logging-0, чтобы он был воссоздан с новыми изменениями конфигурации. Дайте MicroK8s время, чтобы вытащить и развернуть модуль. Позже все должно работать следующим образом. Обратите внимание: если у вас достаточно памяти и ЦП, вы вряд ли столкнетесь с этими ошибками, потому что модуль elasticsearch по умолчанию запрашивает память объемом 3 ГБ.
microk8s kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system metrics-server-8bbfb4bdb-mgddj 1/1 Running 3 40h
kube-system dashboard-metrics-scraper-6c4568dc68-p7q6t 1/1 Running 3 40h
kube-system kubernetes-dashboard-7ffd448895-ht2j2 1/1 Running 3 40h
kube-system hostpath-provisioner-5c65fbdb4f-llsnl 1/1 Running 1 18h
kube-system coredns-86f78bb79c-58sbs 1/1 Running 3 40h
container-registry registry-9b57d9df8-6djrn 1/1 Running 1 18h
kube-system calico-kube-controllers-847c8c99d-j84p5 1/1 Running 3 41h
kube-system calico-node-zv994 1/1 Running 3 40h
kube-system elasticsearch-logging-0 1/1 Running 0 20m <==
kube-system fluentd-es-v3.0.2-j4hxt 1/1 Running 10 25m <==
kube-system kibana-logging-7cf6dc4687-mpsx2 1/1 Running 10 25m <==
Доступ к Kibana
После того, как модули будут работать элегантно, мы захотим получить доступ к интерфейсу Kibana, чтобы настроить наши индексы и начать анализ наших журналов. Для этого давайте познакомимся с деталями kibana, fluentd и elasticsearch. Выполните команду cluster-info следующим образом:
$ microk8s kubectl cluster-info
Kubernetes master is running at https://127.0.0.1:16443
CoreDNS is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
Elasticsearch is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy
Kibana is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/kibana-logging/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
Хотя оснастка MicroK8s будет иметь IP-адрес в вашей локальной сети (IP-адрес кластера службы регистрации кибаны), вы также можете связаться с Kibana, перенаправив его порт на свободный порт на вашем хосте следующим образом:
$ microk8s kubectl port-forward -n kube-system service/kibana-logging --address 0.0.0.0 8080:5601
Вы можете проверить службы в пространстве имен, где мы развернули EFK, выполнив команду ниже. Вы увидите, что служба « kibana-logging » прослушивает внутренний порт 5601, который мы перенаправили на свободный порт на сервере.
kubectl get services -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.152.183.10 <none> 53/UDP,53/TCP,9153/TCP 42h
metrics-server ClusterIP 10.152.183.8 <none> 443/TCP 42h
kubernetes-dashboard ClusterIP 10.152.183.88 <none> 443/TCP 42h
dashboard-metrics-scraper ClusterIP 10.152.183.239 <none> 8000/TCP 42h
elasticsearch-logging ClusterIP 10.152.183.64 <none> 9200/TCP 48m
kibana-logging ClusterIP 10.152.183.44 <none> 5601/TCP 48m <==
Наша Kibana теперь прослушивает порт 8080. Разрешите этот порт на брандмауэре, если он у вас запущен на вашем сервере, как показано ниже:
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
После успешного завершения откройте браузер и получите доступ к интерфейсу Kibana, указав его на следующий URL-адрес http: // [IP или FQDN]: 8080 . Вы должны увидеть интерфейс, как показано ниже.
Нажмите « Исследуй самостоятельно ».
Создайте « Шаблон индекса ». Logstash должен отображаться по умолчанию из-за fluentd. Выберите его и создайте следующим образом
Выберите @timestamp в фильтре времени, затем нажмите « Создать шаблон индекса ».
После создания шаблона индекса щелкните значок « Обнаружить », и вы должны увидеть совпадения, как показано ниже.
Шаг 9. Включите Prometheus
MicroK8s поставляется со встроенным « модулем » Prometheus, который нужно просто включить. Модуль распаковывает Прометей вместе с удивительной Графаной. Нет ничего лучше этого !! Включите его, так как другие были включены следующим образом:
$ microk8s enable prometheus
Затем проверьте, развертываются ли они
E READY STATUS RESTARTS AGE
kube-system metrics-server-8bbfb4bdb-mgddj 1/1 Running 4 42h
kube-system dashboard-metrics-scraper-6c4568dc68-p7q6t 1/1 Running 4 42h
kube-system kubernetes-dashboard-7ffd448895-ht2j2 1/1 Running 4 42h
kube-system hostpath-provisioner-5c65fbdb4f-llsnl 1/1 Running 2 20h
container-registry registry-9b57d9df8-6djrn 1/1 Running 2 19h
kube-system elasticsearch-logging-0 1/1 Running 0 39m
kube-system kibana-logging-7cf6dc4687-6b48m 1/1 Running 0 38m
kube-system calico-node-zv994 1/1 Running 4 42h
kube-system calico-kube-controllers-847c8c99d-j84p5 1/1 Running 4 42h
kube-system fluentd-es-v3.0.2-pkcjh 1/1 Running 0 38m
kube-system coredns-86f78bb79c-58sbs 1/1 Running 4 42h
monitoring kube-state-metrics-66b65b78bc-txzpm 0/3 ContainerCreating 0 2m45s <==
monitoring node-exporter-dq4hv 0/2 ContainerCreating 0 2m45s <==
monitoring prometheus-adapter-557648f58c-bgtkw 0/1 ContainerCreating 0 2m44s <==
monitoring prometheus-operator-5b7946f4d6-bdgqs 0/2 ContainerCreating 0 2m51s <==
monitoring grafana-7c9bc466d8-g4vss 1/1 Running 0 2m45s <==
Доступ к веб-интерфейсу Prometheus
Подобно тому, как мы обращались к предыдущим веб-интерфейсам, мы собираемся перенаправить внутренний порт модуля на свободный на сервере. Как мы подтвердили в предыдущей команде, Prometheus развертывается в пространстве имен, называемом « мониторинг ». Мы можем получить все службы в этом пространстве имен, как показано ниже:
$ microk8s kubectl get services -n monitoring
kubectl get services -n monitoring
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
prometheus-operator ClusterIP None <none> 8443/TCP 7m41s
alertmanager-main ClusterIP 10.152.183.34 <none> 9093/TCP 7m36s
grafana ClusterIP 10.152.183.35 <none> 3000/TCP 7m35s
kube-state-metrics ClusterIP None <none> 8443/TCP,9443/TCP 7m35s
node-exporter ClusterIP None <none> 9100/TCP 7m35s
prometheus-adapter ClusterIP 10.152.183.22 <none> 443/TCP 7m34s
prometheus-k8s ClusterIP 10.152.183.27 <none> 9090/TCP 7m33s
alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 4m
prometheus-operated ClusterIP None <none> 9090/TCP 3m59s
Давайте перенесем Prometheus вперед и получим доступ к нему из браузера.
$ microk8s kubectl port-forward -n monitoring service/prometheus-k8s --address 0.0.0.0 9090:9090
Forwarding from 0.0.0.0:9090 -> 9090
Затем укажите в браузере IP-адрес или полное доменное имя вашего сервера на порту 9090, то есть http: [IP или FQDN]: 9090 . Как обычно, если на вашем компьютере с CentOS 8 запущен брандмауэр, разрешите это. Поскольку мы будем перенаправлять Grafana и на порт 3000, добавьте и этот порт.
sudo firewall-cmd --add-port={9090,3000}/tcp --permanent
sudo firewall-cmd --reload
Доступ к веб-интерфейсу Grafana
Аналогичным образом перенесите Grafana на порт 3000, как мы делали это ранее.
$ microk8s kubectl port-forward -n monitoring service/grafana --address 0.0.0.0 3000:3000
Forwarding from 0.0.0.0:3000 -> 3000
Затем укажите в браузере IP-адрес или полное доменное имя вашего сервера на порту 3000, то есть http: [IP или FQDN]: 3000. И вы должны увидеть красивую панель управления Grafana, как показано ниже. Имя пользователя и пароль по умолчанию — « admin » и « admin ». Вам будет предложено немедленно его изменить. Введите свой новый пароль, затем отправьте, и вам будет разрешено войти.
Введите новые учетные данные
И вам должно быть позволено
Дополнительную информацию о MicroK8s можно найти на этом официальном веб-сайте MicroK8S .
Заключение
Путешествие по установке было долгим и сопряжено с некоторыми трудностями, но мы успешно развернули MicroK8 вместе с ведением журнала, мониторингом, панелью управления и всем остальным, с которыми мы столкнулись. Мы надеемся, что руководство было полезным, и в случае обнаружения каких-либо ошибок, пожалуйста, сообщите нам об этом. Мы по-прежнему гордимся вашей безжалостной поддержкой и высоко ценим ее. Приветствую всех людей, которые неустанно трудятся над созданием инструментов, используемых разработчиками и инженерами по всему миру.