Kubernetes
Instalación Cluster Kubernetes con kubeadm
Kubernetes es una plataforma Open Source para la gestión y automatización de contenedores(dockers). Vamos a ha realizar una instalación sencilla con 3 nodos (1 master y 2 Workers) utilizando la herramienta kubeadm. Los 3 nodos se van a desplegar utilizando la herramienta Vagrant. El fichero Vagrantfile para desplegar las maquinas virtuales seria este:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
Vagrant.require_version ">= 1.6.0" boxes = [ { :name => "k8s-master", :eth1 => "192.168.205.10", :mem => "1024", :cpu => "1" }, { :name => "k8s-worker1", :eth1 => "192.168.205.11", :mem => "4096", :cpu => "1" }, { :name => "k8s-worker2", :eth1 => "192.168.205.12", :mem => "4096", :cpu => "1" } ] Vagrant.configure(2) do |config| config.vm.box = "ubuntu/xenial64" boxes.each do |opts| config.vm.define opts[:name] do |config| config.vm.hostname = opts[:name] config.vm.provider "vmware_fusion" do |v| v.vmx["memsize"] = opts[:mem] v.vmx["numvcpus"] = opts[:cpu] end config.vm.provider "virtualbox" do |v| v.customize ["modifyvm", :id, "--memory", opts[:mem]] v.customize ["modifyvm", :id, "--cpus", opts[:cpu]] end config.vm.network :private_network, ip: opts[:eth1] end end config.vm.provision "shell", inline: <<-SHELL 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" >> ~/kubernetes.list sudo mv ~/kubernetes.list /etc/apt/sources.list.d sudo apt-get update # Install docker if you don't have it already. sudo apt-get install -y docker.io apt-get install -y kubelet kubeadm kubectl kubernetes-cni SHELL end |
1 2 |
vagrant up vagrant ssh k8s-master |
1 |
sudo kubeadm init --apiserver-advertise-address=192.168.205.10 --pod-network-cidr=10.244.0.0/16 |
1 2 3 4 |
sysctl net.bridge.bridge-nf-all-iptables=1 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config |
1 |
wget https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml |
1 |
kubectl apply -f kube-flannel.yml |
1 |
kubeadm join 192.168.205.10:6443 --token pm5j09.teljjlhmrk1jv8x0 --discovery-token-ca-cert-hash sha256:d31cf7a8c092748bbb6589c698c2b409ab3da24a4f0e5d66c8828416a2a7c168 |