Kubernetes Ubuntu 18.04 настройка с одним мастером
Перед началом.
- Минимальные требования к нодам:
One or more machines running one of:Ubuntu 16.04+
Debian 9+
CentOS 7
Red Hat Enterprise Linux (RHEL) 7
Fedora 25+
HypriotOS v1.0.1+
2 GB or more of RAM per machine (any less will leave little room for your apps)
2 CPUs or more
Full network connectivity between all machines in the cluster (public or private network is fine)
Unique hostname, MAC address, and product_uuid for every node. See here for more details.
Certain ports are open on your machines. See here for more details.
Swap disabled. You MUST disable swap in order for the kubelet to work properly
Рассмотрим установку кластера Kubernetes на три ноды, пускай это будут ноды k8s-host{1..3}
Команды на всех хостах
подключаем репозиторий
apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - &&
apt-key fingerprint 0EBFCD88 && add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat </etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io -y
apt-get install kubelet kubeadm kubectl -y
после установка нужно обновить systemd-юнит от docker, добавить в ExecStart следующий параметр:
--exec-opt native.cgroupdriver=systemd
Настраиваем sysctl:
cat > /etc/sysctl.d/99-kubernetes-cri.conf <
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
EOF
после этого инициализируем кластер
kubeadm init --control-plane-endpoint=10.1.100.100:6443 —node-name=k8s-host1 --pod-network-cidr=192.168.0.0/16 --upload-certs --apiserver-advertise-address=10.1.12.101
Calico работает именно с 192.168.0.0/16 подсетью и менять ее нельзя, для других модулей смотреть документацию к ним.
После инициализации кластера вывод будет примерно такой:
Your Kubernetes control-plane 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:
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 10.1.100.100:6443 --token nymff5.wam4beckb2rk \
--discovery-token-ca-cert-hash sha256:bbfb9db368d3c98794f551b44c9bbad91dc70614d96ccee4fdadc
После чего устанавливаем плагин сети calico:
kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml
Команда на 2 хосте
kubeadm join 10.1.100.100:6443 --token nymff5.wam4beckb2rk \
—discovery-token-ca-cert-hash sha256:bbfb9db368d3c98794f551b44c9bbad91dc70614d96ccee4fdadc --control-plane --certificate-key c4b2a5555672fd3ce44686876b0633196fa3fde45474b6ac —node-name=k8s-host2
Команда на 3 хосте
kubeadm join 10.1.100.100:6443 --token nymff5.wam4beckb2rk \
—discovery-token-ca-cert-hash sha256:bbfb9db368d3c98794f551b44c9bbad91dc70614d96ccee4fdadc --control-plane --certificate-key c4b2a5555672fd3ce44686876b0633196fa3fde45474b6ac —node-name=k8s-host3
можно забрать конфиг /etc/kubernetes/admin.conf на свой компьютер:
mkdir ~/.kube
scp k8s-host1:/etc/kubernetes/admin.conf ~/.kube/config
И в последующем управлять кластером kubernetes со своего компьютера:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-host1 Ready master 62m v1.17.0
k8s-host2 Ready 62m v1.17.0
k8s-host3 Ready 62m v1.17.0