По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Linux обеспечивает детальный контроль над системными службами через systemd с помощью команды systemctl. Службы могут быть включены, выключены, перезапущены, перезагружены или даже включены или отключены при загрузке. Если вы используете Debian, CentOSили Ubuntu, ваша система, вероятно, использует systemd.
Это руководство покажет вам, как использовать основные команды для запуска, остановки и перезапуска служб в Linux.
Базовый синтаксис команды systemctl
Основной синтаксис для использования команды systemctl:
systemctl [command] [service_name]
Как правило, вам нужно запускать это как суперпользователь поэтому команды будут начинаться с sudo.
Как проверить, работает ли служба в Linux
Чтобы проверить, активна ли служба или нет, выполните следующую команду:
sudo systemctl status SERVICE_NAME
Замените SERVICE_NAME на нужный сервис.
В нашем случае мы будем брать за пример веб-сервер Apache.
Интересный факт: в Ubuntu и других дистрибутивах на основе Debian служба Apache называется apache2. В CentOS и других дистрибутивах RedHat служба Apache называется httpd или httpd.service
sudo systemctl status apache2
Так мы проверили состояние Apache. Выходные данные показывают, что служба активна (работает), как на рисунке ниже:
Как перезапустить сервис
Чтобы остановить и перезапустить службу в Linux, используйте команду:
sudo systemctl restart SERVICE_NAME
Где SERVICE_NAME - имя вашего сервиса.
После выполнения команды ваш сервис должен снова заработать. Вы можете проверить состояние с помощью команды status
Для перезапуска нашего сервера Apache используем:
sudo systemctl restart apache2
Как перезагрузить конфигурационные файлы сервиса
Чтобы служба перезагрузила свои файлы конфигурации, введите в терминале следующую команду:
sudo systemctl reload SERVICE_NAME
После перезагрузки проверьте ее состояние командой status для подтверждения.
В нашем примере мы перезагрузили Apache, используя:
sudo systemctl reload apache2
Как запустить сервис
Чтобы запустить службу в Linux вручную, введите в терминале следующее:
sudo systemctl start SERVICE_NAME
Например, команда для запуска службы Apache:
sudo systemctl start apache2
Как остановить сервис
Чтобы остановить активную службу в Linux, используйте следующую команду:
sudo systemctl stop SERVICE_NAME
Для нашего апача используем команду
sudo systemctl stop apache2
Проверьте, остановился ли сервис с помощью команды status. Вывод должен показать, что сервис неактивен - inactive (dead)
Как включить сервис при загрузке
Чтобы настроить службу для запуска при загрузке системы, используйте команду:
sudo systemctl enable SERVICE_NAME
Чтобы включить Apache при загрузке системы, выполните команду:
sudo systemctl enable apache2
Как отключить сервис при загрузке
Вы можете запретить запуск службы при загрузке с помощью команды:
sudo systemctl disable SERVICE_NAME
Например:
sudo systemctl disable apache2
Подаренный компанией Google сообществу Opensource, Kubernetes теперь стал инструментом контейнерного хранения по выбору. Он может управлять и координировать не только среду выполнения докеров, но и среду контейнерного хранения объектов и Rkt.
Типичный кластер Kubernetes обычно имеет главный узел и несколько рабочих узлов или Minions. Управление рабочими узлами осуществляется из главного узла, что обеспечивает управление кластером из центральной точки.
Важно также отметить, что можно развернуть кластер с одним узлом Kubernetes, который обычно рекомендуется использовать для легких непроизводственных рабочих нагрузок. Для этого можно взять Minikube - инструмент, который управляет кластером K ubernetes с одним узлом в виртуальной машине.
В этом руководстве мы рассмотрим многоузловую установку кластера Kubernetes в системе Linux CentOS 7. Это учебное пособие основано на командной строке и требует доступа к окну терминала.
Требования
Иметь несколько серверов под управлением Centos 7 (1 главный узел, 2 рабочих узла). Рекомендуется, чтобы главный узел содержал по крайней мере 2 ЦП, хотя это не является строгим требованием.
Подключение к Интернету на всех узлах. Мы будем извлекать пакеты Kubernetes и докеров из хранилища. Кроме того, необходимо убедиться, что диспетчер пакетов yum установлен по умолчанию и может получать пакеты удаленно.
Вам также потребуется доступ к учетной записи с правами sudo или root. В этом учебном пособии я буду использовать свою учетную запись root.
Наш 3-узловой кластер будет выглядеть примерно так:
Установка кластера Kubernetes на главном узле
Для работы Kubernetes потребуется механизм контейнеризации. Для этой установки мы будем использовать docker, так как он самый популярный.
На главном узле выполняются следующие шаги.
Шаг 1: Подготовить имя узла, брандмауэр и SELinux
На главном узле задайте имя хоста и, если у вас нет DNS-сервера, обновите файл /etc/hosts.
# hostnamectl set-hostname master-node
# cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF
Можно выполнить проверку связи с рабочим узлом 1 и рабочим узлом 2, чтобы убедиться в правильности работы обновленного файла хоста с помощью команды ping.
# ping 10.128.0.29
# ping 10.128.0.30
Затем отключите SElinux и обновите правила брандмауэра.
# setenforce 0
# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
# reboot
Установите следующие правила брандмауэра для портов. Убедитесь, что каждая команда firewall-cmd возвращает результат.
# firewall-cmd --permanent --add-port=6443/tcp
# firewall-cmd --permanent --add-port=2379-2380/tcp
# firewall-cmd --permanent --add-port=10250/tcp
# firewall-cmd --permanent --add-port=10251/tcp
# firewall-cmd --permanent --add-port=10252/tcp
# firewall-cmd --permanent --add-port=10255/tcp
# firewall-cmd –reload
# modprobe br_netfilter
# echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
Шаг 2: Настройка Kubernetes Repo
Нужно будет вручную добавить хранилище Kubernetes, так как оно не установлено по умолчанию в CentOS 7.
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
Шаг 3: Установить Kubeadm и Docker
После того, как пакет repo уже готов, вы можете продолжить и установить kubeadm и docker пакеты.
# yum install kubeadm docker -y
После успешного завершения установки включите и запустите обе службы.
# systemctl enable kubelet
# systemctl start kubelet
# systemctl enable docker
# systemctl start docker
Шаг 4: Установка Kubernetes Master и настройка пользователя по умолчанию
Теперь мы готовы инициализировать Kubernetes Master, но до этого нужно отключить swap, чтобы запустить команду kubeadm init.
# swapoff –a
Инициализация Kubernetes master - это полностью автоматизированный процесс, управляемый командой kubeadm init, которую необходимо выполнить.
# kubeadm init
Инициализация Kubernetes master
Возможно, потребуется скопировать последнюю строку и сохранить ее в другом месте, поскольку нужно будет запустить ее на рабочих узлах.
kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5 --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41
Совет: Иногда эта команда может жаловаться на переданные аргументы (args), поэтому отредактируйте ее, чтобы избежать ошибок. Таким образом, вы удалите символ , сопровождающий --token, и ваша последняя команда будет выглядеть следующим образом.
kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5 --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41
После успешной инициализации Kubernetes необходимо разрешить пользователю начать использование кластера. В нашем случае мы хотим запустить эту установку от имени пользователя root, поэтому мы продолжим выполнение этих команд с этого же имени. Вы можете перейти на пользователя с поддержкой sudo, который вы предпочитаете, и запустить ниже с помощью sudo.
Чтобы использовать root, выполните следующие действия:
# mkdir -p $HOME/.kube
# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# chown $(id -u):$(id -g) $HOME/.kube/config
Чтобы быть пользователем с поддержкой sudo, выполните следующие действия:
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
Теперь проверьте, активирована ли команда kubectl.
# kubectl get nodes
На этом этапе также можно заметить, что главный узел имеет статус NotReady. Это связано с тем, что сеть модулей еще не развернута в кластере.
Pod Network - это сеть наложения для кластера, которая развернута поверх текущей сети узла. Она предназначена для обеспечения возможности подключения через модуль.
Шаг 5: Настройка сети модуля
Применение сетевого кластера является очень гибким процессом в зависимости от потребностей пользователя и наличия множества доступных вариантов. Так как мы хотим сохранить нашу установку как можно проще, мы будем использовать плагин Weavenet, который не требует никакой конфигурации или дополнительного кода, и он предоставляет один IP-адрес на модуль, что отлично для нас. Для просмотра дополнительных параметров проверьте здесь.
Эти команды будут важны для настройки сети модуля.
# export kubever=$(kubectl version | base64 | tr -d '
')
# kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"
Теперь, если вы проверите статус главного узла, он должен показать "Ready"
# kubectl get nodes
Далее мы добавим рабочие узлы в кластер.
Настройка рабочих узлов для присоединения к кластеру Kubernetes
Следующие шаги будут выполнены на рабочих узлах. Эти шаги должны выполняться на каждом рабочем узле при присоединении к кластеру Kubernetes.
Шаг 1: Подготовить имя узла, брандмауэр и SELinux
На рабочем узле-1 и рабочем узле-2 задайте имя, а если у вас нет DNS-сервера, то обновите основные и рабочие узлы в файле /etc/hosts.
# hostnamectl set-hostname 'node-1'
# cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF
Можно выполнить ping master-node для проверки правильности обновленного файла хоста.
Затем отключите SElinux и обновите правила брандмауэра.
# setenforce 0
# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
Установите следующие правила брандмауэра для портов. Убедитесь, что все команды firewall-cmd возвращаются успешно.
# firewall-cmd --permanent --add-port=6783/tcp
# firewall-cmd --permanent --add-port=10250/tcp
# firewall-cmd --permanent --add-port=10255/tcp
# firewall-cmd --permanent --add-port=30000-32767/tcp
# firewall-cmd --reload
# echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
Шаг 2: Настройка Kubernetes Repo
Вам потребуется добавить хранилище Kubernetes вручную, так как оно не будет предварительно установлено на CentOS 7.
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
Шаг 3: Установить Kubeadm и Docker
После того, как пакет repo уже готов, вы можете продолжить и установить kubeadm и docker пакеты.
# yum install kubeadm docker -y
Запустите и включите обе службы.
# systemctl enable docker
# systemctl start docker
# systemctl enable kubelet
# systemctl start kubelet
Шаг 4: Присоединение рабочего узла к кластеру Кубернетов
Теперь для присоединения к кластеру требуется маркер, созданный kubeadm init. Его можно скопировать и вставить в узлы 1 и 2, если он был скопирован в другом месте.
# kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5 --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41
Как показано в последней строке, вернитесь к главному узлу и проверьте, присоединились ли рабочие узлы 1 и 2 к кластеру с помощью следующей команды.
# kubectl get nodes
Если все шаги выполнены успешно, на главном узле должны быть показаны узлы 1 и 2 в состоянии готовности.
На этом этапе мы успешно завершили установку кластера Kubernetes на Centos 7 и успешно взяли два рабочих узла. Теперь можно начинать создавать модули и разворачивать службы.
Пользователи очень часто встречаются с ошибкой 32788 в среде виртуализации Hyper-V. Если быть точным, то полная формулировка ошибки следующая:
The application encountered an error while attempting to change the state of %имя_виртуальной_машины%.%имя_виртуальной_машины% failed to change state. The operation cannot be performed while the object is in use with error code 32788
Выглядит это «неприятное» popup окно примерно вот так:
Ошибка появляется, когда пользователь пытается запустить виртуальную машину. Итак, погнали разбираться. Данный гайд подойдет для Hyper-V версий 2012 R2 и 2016.
Краткая матчасть
Ошибка возникает, из за того, что виртуализация это несколько более сложная штука, чем просто создание виртуальных вычислительных машин поверх физического устройства. Внутри каждой есть операционные системы, сетевые адаптеры, виртуальные коммутаторы, устройства для хранения, интерфейсы взаимодействия и другие.
Сам интерфейс Hyper-V – это лишь консоль управления. Устаревшая и неактуальная конфигурация виртуальных машин приводит к возникновению ошибок. В том числе, и ошибке 32788.
Основные причины ошибки 32788
Самые главные причины ошибки 32788, которые мы воспроизводили на опыте:
Конфликт (неточность/неактуальность) конфигурации виртуальной машины;
Изменения виртуального коммутатора (VM switch) на машине;
Исправляем ошибку 32788
Итак, чтобы исправить ошибку, нужно:
Открыть Settings (настройки) виртуальной машины. В списке виртуальных машин, нажмите правой кнопкой мыши на нужную виртуальную машину и выберите Settings;
Откройте настройки сетевого адаптера (Network Adapter Settings). А так же пробегитесь по всем пунктам меню слева (Memory, Processor, IDE Controller и так далее), на предмет обнаружения уведомления с надписью Configuration Error. В нашем примере, виртуальная машина столкнулась с проблемой того, что виртуальный коммутатор (Vswitch), к которому она подключена, более не существует (The network adapter is configured to a switch which no longer exists…)
Вот она, причина ошибки 32788 в нашей случае – устаревшие настройки виртуального коммутатора. Возможно, его кто то удалил, или изменил его имя.
В любом случае, нам нужно исправить это. Создаем новый виртуальный коммутатор (Virtual Switch) типа Internal, для внутреннего использования:
После внесение всех изменений перезагрузите (выполните рестарт) виртуальную машину.