Helm se actualiza a la version 3 y retira el componente tiller, kubernetes 1.18 ya tiene release alfa. En pocos meses de uso de nuestro cluster se acumulan cambios, se deprecan y añaden features por lo que tenemos que realizar comprobaciones de estabilidad para nuestros sistemas.
Para desintalar e instalar y aplicar configuraciones de un conjunto de servidores nada como ansible, es una de esas cosas que una vez usas ya no vuelves a concebir no usarlo por todo lo que aporta.
Partimos de que tenemos maquinas centos que conforman nuestro cluster 1 master y 4 nodos y que ademas tienen ya configurado las ips staticas y el archivos hosts para que se reconozcan entre si.
192.168.1.88 k8s-master 192.168.1.41 node01 192.168.1.42 node02 192.168.1.43 node03 192.168.1.44 node04
Instalar Ansible
yum install epel-release yum install yum-utils yum install ansible
Con ansible instalado añadimos al final los nodos que vamos a usar, creamos un grupo «all» que incluye todas las maquinas incluido el master y otro «nodes» solo los nodos. Esto se define en el archivo «/etc/ansible/hosts»
vi /etc/ansible/hosts
[master] 127.0.0.1 ansible_hostname=k8s-master [nodes] 192.168.1.41 ansible_hostname=node01 192.168.1.42 ansible_hostname=node02 192.168.1.43 ansible_hostname=node03 192.168.1.44 ansible_hostname=node04
Tenemos que crear una clave ssh y añadir la clave publica en las maquinas que vayamos usar
ssh-keygen -t rsa -b 2048
for NODE in k8s-master node01 node02 node03 node04; do ssh-copy-id root@${NODE}; done
Para probar que ansible funciona usamos el modulo ping
ansible all -m ping
Descargar los playbooks
git clone https://github.com/Akaronte/kube-cluster-playbooks.git cd kube-cluster-playbooks
Añadir los repos
ansible-playbook addRepos.yml
Paver las versiones dispobles de los repos.
yum search --showduplicates docker | expand yum search --showduplicates kubernetes | expand
Dentro del archivo install.yml podemos especificar la version de Docker y kubernetes que queremos instalar.
ansible-playbook install.yml
- hosts: all vars: - docker_version: '20.10.9-3.el7.x86_64' - kube_version: '1.22.2-0' tasks: - name: Disable SELinux selinux: state: disabled - name: Disable SWAP shell: swapoff -a - name: disable swap fstab replace: path: /etc/fstab regexp: '^([^#].*?\sswap\s+sw\s+.*)$' replace: '# \1' - name: Active netfiter shell: modprobe br_netfilter - name: Test netfilter config shell: if grep -q "^net.bridge.bridge-nf-call-iptables = 1" /etc/sysctl.conf; then echo false; else echo true; fi register: test_grep - name: enable netfiler lineinfile: dest: /etc/sysctl.conf line: net.bridge.bridge-nf-call-iptables = 1 when: test_grep.stdout == "true" - name: disable firewall shell: systemctl stop firewalld && systemctl disable firewalld && systemctl mask --now firewalld - name: Add epel-release repo and utils yum: name: ['epel-release','yum-utils','device-mapper-persistent-data','lvm2'] state: present - name: Add docker repository shell: yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo - name: Install docker yum: name: - "docker-ce-{{ docker_version }}" - "docker-ce-cli-{{ docker_version }}" - containerd.io state: present #when: (docker_version != "") - name: Start Docker service: name: docker state: started enabled: yes - name: Copy docker daemon.json copy: src: ./daemon.json dest: /etc/docker/daemon.json follow: yes - name: Creating a repository file for Kubernetes file: path: /etc/yum.repos.d/kubernetes.repo state: touch - name: Adding repository details in Kubernetes repo file. blockinfile: path: /etc/yum.repos.d/kubernetes.repo block: | [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 - name: Install kubernetes yum: name: - "kubeadm-{{ kube_version }}" - "kubelet-{{ kube_version }}" - "kubectl-{{ kube_version }}" state: present #when: (kube_version != "") - name: Start kubelet shell: systemctl enable kubelet - name: reboot reboot:
Despues del reinicio en el master ya podemos iniciar el cluster.
kubeadm init --apiserver-advertise-address=192.168.1.88 --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
Desplegar flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Añadir los nodos con ansible
token=$(kubeadm token create --print-join-command) && ansible nodes -a "$token"
Para verificar
kubectl get nodes
0 comentarios