Для начала необходимо установить Docker.
Для корректной работы Kubernetes необходимо отключить SWAP
swapoff -a
Так же проверить удалить его с fstab
Добавим репозиторий Kubernetes и установим
Ubuntu:
apt update && apt install -y apt-transport-https curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb http://apt.kubernetes.io/ kubernetes-xenial main EOF apt update apt install -y kubelet kubeadm kubectl
CentOS 7:
cat <<EOF > /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 setenforce 0 yum install -y kubelet kubeadm kubectl
Добавляем в автозапуск и запускаем:
systemctl enable kubelet && systemctl start kubelet
Инициализируем кластер Kubernetes:
kubeadm init --apiserver-advertise-address=1.2.3.4 --pod-network-cidr=10.244.0.0/16 --kubernetes-version stable-1.12
- —apiserver-advertise-address — задает IP адрес, на который Kubernetes будет вещать API, по умолчанию "0.0.0.0"
- —pod-network-cidr — для использования альтернативного приватного диапазона сети, по умолчанию "10.96.0.0/12"
- —kubernetes-version — жестко задает определенную версию для кластера, по умолчанию "stable-1"
Если все успешно, то вы увидите примерно следующее:
Your Kubernetes master has initialized successfully! To start using your cluster, you need to run the following 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: https://kubernetes.io/docs/concepts/cluster-administration/addons/ You can now join any number of machines by running the following on each node as root: kubeadm join 1.2.3.4:6443 --token w70rla.kck3wg7lp85x8wlo --discovery-token-ca-cert-hash sha256:ea4a8a533dc61574e7794f7322ae2b29e531fd9f944d7e9f80e367ebd22e4470
Как понятно с вывода, необходимо от обычного пользователя (если вдруг нет такового, создайте) выполнить следующее:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
Если нет обычного пользователя в системе, его необходимо создать с привилегией sudo:
useradd kubernetes -G sudo -m -s /bin/bash
У kubectl есть автодополнение, для этого в системе должен быть установлен пакет "bash-completion". Для оболочки bash необходимо выполнить следующее:
echo "source <(kubectl completion bash)" >> ~/.bashrc
Для MacOS или оболочки zsh можно посмотреть в документации Kubernetes.
Установим Flannel:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Перезапустим Kubernetes:
systemctl restart kubelet
Добавим еще ноду в наш кластер.
На ней предварительно повторив шаги установки Docker и Kubernetes, запустим их и на этом все, инициализация делается только на мастере при создании кластера.
От рута выполним команду, полученную на этапе инициализации кластера:
kubeadm join 1.2.3.4:6443 --token w70rla.kck3wg7lp85x8wlo --discovery-token-ca-cert-hash sha256:ea4a8a533dc61574e7794f7322ae2b29e531fd9f944d7e9f80e367ebd22e4470
Убедитесь, что нодам кластера разрешен доступ по порту 6443 TCP.
Теперь вернемся на мастер и от обычного уже пользователя можем посмотреть список нод в кластере:
kubectl get nodes
Задать роль ноде можно так:
kubectl label node NODE_NAME node-role.kubernetes.io/worker=worker