По сценарию Кента Хуана
Короче говоря: в этой статье мы познакомим вас с несколькими способами установки приложений в системе Kubernetes.
Kubernetes (K8s) стал одним из наиболее организованных проектов с открытым исходным кодом для ИТ-индустрии за последние несколько лет. Тонны приложений были созданы или перемещены в экосистему Kubernetes. Однако Kubernetes также становится кошмаром для тех, кто отвечает за управление и эксплуатацию системы. Обычно мы слышим, как люди говорят, что Kubernetes - это так сложно. Когда я начал использовать систему Kubernetes, я почувствовал, что это не так сложно, но суперсложно. Вместо современных систем Linux в системах Linux есть официальные инструменты управления пакетами, такие как apt или yum. У Kubernetes не было стандартного инструмента управления пакетами. Есть много способов установить приложение в системе Kubernetes. В этой статье мы познакомим вас с несколькими способами установки приложений в системе Kubernetes.
Применить Yaml от Kubectl
Прежде чем говорить об инструментах управления пакетами Kubernetes, мы должны изучить концепцию запуска приложения в кластере Kubernetes. Kube-apiserver будет контролировать все ресурсы Kubernetes. (Например, создание, обновление, удаление и т. Д.) Самый простой способ получить доступ к kube-apiserver - использовать инструмент командной строки «kubectl». Например, если мы хотим создать службу развертывания Nginx в кластере Kubernetes, следующее содержимое конфигурации можно использовать для применения с помощью «kubectl».
# nginx-deployment.yaml --- apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 kubectl apply -f nginx-deployment.yaml
Довольно простой и элегантный способ установки приложений. Однако конфигурация станет более сложной, когда приложения станут больше. Некоторые проекты будут пытаться реализовать установщик самостоятельно и напрямую общаться с Kubernetes. (Пример: kfctl
от Kubeflow) Или мы можем использовать некоторые вспомогательные инструменты.
Kustomize
Kustomize - это инструмент командной строки без шаблонов для управления конфигурацией в Kubernetes. Начиная с Kubernetes v1.14, Kustomize стал встроенной функцией в kubectl. Kustomize может помочь вам легко применить различные версии файлов конфигурации в кластере Kubernetes. Для различных сред или настройки значений Kustomize может помочь исправить с помощью одной команды.
Основной файл конфигурации Kustomize - kustomization.yaml
. Программа kustomize прочитает файлы, объявленные в kustomization.yaml
, и применит их к кластеру Kubernetes. Следующая команда является примером, показывающим, как использовать Kustomize deploy nginx-ingress в разных средах.
git clone https://github.com/kubernetes/ingress-nginx.git # Deploy to bare-metal Kubernetes cluster kubectl apply -k ingress-nginx/deploy/static/provider/bare-metal # Or deploy to Kubernetes cluster on the cloud kubectl apply -k ingress-nginx/deploy/static/provider/cloud
Шлем
Вместо Kustomize - это инструмент управления конфигурацией, Helm больше похож на инструмент управления пакетами для Kubernetes. Мы можем использовать Helm для установки приложений в Kubernetes без получения какой-либо конфигурации. Нам нужно только добавить общедоступный репозиторий Helm Charts приложений, после чего мы сможем установить приложение напрямую.
helm repo add nginx-stable https://helm.nginx.com/stable helm repo update helm install my-release nginx-stable/nginx-ingress
«Диаграммы» - это формат упаковки, используемый Helm. Диаграмма - это набор файлов, описывающих связанный набор ресурсов Kubernetes. Просто нравятся файлы конфигурации YAML, которые мы вручную применили с помощью kubectl. Кроме того, диаграмма рулевого управления представляет собой набор файлов конфигурации и генератор конфигурации на основе шаблона в диаграмме. Разработчик может использовать программируемый способ реализации рулевой диаграммы.
Когда пользователи устанавливают диаграмму управления, Helm может сгенерировать соответствующие файлы конфигурации на основе параметров установки, указанных при установке.
Установите PrimeHub от Helm Chart
PrimeHub - это платформа машинного обучения, которая позволяет командам AI / ML сосредоточиться на своей реальной производительности в среде совместной работы. Все программные стеки PrimeHub основаны на Kubernetes. PrimeHub также предоставляет простой способ использовать общедоступную диаграмму управления для установки.
PRIMEHUB_DOMAIN=1.2.3.4.nip.io # Use your domain name cat <<EOF > primehub-values.yaml primehub: domain: ${PRIMEHUB_DOMAIN} ingress: annotations: kubernetes.io/ingress.allow-http: "true" nginx.ingress.kubernetes.io/ssl-redirect: "false" hosts: - ${PRIMEHUB_DOMAIN} EOF helm repo add infuseai https://charts.infuseai.io helm repo update helm install primehub infuseai/primehub \ --create-namespace \ --namespace hub \ --timeout 10m \ --values primehub-values.yaml \ --values https://raw.githubusercontent.com/InfuseAI/primehub/master/examples/ee-values.yaml
После ожидания 5+ минут PrimeHub будет установлен в вашем кластере Kubernetes. Учетная запись по умолчанию - phadmin
, и пароль будет сгенерирован случайным образом. Следующая команда используется для получения открытого текста пароля. Для доступа вы можете использовать доменное имя, указанное в конфигурации helm.
kubectl get secret -n hub primehub-bootstrap -o jsonpath='{.data.password}' | base64 -d
Оставьте мне комментарий и скажите, какой из них вы предпочитаете. Не стесняйтесь задавать вопросы и хлопайте в ладоши, если эта статья вам поможет!
Следите за InfuseAI в твиттере: https://twitter.com/InfuseAI
Подпишитесь на рассылку новостей: http://eepurl.com/hyI2TD