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

Как установить кластер Kubernetes Docker на CentOS 7


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

  1. Предпосылки
  2. Что будем делать?
  3. Шаг 1. Установка Kubernetes
    1. - Настройка хостов
    2. - Отключить SELinux
    3. - Включить модуль ядра br_netfilter.
    4. - Отключить СВОП
    5. - Установите Docker CE
    6. - Установите Kubernetes
    7. - Изменить драйвер 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

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

      1. Установка Kubernetes
      2. Инициализация кластера Kubernetes
      3. Добавление node01 и node02 в кластер
      4. Тестирование – создание первого пакета

      Шаг 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/