Использование дистрибутива Kubernetes от Amazon повсеместно с помощью Amazon EKS Distro

Использовать Kubernetes в публичном облаке очень просто. Особенно при использовании управляемых сервисов, таких как Amazon Elastic Kubernetes Service (Amazon EKS). EKS — один из самых популярных дистрибутивов Kubernetes. При использовании EKS нет необходимости администрировать узлы уровня экспертизы, узлы etcd или другие компоненты уровня экспертизы. Такая простота позволяет вам сосредоточиться на вашем приложении. Но в реальных сценариях иногда необходимо запускать кластеры Kubernetes в локальных средах. Возможно, из-за ограничений, связанных с регулированием, требований к соответствию или вам нужна наименьшая задержка при доступе к вашим кластерам или приложениям.

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

В декабре 2020 года AWS объявила о распространении EKS. EKS Distro — это дистрибутив Kubernetes, построенный и работающий на базе Amazon EKS managed, позволяющий развертывать безопасные и надежные кластеры Kubernetes в любой среде. EKS Distro позволяет использовать те же инструменты, версии и зависимости Kubernetes, что и EKS. Вам также не нужно беспокоиться о патчах безопасности для дистрибутива, поскольку с каждым выпуском дистрибутива EKS вы также получаете последние патчи, а дистрибутив EKS следует тому же процессу EKS для проверки версий Kubernetes. Это означает, что вы всегда используете надежные и проверенные дистрибутивы Kubernetes в своей среде.

EKS Distro — это проект с открытым исходным кодом на GitHub. Вы можете ознакомиться с репозиторием по этой ссылке. https://github.com/aws/eks-distro/.

Вы можете установить EKS Distro на металлические серверы или виртуальные машины в вашем дата-центре или даже в среде других публичных облачных провайдеров. В отличие от EKS, при использовании EKS Distro вам придется самостоятельно управлять всеми узлами уровня управления, узлами и т.д. и компонентами уровня управления. Это сопряжено с некоторым дополнительным операционным бременем, но является огромным преимуществом, если вам не нужно думать о безопасности или надежности вашего развертывания Kubernetes.

Как видно из скриншота выше, каждый вариант развертывания EKS имеет свои особенности. В правой колонке представлены опции и возможности EKS Distro. Как я уже говорил ранее, при использовании EKS Distro вам необходимо иметь собственную инфраструктуру и управлять плоскостью управления. Также вы можете использовать различные сторонние CNI Plugins в соответствии с вашими потребностями. Самое большое отличие в том, что в отличие от EKS Anywhere, для EKS Distro нет предложений корпоративной поддержки от AWS.

Проект находится на GitHub и поддерживается сообществом. Если у вас возникли проблемы или вы хотите внести свой вклад в проект, вы можете подать проблему или найти решения из предыдущих проблем в репозитории.

Давайте посмотрим на EKS Distro в действии!

При установке EKS Distro вы можете выбрать варианты установки партнера по запуску или использовать знакомые варианты сообщества, такие как kubeadm или kops.

В этой статье я продемонстрирую установку EKS Distro с помощью kubeadm.

Прежде всего, для установки с помощью kubeadm вам понадобится Linux-система на базе RPM. Я использую систему CentOS для этой демонстрации.

Я установил Docker версии 19.03, отключил своп и отключил SELinux на машине.

Я установлю на машину kubelet, kubectl и kubeadm с помощью команд, приведенных ниже. В этой демонстрации я установлю Kubernetes версии 1.19.

sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

cd /usr/bin

sudo wget https://distro.eks.amazonaws.com/kubernetes-1-19/releases/4/artifacts/kubernetes/v1.19.8/bin/linux/amd64/kubelet; 
sudo wget https://distro.eks.amazonaws.com/kubernetes-1-19/releases/4/artifacts/kubernetes/v1.19.8/bin/linux/amd64/kubeadm; 
sudo wget https://distro.eks.amazonaws.com/kubernetes-1-19/releases/4/artifacts/kubernetes/v1.19.8/bin/linux/amd64/kubectl

sudo chmod +x kubeadm kubectl kubelet

sudo systemctl enable kubelet
Вход в полноэкранный режим Выйти из полноэкранного режима

После включения службы kubelet я добавляю некоторые аргументы для kubeadm.

sudo mkdir /var/lib/kubelet

sudo vi /var/lib/kubelet/kubeadm-flags.env

