Запуск kubernetes на одном сервере

Сделал для себя мануальчик как запускать кластер kubernetes состоящий из мастера и ноды запущенной на этом же мастер сервере.
Установка и запуск чистый, то есть не используем миникуб и прочие радости быстрого разворачивания готового куба.
Это не скрипт для ansible, если только знакомимся с технологией, то лучше все делать поэтапно, смотреть что происходит, понимать что для чего нужно.
Для чего может понадобиться такая странная конфигурация: поупражняться и посмотреть как это вообще работает на голом железе, виртуалке. НЕ у всех есть возможность сразу запускать все в облаке и там же упражняться. Узнать сколько ресурсов это безобразие потребляет. Оценить масштаб трагедии на слабом железе. Вернуться к docker-compose. =)
Если планируется сразу въехать в то, как запустить свою приложуху, запустить ее собственно на этом сервере как поды kubernetes, то далее можно заджоинить слэйв k8s и перегнать всё туда например. Или использовать как свою минитестовую среду прям в том виде как она будет на прод версии, с ограничениями железа например. Еще одно применение, если это локальный сервер, достаточно мощный, на нем будет мастер, к нему будут стучаться ноды, но тестовая среда может запускаться и на нём, без нагрузки.

docker

curl -fsSL https://get.docker.com -o get-docker.sh

sh get-docker.sh

curl -L “https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

docker -v

Docker version 19.03.5, build 633a0ea838

docker-compose -v

docker-compose version 1.25.3, build d4d1b42b

k8s

swapoff -a

systemctl disable swapfile.swap

manual edit /etc/fstab: nano /etc/fstab

or

sed -i ‘s/^\(.swap.\)$/#\1/’ /etc/fstab

apt-get install -y iptables arptables ebtables

apt-get update && apt-get install -y apt-transport-https curl

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add –

cat <

EOF

apt-get update

apt-get install -y kubelet kubeadm kubectl

apt-mark hold kubelet kubeadm kubectl

Simple init

kubeadm init

mkdir -p $HOME/.kube

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

chown $(id -u):$(id -g) $HOME/.kube/config

Add network admin addon: weave net

export kubever=$(kubectl version | base64 | tr -d ‘\n’)

kubectl apply -f “https://cloud.weave.works/k8s/net?k8s-version=$kubever”

Advanced init, decide on the network for k8s

If you use SNI flannel:

kubeadm init –pod-network-cidr=10.244.0.0/16

mkdir -p $HOME/.kube

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

chown $(id -u):$(id -g) $HOME/.kube/config

Because SNI flannel use default network 10.244.0.0/16 for POD. Configurable in kube-flannel.yml

Install SNI 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

Allow pod launch on masternode:

kubectl taint nodes –all node-role.kubernetes.io/master-

Watch status k8s nodes

kubectl get pods –all-namespaces

NAMESPACE NAME READY STATUS RESTARTS AGE

default nginx 1/1 Running 0 13h

kube-system coredns-6955765f44-dvlxt 1/1 Running 0 17h

kube-system coredns-6955765f44-jf5bm 1/1 Running 0 17h

kube-system etcd-vmi337170.example.net 1/1 Running 0 17h

kube-system kube-apiserver-vmi337170.example.net 1/1 Running 0 17h

kube-system kube-controller-manager-vmi337170.example.net 1/1 Running 0 17h

kube-system kube-flannel-ds-amd64-tngt2 1/1 Running 0 17h

kube-system kube-proxy-lbvj6 1/1 Running 0 17h

kube-system kube-scheduler-vmi337170.example.net 1/1 Running 0 17h

kubectl get nodes

NAME STATUS ROLES AGE VERSION

vmi337170.example.net Ready master 16m v1.17.2

Leave a Reply

Your email address will not be published. Required fields are marked *