Установка кластера Kubernetes 1.7 на CentOS 7
О технологиях

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

9940
9 минут

В этой статье я решил протестировать установку версии 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/DevOps
Развертываем и сопровождаем инфраструктуру для бизнес-приложений на базе микросервисов и контейнеров

Установка кластера 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 самой последней версии. Далее можно переходить к изучению новых доступных в нем фичей или этой технологии в принципе.

24 октября 2023
Контейнеры: технологии и процессы глазами разработчика

В выпуске#9 видеоподкаста «Откровенно об ИТ-инфраструктуре» поговорили о роли контейнеров в разработке. Приглашенные эксперты обсудили специфику использования Kubernetes и сокращение time-to-market в контексте контейнеризации.

В гостях Михаил Гудов, Orion soft, и Василий Колосов, Smartex.
1 минута
455
19 июня 2023
Семь трендов на рынке облачных услуг в 2023 году
До 2022 года на рынке облаков в России главенствовали мировые тренды, но сейчас наша страна пошла своим путем. О том, для чего сейчас компании используют облачные технологии и как меняется рынок, рассказал директор по развитию КРОК Облачные сервисы Сергей Зинкевич.
1 минута
1751
16 июня 2023
Рулевой в океане контейнеров
Выпуск#3 видеоподкаста «Откровенно об ИТ-инфраструктуре» посвящен Kubernetes и профессиональным платформам оркестрации контейнеров. Обсудили, как сегодня складывается ситуация на российском рынке контейнерных платформ, что востребовано и почему, особенности и перспективы работы с Kubernetes.

В гостях Александр Баталов, Генеральный директор Флант
1 минута
1201
29 марта 2023
Сетевые балансировщики нагрузки и другие обновления Облака КРОК

Мы рады вам представить новый сервис Облака КРОК для распределения трафика между экземплярами – Балансировщики нагрузки. Кроме того, мы автоматизировали обновление сертификатов Kubernetes и добавили возможность удаления рабочих узлов из кластера Kubernetes.

2 минуты
840
13 февраля 2023
Замена игрока: выбираем альтернативу зарубежному системному ПО (взгляд облачного провайдера)

На поле ИТ сегодня захватывающая интрига – выбор адекватной замены зарубежным системам, производители которых массово вышли из игры. На онлайн-митапе поделились опытом подбора, внедрения и сопровождения решений, способных заместить платформу виртуализации, почту, файловое хранилище, каталог пользователей, backup и др.

Предлагаем вашему вниманию запись и расшифровку митапа.

2 минуты
2019
scrollup