KUBELET_KUBEADM_ARGS="--cgroup-driver=systemd —network-plugin=cni —pod-infra-container-image=public.ecr.aws/eks-distro/kubernetes/pause:3.2"
Войти в полноэкранный режим Выход из полноэкранного режима

Я извлеку необходимые образы контейнеров EKS Distro и промаркирую их соответствующим образом.

sudo docker pull public.ecr.aws/eks-distro/kubernetes/pause:v1.19.8-eks-1-19-4;
sudo docker pull public.ecr.aws/eks-distro/coredns/coredns:v1.8.0-eks-1-19-4;
sudo docker pull public.ecr.aws/eks-distro/etcd-io/etcd:v3.4.14-eks-1-19-4;
sudo docker tag public.ecr.aws/eks-distro/kubernetes/pause:v1.19.8-eks-1-19-4 public.ecr.aws/eks-distro/kubernetes/pause:3.2;
sudo docker tag public.ecr.aws/eks-distro/coredns/coredns:v1.8.0-eks-1-19-4 public.ecr.aws/eks-distro/kubernetes/coredns:1.7.0;
sudo docker tag public.ecr.aws/eks-distro/etcd-io/etcd:v3.4.14-eks-1-19-4 public.ecr.aws/eks-distro/kubernetes/etcd:3.4.13-0
Войти в полноэкранный режим Выход из полноэкранного режима

Я также добавлю некоторые другие конфигурации.

sudo vi /etc/modules-load.d/k8s.conf

br_netfilter

sudo vi /etc/sysctl.d/99-k8s.conf

net.bridge.bridge-nf-call-iptables = 1
Вход в полноэкранный режим Выход из полноэкранного режима

Теперь давайте инициализируем кластер!

sudo kubeadm init --image-repository public.ecr.aws/eks-distro/kubernetes --kubernetes-version v1.19.8-eks-1-19-4
Войти в полноэкранный режим Выход из полноэкранного режима

Этот вывод в основном совпадает с обычным выводом команды kubeadm init. Как видно из скриншота, в выводе есть команда kubeadm join для рабочих узлов или конфигурация для доступа к кластеру с помощью файла kubeconfig. Кстати, позвольте мне сделать это и получить доступ к моему кластеру Kubernetes, установленному в EKS Distro.

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 get nodes и посмотрим результат.

Как вы можете видеть, я могу подключиться к кластеру и увидеть вывод команды kubectl get nodes, но узел находится в статусе NotReady. Причина в том, что мне нужно добавить аддон Pod Network и установить CNI Plugin на кластер. Для этой демонстрации я буду использовать Calico CNI.

sudo curl https://docs.projectcalico.org/manifests/calico.yaml -O
kubectl apply -f calico.yaml
Вход в полноэкранный режим Выход из полноэкранного режима

После установки Calico CNI мой главный узел теперь находится в состоянии Ready.


Я настроил рабочие узлы с теми же предварительными условиями, такими как установка Docker и отключение подкачки. С помощью этих команд я также извлеку и пометю необходимый образ контейнера для кластера Kubernetes.

sudo docker pull public.ecr.aws/eks-distro/kubernetes/pause:v1.19.8-eks-1-19-4;
sudo docker tag public.ecr.aws/eks-distro/kubernetes/pause:v1.19.8-eks-1-19-4
Войти в полноэкранный режим Выход из полноэкранного режима

Теперь я могу перейти к добавлению рабочего узла в кластер. Я буду использовать команду kubeadm join из вывода команды kubeadm init.

Когда я выполняю команду kubectl get nodes, я вижу, что другой узел находится в состоянии Ready.

Как вы можете видеть, мой рабочий узел теперь присоединился к кластеру, и я могу видеть стручки в пространстве имен kube-system.

Мой кластер Kubernetes установлен в EKS Distro и готов к развертыванию рабочих нагрузок приложений!

Заключение

Наличие протестированного, проверенного и надежного дистрибутива Kubernetes для производственных рабочих нагрузок крайне важно. Именно поэтому EKS является одним из самых используемых и популярных дистрибутивов Kubernetes. Возможность запускать тот же дистрибутив, который Amazon использует с управляемым сервисом EKS, на любой инфраструктуре и платформе — это огромное преимущество.

Если у вас есть какие-то требования к соответствию или ограничения, и вы не можете использовать публичные облачные платформы, вы можете попробовать EKS Distro.

Оцените статью
devanswers.ru
Добавить комментарий