Запросить демо
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Предпочтительный способ связи
Оставить заявку
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Узнать стоимость
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Предпочтительный способ связи
Попробовать бесплатно
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Предпочтительный способ связи
Регистрация в консоли
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Предпочтительный способ связи
Быть в теме

Установка кластера Kubernetes 1.7 на CentOS 7

07.06.2018 8 минут 2442

В этой статье я решил протестировать установку версии 1.7 и поделиться с вами полученными результатами. Забегая вперед скажу, что в процессе установки Kubernetes на CentOS 7.3 в стандартном мануале по установке присутствует всего одна ошибка, которую мы с вами само собой исправим в процессе демонстрации.

Подготовка к установке

В этот раз для установки кластера Kubernetes нам понадобится сделать очень не много подготовительных шагов.


Минимальные требования к серверам кластера:

  • CentOS 7 или Ubuntu 16.04
  • Один или несколько серверов с памятью от 1 Гб RAM
  • Полная сетевая связность между всеми серверами кластера

Подготовка ОС

Для установки Kubernetes на всех серверах вам потребуется отключить SELinux:


$ sudo setenforce 0 
$ sudo sed -i --follow-symlinks 's/^SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux 

А также правильно настроенный DNS (все хосты кластера должны иметь возможность обращаться друг к другу по имени). В нашем случае будет достаточно внести следующие записи в /etc/hosts на каждом сервере:


$ sudo bash -c 'cat <> /etc/hosts 
192.168.0.4 master 
192.168.0.5 node-1 
192.168.0.6 node-2 
EOF' 

И конечно же установить для каждого сервера свой hostname. Для ноды с ролью и именем master:

$ sudo hostnamectl set-hostname master

Для вычислительных узлов node-1 и node-2 сделайте по аналогии самостоятельно. Также будет правильно настроить синхронизацию времени:

$ sudo yum -y install ntp 

$ sudo systemctl enable ntpd 

$ sudo systemctl start ntpd

Установка Docker

Далее на каждый сервер необходимо установить Docker. Делается это штатно по официальной инструкции. Не смотря на то, что команда поддержки Kubernetes не заявляет поддержку Docker 17.x, у меня все отлично заработало. На каждом сервере кластера выполните следующие команды:


$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 

$ sudo yum-config-manager \ 

--add-repo \ 

https://download.docker.com/linux/centos/docker-ce.repo 

$ sudo yum makecache fast 

$ sudo yum install docker-ce 

$ sudo systemctl start docker 

Проверить работоспособность Docker можно простой командой:

$ sudo docker ps -a

Установка Kubectl и Kubeadm

Установка утилиты kubectl (предназначена для управления вашим Kubernetes кластером) выполняется следующим образом:


$ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.7.0/bin/linux/amd64/kubectl 
$ chmod +x ./kubectl 
$ sudo mv ./kubectl /usr/local/bin/kubectl 

Удобно будет также подключить автодополнение kubectl команд в Bash:


$ echo "source > ~/.bashrc 

Установка kubeadm выполняется так же легко. Подключаем репозиторий:


$ cat < /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 

Выполняем установку:


$ sudo yum install -y kubelet kubeadm 
$ sudo systemctl enable kubelet && systemctl start kubelet 

Т.к. в процессе установки kubelet все еще присутствует ошибка, то нам необходимо дополнительно отредактировать файл /etc/systemd/system/kubelet.service.d/10-kubeadm.conf, обновив строку KUBELET_CGROUP_ARGS=--cgroup-driver=systemd на KUBELET_CGROUP_ARGS=--cgroup-driver=cgroupfs. А далее выполнить следующие команды:


$ sudo systemctl daemon-reload 

$ sudo systemctl restart kubelet 

Убедитесь, что после выполнения этой команды сервис запустился и работает:


$ sudo systemctl status kubelet 

Все, можно переходить к установке кластера.

Установка кластера Kubernetes 1.7

Далее мы установим кластер Kubernetes с виртуализацией сети flannel. Вы можете выбрать любой другой способ виртуализировать сеть в официальной документации по установке.

Как обычно, если у вас что-то пошло не так, вы можете сбросить установку и начать заново, выполнив команду:


$ sudo kubeadm reset

Прежде всего необходимо инициализировать и установить master сервер:


$ sudo kubeadm init --apiserver-advertise-address=192.168.0.4 --pod-network-cidr=10.244.0.0/16

Здесь ключ --apiserver-advertise-address=192.168.0.4 явно указывает мастеру на IP адрес, который нужно сообщать клиентам для подключения, а ключ --pod-network-cidr=10.244.0.0/16 используется для установки адресного пространства для ваших pod-ов в flannel.

Вывод команды будет примерно следующий:


[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.

[init] Using Kubernetes version: v1.7.0

[init] Using Authorization modes: [Node RBAC]

[preflight] Running pre-flight checks

[preflight] Starting the kubelet service

[certificates] Generated CA certificate and key.

[certificates] Generated API server certificate and key.

[certificates] API Server serving cert is signed for DNS names [kubeadm-master kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 10.138.0.4]

[certificates] Generated API server kubelet client certificate and key.

[certificates] Generated service account token signing key and public key.

[certificates] Generated front-proxy CA certificate and key.

[certificates] Generated front-proxy client certificate and key.

[certificates] Valid certificates and keys now exist in "/etc/kubernetes/pki"

[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"

[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"

[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/controller-manager.conf"

[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/scheduler.conf"

[apiclient] Created API client, waiting for the control plane to become ready

[apiclient] All control plane components are healthy after 16.502136 seconds

[token] Using token:

[apiconfig] Created RBAC rules

[addons] Applied essential addon: kube-proxy

[addons] Applied essential addon: kube-dns

 

Your Kubernetes master has initialized successfully!

 

To start using your cluster, you need to run (as a regular user):

 

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

 

You should now deploy a pod network to the cluster.

Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:

http://kubernetes.io/docs/admin/addons/

 

You can now join any number of machines by running the following on each node

as root:

 

kubeadm join --token :

Выполним настройку параметров подключения к кластеру, как посоветовал нам установщик:


mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

Далее установим для наших pod-ов сеть:


kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml

Все, теперь можно начать подключать к кластеру вычислительные узлы. Kubeadm уже сказал нам, как это сделать:


$ kubeadm join --token :

После выполнения этих команд, убедитесь, что вычислительные узлы подключились и доступны для размещения pod-ов:


kubectl get nodes

Поздравляю, вы только что выполнили установку кластера Kubernetes самой последней версии. Далее можно переходить к изучению новых доступных в нем фичей или этой технологии в принципе.

Сервисы упоминаемые в статье

  1. Публичное облако КРОК

Не пропустите самые важные, интересные и полезные статьи недели

Ваш e-mail успешно подписан.

Смотрите также