Как установить кластер Kubernetes Docker на CentOS 7
На этой странице
- Предпосылки
- Что будем делать?
- Шаг 1. Установка Kubernetes
- - Настройка хостов
- - Отключить SELinux
- - Включить модуль ядра br_netfilter.
- - Отключить СВОП
- - Установите Docker CE
- - Установите Kubernetes
- - Изменить драйвер cgroup
Kubernetes — это платформа с открытым исходным кодом для управления контейнерными приложениями, разработанная Google. Это позволяет вам управлять, масштабировать и автоматически развертывать контейнерные приложения в кластерной среде. С Kubernetes мы можем организовывать наши контейнеры на нескольких хостах, масштабировать контейнерные приложения со всеми ресурсами на лету и иметь централизованную среду управления контейнерами.
В этом руководстве я пошагово покажу вам, как установить и настроить Kubernetes на CentOS 7. Мы будем использовать 1 сервер k8s-master в качестве мастера узла Kubernetes и 2 сервера в качестве узлов Kubernetes, node01 и node02.
Предпосылки
- 3 сервера CentOS 7
- 10.0.15.10 k8s-master
- 10.0.15.21 node01
- 10.0.15.22 node02
Что мы будем делать?
- Установка Kubernetes
- Инициализация кластера Kubernetes
- Добавление node01 и node02 в кластер
- Тестирование – создание первого пакета
Шаг 1 — Установка Kubernetes
На этом первом шаге мы подготовим эти 3 сервера для установки Kubernetes, поэтому выполните все команды на главном сервере и узле.
Мы подготовим все серверы к установке Kubernetes, изменив существующую конфигурацию на серверах, а также установим некоторые пакеты, включая docker-ce и сам kubernetes.
- Настройка хостов
Отредактируйте файл hosts на всех серверах с помощью редактора vim.
vim /etc/hosts
Вставьте список хостов ниже.
10.0.15.10 k8s-master
10.0.15.21 node01
10.0.15.22 node02Сохранить и выйти.
- Отключить SELinux
В этом руководстве мы не будем рассказывать о настройке SELinux для Docker, поэтому отключим его.
Запустите команду ниже, чтобы отключить SELinux.
setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux- Включить модуль ядра br_netfilter
Для установки kubernetes требуется модуль br_netfilter. Включите этот модуль ядра, чтобы пакеты, проходящие через мост, обрабатывались iptables для фильтрации и переадресации портов, а модули kubernetes в кластере могли взаимодействовать друг с другом.
Запустите команду ниже, чтобы включить модуль ядра br_netfilter.
modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables- Отключить обмен
Отключите SWAP для установки kubernetes, выполнив следующие команды.
swapoff -a
Затем отредактируйте файл /etc/fstab.
vim /etc/fstab
Прокомментируйте UUID строки подкачки, как показано ниже.
- Установите Докер СЕ
Установите последнюю версию Docker-ce из репозитория docker.
Установите зависимости пакета для docker-ce.
yum install -y yum-utils device-mapper-persistent-data lvm2
Добавьте репозиторий docker в систему и установите docker-ce с помощью команды yum.
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ceДождитесь установки docker-ce.
- Установить Кубернет
Добавьте репозиторий 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Теперь установите пакеты kubernetes kubeadm, kubelet и kubectl с помощью приведенной ниже команды yum.
yum install -y kubelet kubeadm kubectl
После завершения установки перезапустите все эти серверы.
sudo reboot
Войдите снова на сервер и запустите службы, докер и кубелет.
systemctl start docker && systemctl enable docker
systemctl start kubelet && systemctl enable kubelet- Изменить cgroup-драйвер
Нам нужно убедиться, что docker-ce и kubernetes используют одну и ту же контрольную группу.
Проверьте группу docker с помощью команды docker info.
docker info | grep -i cgroup
И вы видите, что докер использует cgroupfs в качестве драйвера cgroup.
Теперь выполните приведенную ниже команду, чтобы изменить драйвер cgroup kuberetes на cgroupfs.
sed -i 's/cgroup-driver=systemd/cgroup-driver=cgroupfs/g' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
Перезагрузите систему systemd и перезапустите службу kubelet.
systemctl daemon-reload
systemctl restart kubeletТеперь все было готово для настройки кластера Kubernetes.
Шаг 2 — Инициализация кластера Kubernetes
На этом этапе мы инициализируем конфигурацию главного кластера kubernetes.
Переместите оболочку на главный сервер k8s-master и выполните приведенную ниже команду, чтобы настроить главный сервер kubernetes.
kubeadm init --apiserver-advertise-address=10.0.15.10 --pod-network-cidr=10.244.0.0/16
Примечание:
--apiserver-advertise-address=определяет, какой IP-адрес Kubernetes должен рекламировать свой сервер API.
--pod-network-cidr=укажите диапазон IP-адресов для сети pod. Использовали фланелевую виртуальную сеть. Если вы хотите использовать другую сеть pod, такую как weave-net или calico, измените диапазон IP-адресов.
Когда инициализация Kubernetes будет завершена, вы получите результат, как показано ниже.
Примечание:
Скопируйте команду kubeadm join ... ... ... в текстовый редактор. Команда будет использоваться для регистрации новых узлов в кластере kubernetes.
Теперь, чтобы использовать Kubernetes, нам нужно выполнить несколько команд, как в результате.
Создайте новый каталог конфигурации .kube и скопируйте конфигурацию admin.conf.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/configЗатем разверните сеть flannel в кластере kubernetes с помощью команды kubectl.
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Сеть Flannel была развернута в кластере Kubernetes.
Подождите минуту, а затем проверьте узел и модули kubernetes с помощью приведенных ниже команд.
kubectl get nodes
kubectl get pods --all-namespacesИ вы получите узел k8s-master, работающий как главный кластер со статусом готовности, и вы получите все модули, необходимые для кластера, включая kube-flannel-ds для настройки сетевых модулей.
Убедитесь, что статус всех модулей kube-system запущен.
Инициализация и настройка мастера кластера Kubernetes завершены.
Шаг 3 — Добавление node01 и node02 в кластер
На этом шаге мы добавим узлы node01 и node02, чтобы присоединиться к кластеру k8s.
Подключитесь к серверу node01 и запустите команду соединения kubeadm, как мы скопировали вверху.
kubeadm join 10.0.15.10:6443 --token vzau5v.vjiqyxq26lzsf28e --discovery-token-ca-cert-hash sha256:e6d046ba34ee03e7d55e1f5ac6d2de09fd6d7e6959d16782ef0778794b94c61e
Подключитесь к серверу node02 и запустите команду соединения kubeadm, как мы скопировали вверху.
kubeadm join 10.0.15.10:6443 --token vzau5v.vjiqyxq26lzsf28e --discovery-token-ca-cert-hash sha256:e6d046ba34ee03e7d55e1f5ac6d2de09fd6d7e6959d16782ef0778794b94c61e
Подождите несколько минут и вернитесь к главному серверу кластера k8s-master, чтобы проверить узлы и модули во всех пространствах имен, используя следующую команду.
kubectl get nodes
kubectl get pods --all-namespacesТеперь вы получите узел 01, а узел 02 добавлен в кластер со статусом готовности.
node01 и node02 были добавлены в кластер kubernetes.
Шаг 4. Тестирование создания первого модуля
На этом этапе мы проведем тест, развернув модуль Nginx в кластере kubernetes. Под — это группа из одного или нескольких контейнеров с общим хранилищем и сетью, работающая в Kubernetes. Pod содержит один или несколько контейнеров, например контейнер Docker.
Войдите на сервер k8s-master и создайте новое развертывание с именем nginx с помощью команды kubectl.
kubectl create deployment nginx --image=nginx
Чтобы просмотреть подробную информацию о разделении развертывания nginx, выполните следующую команду.
kubectl describe deployment nginx
И вы получите спецификацию развертывания модуля nginx.
Далее мы предоставим модуль nginx, доступный через Интернет. И для этого нам нужно создать новый сервис NodePort.
Запустите команду kubectl ниже.
kubectl create service nodeport nginx --tcp=80:80
Убедитесь, что нет ошибки. Теперь проверьте порт и IP-адрес узла службы nginx, используя приведенную ниже команду kubectl.
kubectl get pods
kubectl get svcТеперь вы получите модуль nginx, работающий под IP-адресом кластера 10.160.60.38, порт 80, и основной IP-адрес узла 10.0.15.x на порту 30691.
На сервере k8s-master выполните приведенную ниже команду curl.
curl node01:30691
curl node02:30691
Модуль Nginx теперь развернут в кластере Kubernetes и доступен через Интернет.
Теперь доступ из веб-браузера.
http://10.0.15.10:30691/
И вы получите страницу Nginx по умолчанию.
На сервере node02 — http://10.0.15.11:30691/
Установка и настройка кластера Kubernetes на CentOS 7 успешно завершена.
Ссылка
- https://kubernetes.io/docs/