Воскресенье, 17.11.2024, 03:28

Компьютерная помощь

Записки системного администратора

Меню сайта
Категории раздела
Компьютер [36]
Общекомпьютерные темы
Windows server [18]
Статьи по версиям windows для серверов.
Windows [30]
Статьи по версиям windows для рабочих станций.
Unix [65]
Статьи на тему unix-подобных систем. Linux, FreeBSD и т.п.
Видеомонтаж [10]
Статьи по нелинейному видеомонтажу
Программирование [9]
Заметки по программированию
Databases [10]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Вход на сайт

Поиск

Главная » Статьи » Unix

Установка Kubernetes на Ubuntu18.04 пошагово

Используем 2 ноды (хоста) в кластере.
Вначале нам необходимо установить Docker:

$ sudo apt-get update \
  && sudo apt-get install -qy docker.io

Устанавливаем Kubernetes:

$ sudo apt-get update \
  && sudo apt-get install -y apt-transport-https \
  && curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -


$ echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" \
  | sudo tee -a /etc/apt/sources.list.d/kubernetes.list \
  && sudo apt-get update

Обновляем репозиторий и устанавливаем утилиты Kubernetes:
$ sudo apt-get update \
  && sudo apt-get install -y \
  kubelet \
  kubeadm \
  kubernetes-cni

Для ускорения вышеприведенные операции можно выполнить одним скриптом:
$ curl -sL https://gist.githubusercontent.com/alexellis/7315e75635623667c32199368aa11e95/raw/b025dfb91b43ea9309ce6ed67e24790ba65d7b67/kube.sh | sudo sh

Подготовка хостов для работы в кластере:

На дисках нужно отключить Swap и переименовать слейв хост если у них одинаковые имена (у хостов должны быть разные имена):

$ swapoff -a -отключение swap
$ vi /etc/fstab -закомментировать строку со swap
Переименование хоста:
$ sudo hostnamectl set-hostname linuxhost
Добавляем запись в  sudo nano /etc/hosts
127.0.1.1       linuxhost
Изменяем параметр в файле cloud.cfg

nano /etc/cloud/cloud.cfg
preserve_hostname: true

Создадим не root пользователя packet для работы с kubernetes:
$ sudo useradd packet -G sudo -m -s /bin/bash
$ sudo passwd packet
$ sudo cp /etc/kubernetes/admin.conf $HOME/
$ sudo chown $(id -u):$(id -g) $HOME/admin.conf
$ export KUBECONFIG=$HOME/admin.conf
$ echo "export KUBECONFIG=$HOME/admin.conf" | tee -a ~/.bashrc

Для работы кластера установим software defined network (SDN) Flannel
$ 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/k8s-manifests/kube-flannel-rbac.yml
Flannel корректно работает с подсетью 10.244.0.0/16
Инициализируем кластер (ip адрес мастер ноды 192.168.56.110)
$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.56.110
На выводе получим команду типа такой:
kubeadm join 192.168.56.110:6443 --token t6fcr7.aq9a29kduilvuh3i --discovery-token-ca-cert-hash sha256:e91f2ba86dd6c45f43742a8c096883ee9eb1d9cae69a5f3e384eb21dc1caed5b
Эта команда выполняется на slave-нодах для присоединения к кластеру.

Разрешаем работу однонодового кластера
$ kubectl taint nodes --all node-role.kubernetes.io/master-
Выводим инфу о кластерах:
kubectl get all --namespace=kube-system

Запускаем контейнер с приложением:
$ kubectl get pods
$ kubectl run guids --image=alexellis2/guid-service:latest --port 9000
deployment "guids" created
$ kubectl get pods
В выводе получим контейнер с именем на подобие этого
guids-2617315942-lzwdh
Команда для получения описания настроек контейнера
$ kubectl describe pod guids-2617315942-lzwdh
Посмотеть логи:
$ kubectl logs guids-2617315942-lzwdh
Зайти в контейнер
$ kubectl exec -t -i guids-2617315942-lzwdh sh

Для проверки работы запустим контейнер Apache (httpd)
$ kubectl run apache --image=httpd --port=80
$ kubectl expose deployment apache --type=NodePort --name=apache
Теперь с браузера со слейв ноды нам будет доступен apache на порту полученному по команде kubectl get services (порт назначается рандомно):
http://192.168.56.111:31132/
Остановить сервис и удалить деплой контейнера в кластере:
$ kubectl delete service apache
$ kubectl delete deployment apache

Deploying the Dashboard UI (графическое отображение посредством браузера)
Установим Dashboard и запустим прокси на порту 44333
$ kubectl create -f https://git.io/kube-dashboard
$ kubectl proxy --address="192.168.56.104" -p 44133 --accept-hosts='^*$'
Теперь наш Dashboard UI будет доступен с браузера по адресу:
http://192.168.56.110:44133/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
Замечание!
По умолчанию через http по токену невозможно зайти в Dashboard при нажатии на "sign in" ничего не произойдет, только через https. Чтобы зайти через skip и получить все права, выполняем следующую команду (т.е. даем админские права):
$ kubectl apply -f dashboard-adminuser.yaml
Содержание файла dashboard-adminuser.yaml:
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: kubernetes-dashboard
  labels:
    k8s-app: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: kubernetes-dashboard
  namespace: kube-system
# link from this (https://stackoverflow.com/questions/51907168/not-able-to-login-to-kubernetes-dashboard-using-token-with-service-account)


По материалам:
https://blog.alexellis.io/kubernetes-in-10-minutes/
https://www.admintome.com/blog/install-kubernetes-ubuntu/

Категория: Unix | Добавил: admin (20.11.2018)
Просмотров: 653 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: