K8s The Hard Way 1/10 - Pré-requisitos
Kubernetes The Hard Way
Esse guia foi originalmente criado pelo pelo grande Kelsey Hightower ( GITHUB ), ele é um dos grandes Advocate do Google, aqui vou basicamento apenas traduzir e adaptar para uma ambiente vagrant+libvirt, todos os demais comando são originais do https://github.com/kelseyhightower/kubernetes-the-hard-way, sinta-se a vontade para me enviar uma mensagem questionando o guia.
Este tutorial orienta você a configurar do Kubernetes da maneira mais difícil. Este guia não é para pessoas que procuram um comando totalmente automatizado para ativar um cluster do Kubernetes.
O Kubernetes The Hard Way é otimizado para aprendizagem, o que significa seguir um longo caminho para garantir que você entenda cada tarefa necessária para inicializar um cluster Kubernetes.
Copyright
Este trabalho está licenciado sob a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Target Audience
O público-alvo deste tutorial é alguém que planeja oferecer suporte a um cluster de produção do Kubernetes e quer entender como tudo se encaixa.
Cluster Details O Kubernetes The Hard Way orienta você na criar um cluster Kubernetes altamente disponível com criptografia de ponta a ponta entre os componentes e autenticação RBAC. kubernetes v1.18.6 containerd v1.3.6 coredns v1.7.0 cni v0.8.6 etcd v3.4.10
Labs
Este tutorial pressupõe que você tenha uma ambiente vagrant+libvirt funcional rodando na sua maquina. As lições aprendidas neste tutorial podem ser aplicadas a outras plataformas.
Pré-requisitos
Installing the Client Tools Provisioning Compute Resources Provisioning the CA and Generating TLS Certificates Generating Kubernetes Configuration Files for Authentication Generating the Data Encryption Config and Key Bootstrapping the etcd Cluster Bootstrapping the Kubernetes Control Plane Bootstrapping the Kubernetes Worker Nodes Configuring kubectl for Remote Access Provisioning Pod Network Routes Deploying the DNS Cluster Add-on Smoke Test Cleaning Up
Vagrant
Certifique que você possue vagrant instalado e funcional na sua estação de trabalho: https://www.vagrantup.com/docs/installation
Rodando comandos em paralelo com tmux
O tmux pode ser usado para executar comandos em várias sistemas ao mesmo tempo. Os laboratórios neste tutorial podem exigir a execução dos mesmos comandos em várias instâncias; nesses casos, considere o uso de tmux e a opção de enviar comandos ao mesmo tempo em instancias diferentes.
O uso do tmux é opcional e não obrigatório para concluir este tutorial.
Installing the Client Tools
Neste laboratório, você vai instalar as ferramentas de linha de comando necessárias para concluir este tutorial: cfssl, cfssljson e kubectl.
Linux
wget -q --show-progress --https-only --timestamping \
https://storage.googleapis.com/kubernetes-the-hard-way/cfssl/1.4.1/linux/cfssl \
https://storage.googleapis.com/kubernetes-the-hard-way/cfssl/1.4.1/linux/cfssljson
chmod +x cfssl cfssljson
sudo mv cfssl cfssljson /usr/local/bin/
Verification Verify cfssl and cfssljson version 1.4.1 or higher is installed:
cfssl version
output
Version: 1.4.1
Runtime: go1.12.12
cfssljson --version
Version: 1.4.1
Runtime: go1.12.12
Instalar kubectl O utilitário de linha de comando kubectl é usado para interagir com o servidor da API Kubernetes. Baixe e instale o kubectl dos binários de lançamento oficiais:
Linux wget https://storage.googleapis.com/kubernetes-release/release/v1.18.6/bin/linux/amd64/kubectl chmod +x kubectl sudo mv kubectl /usr/local/bin/
Verification Verify kubectl version 1.18.6 or higher is installed:
kubectl version --client
output
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.6", GitCommit:"dff82dc0de47299ab66c83c626e08b245ab19037", GitTreeState:"clean", BuildDate:"2020-07-15T16:58:53Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
Providenciando as maquinas virtuais:
Subindo as maquinas virtuais vagrant:
Name | Role | CPU | Memory |
---|---|---|---|
controller-0 | MASTER | 2 | 2GB |
controller-1 | MASTER | 2 | 2GB |
controller-2 | MASTER | 2 | 2GB |
worker-0 | WORKER | 2 | 1GB |
worker-1 | WORKER | 2 | 1GB |
worker-2 | WORKER | 2 | 1GB |
loadbalance | LOADBALANCER | 2 | 1GB |
Criar o ~/vagrant-vm/kubernetes-the-hard-way/Vagrantfile
Vagrant.configure("2") do |config|
config.vm.provision "shell", inline: "echo Hello"
config.vm.define "controller-0" do |controller0|
controller0.vm.box = "generic/ubuntu2004"
controller0.vm.hostname = "controller-0.lucio.k8s"
controller0.vm.provider :libvirt do |domain|
domain.cpus = 2
domain.memory = 2048
end
end
config.vm.define "controller-1" do |controller1|
controller1.vm.box = "generic/ubuntu2004"
controller1.vm.hostname = "controller-1.lucio.k8s"
controller1.vm.provider :libvirt do |domain|
domain.cpus = 2
domain.memory = 2048
end
end
config.vm.define "controller-2" do |controller2|
controller2.vm.box = "generic/ubuntu2004"
controller2.vm.hostname = "controller-2.lucio.k8s"
controller2.vm.provider :libvirt do |domain|
domain.cpus = 2
domain.memory = 2048
end
end
config.vm.define "worker-0" do |worker0|
worker0.vm.box = "generic/ubuntu2004"
worker0.vm.hostname = "worker-0.lucio.k8s"
worker0.vm.provider :libvirt do |domain|
domain.cpus = 2
domain.memory = 1024
end
end
config.vm.define "worker-1" do |worker1|
worker1.vm.box = "generic/ubuntu2004"
worker1.vm.hostname = "worker-1.lucio.k8s"
worker1.vm.provider :libvirt do |domain|
domain.cpus = 2
domain.memory = 1024
end
end
config.vm.define "worker-2" do |worker2|
worker2.vm.box = "generic/ubuntu2004"
worker2.vm.hostname = "worker-2.lucio.k8s"
worker2.vm.provider :libvirt do |domain|
domain.cpus = 2
domain.memory = 1024
end
end
config.vm.define "loadbalancer" do |loadbalancer|
loadbalancer.vm.box = "generic/ubuntu2004"
loadbalancer.vm.hostname = "loadbalancer.lucio.k8s"
loadbalancer.vm.provider :libvirt do |domain|
domain.cpus = 2
domain.memory = 1024
end
end
end
A partir de agora quase todos os nossos acessos vai ser feito dentro do diretório do projeto:
cd ~/vagrant-vm/kubernetes-the-hard-way
Subindo as maquinas vagrant:
sudo vagrant up
Uma vez que todas as maquinas já foram criadas, você pode testar o acesso:
sudo vagrant ssh controller-0
output
Last login: Sun Feb 28 23:51:59 2021 from 192.168.122.1
vagrant@controller-0:~$