☁️ Что такое гипервизор? В чем разница между типами 1 и 2?
Системные требования
Ниже приведены спецификации, необходимые для работы Microshift.
- Рекомендуемая операционная система: RHEL 8, CentOS Stream или Fedora 34+
- Архитектура: 64-битная архитектура процессора (amd64/x86_64, arm64 или riscv64)
- Память: 2 ГБ оперативной памяти
- Процессор: 2 ядра процессора
- Хранение: 1 ГБ свободного места для хранения данных
После выполнения всех вышеперечисленных требований действуйте, как показано ниже.
1: Установите CRI-O на свою систему
CRI-O – это движок выполнения контейнеров для Kubernetes.
Он может использоваться в качестве альтернативы Docker, Containerd и т. д.
Чтобы установить его, выполните следующие команды в вашей системе.
На RedHat
command -v subscription-manager &> /dev/null \
&& subscription-manager repos --enable rhocp-4.8-for-rhel-8-x86_64-rpms
sudo dnf install -y cri-o cri-tools conntrack
На CentOS Stream
Сначала установите репозиторий EPEL:
sudo dnf install epel-release -y
Включите репозиторий Powertools с помощью команды:
sudo dnf config-manager --enable powertools
Теперь включите репозиторий и установите Microshift:
sudo dnf module enable -y cri-o
sudo dnf install -y cri-o cri-tools conntrack
На Fedora
sudo dnf module enable -y cri-o
sudo dnf install -y cri-o cri-tools conntrack
После установки запустите и включите службу:
sudo systemctl enable crio --now
Проверьте состояние:
$ systemctl status crio
● crio.service - Container Runtime Interface for OCI (CRI-O)
Loaded: loaded (/usr/lib/systemd/system/crio.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2023-11-30 19:06:02 EAT; 4s ago
Docs: https://github.com/cri-o/cri-o
Main PID: 829600 (crio)
Tasks: 9
Memory: 41.0M
CGroup: /system.slice/crio.service
└─829600 /usr/bin/crio
.....
2: Установка и настройка MicroShift
После установки и запуска среды выполнения мы можем быстро установить и использовать Microshift.
Начнем с включения репозитория, предоставляющего пакеты:
sudo dnf copr enable -y @redhat-et/microshift
Теперь установите Microshift на RedHat, CentOS и Fedora с помощью команды:
sudo dnf install -y microshift podman
Далее нужно разрешить порты и IP-адреса через брандмауэр, если он активен.
Для этого выполните следующие команды:
sudo firewall-cmd --zone=trusted --add-source=10.42.0.0/16 --permanent
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
sudo firewall-cmd --zone=public --add-port=5353/udp --permanent
sudo firewall-cmd --reload
Загрузите pull secret OpenShift со страницы https://console.redhat.com/openshift/downloads#tool-pull-secret и сохраните его в файле ~/.pull-secret.json.
Настройте CRI-O на использование pull secret.
sudo cp ~/.pull-secret.json /etc/crio/openshift-pull-secret
Перезапустите службу MicroShift.
sudo systemctl enable --now microshift.service
Проверьте, работает ли служба:
$ systemctl status microshift
● microshift.service - MicroShift
Loaded: loaded (/usr/lib/systemd/system/microshift.service; enabled; vendor preset: disabl>
Active: active (running) since Thu 2023-11-30 19:08:18 EAT; 4s ago
Main PID: 830336 (microshift)
Tasks: 8 (limit: 98700)
Memory: 40.2M
CGroup: /system.slice/microshift.service
└─830336 /usr/bin/microshift run
Nov 30 19:08:18 microshift.itisgood.ru systemd[1]: Started MicroShift.
Более подробная информация о настройке портов и брандмауэров содержится в документации по брандмауэрам.
Вам необходимо настроить сетевой интерфейс Microshift CNI таким образом, чтобы он соответствовал интерфейсу, определенному в файле /etc/cni/net.d/100-crio-bridge.conf.
По умолчанию используется интерфейс cni0, поэтому мы заменим его командой:
sudo sed -i '/cni_default_network = "cbr0"/c\cni_default_network = "cni0"' /etc/crio/crio.conf.d/microshift.conf
В системах Fedora и CentOS могут возникнуть проблемы с падением кластера при запуске.
В этом случае необходимо доверить ключи GPG с помощью команд:
sudo podman image trust set -f /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release registry.access.redhat.com
sudo podman image trust set -f /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release registry.redhat.io
Также необходимо создать реджестри контейнеров с помощью следующих команд
sudo tee /etc/containers/registries.d/registry.access.redhat.com.yaml > /dev/null <<EOF
docker:
registry.access.redhat.com:
sigstore: https://access.redhat.com/webassets/docker/content/sigstore
EOF
sudo tee /etc/containers/registries.d/registry.redhat.io.yaml > /dev/null <<EOF
docker:
registry.redhat.io:
sigstore: https://registry.redhat.io/containers/sigstore
EOF
3. Доступ и использование MicroShift Kubernetes
Теперь, чтобы использовать установленный MicroShift, вам нужно установить клиент, либо kubectl, либо клиент OpenShift.
В нашем руководстве мы установим оба клиента с помощью команд:
curl -O https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/ocp/stable/openshift-client-linux.tar.gz
sudo tar -xf openshift-client-linux.tar.gz -C /usr/bin oc kubectl
Затем скопируйте файл Kubeconfig в стандартное местоположение, доступ к которому можно получить без привилегий администратора.
mkdir ~/.kube
sudo cat /var/lib/microshift/resources/kubeadmin/kubeconfig > ~/.kube/config
Теперь вы можете наслаждаться потрясающими возможностями MicroShift.
Через некоторое время нода будет готова, как показано далее:
$ oc get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
cent8.mylab.io Ready <none> 10m v1.21.0 65.109.12.95 <none> CentOS Stream 8 4.18.0-526.el8.x86_64 cri-o://1.21.3
Вы также можете использовать kubectl для доступа к кластеру.
Посмотрим поды:
$ oc get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system kube-flannel-ds-67lf5 1/1 Running 0 5m9s
kubevirt-hostpath-provisioner kubevirt-hostpath-provisioner-swhcd 1/1 Running 0 3m
openshift-dns dns-default-rqzsh 2/2 Running 0 5m9s
openshift-dns node-resolver-66tmz 1/1 Running 0 5m9s
openshift-ingress router-default-6c96f6bc66-fps7g 1/1 Running 0 5m10s
openshift-service-ca service-ca-7bffb6f6bf-m8xj2 1/1 Running 0 5m11s
Чтобы проверить, все ли в порядке, мы развернем простое приложение Nginx.
oc apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
EOF
Проверьте, развернуто ли приложение:
$ oc get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment-585449566-9dqsm 1/1 Running 0 32s
nginx-deployment-585449566-9rl62 1/1 Running 0 32s
Подключим службу с помощью NodePort.
$ kubectl expose deployment nginx-deployment --type=NodePort --port=80
service/nginx-deployment exposed
Получим порта службы:
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 8m55s
nginx-deployment NodePort 10.43.242.3 <none> 80:31977/TCP 6s
openshift-apiserver ClusterIP None <none> 443/TCP 8m12s
openshift-oauth-apiserver ClusterIP None <none> 443/TCP 8m12s
Затем мы можем получить доступ к службе в браузере, используя порт, на который была открыта служба (31977 в данном случае).
Заключение
На этом мы заканчиваем руководство по развертыванию легкого Openshift с помощью Microshift.
Вы увидели, как легко развернуть этот легкий Kubernetes.
Это может быть очень важно для тестирования или для пользователей, которые хотят настроить и использовать Kubernetes с минимальными усилиями.
см. также:
- ☸️ Как развернуть под Ubuntu в Kubernetes | OpenShift
- ☸️ Запуск Ceph для работы с Rook в Kubernetes / OpenShift
- ☸️ Как проверить метрики пода / контейнера в OpenShift & Kubernetes
- 📦 Как настроить локальный кластер OpenShift с CodeReady Containers
- ☸️ Настройка динамического постоянного хранения томов Kubernetes / OpenShift с помощью GlusterFS и Heketi
- 🐳 Как проверить, работает ли ваше приложение в Docker или Kubernetes
- 🐳 Как запустить Docker Контейнеры, используя Podman и Libpod