Cómo instalar Kubernetes (k8s) 1.7 en CentOS 7 / RHEL 7

Kubernetes es un grupo y orquestación motor para contenedores docker. En otras palabras, Kubernetes es una herramienta o software de código abierto que se utiliza para orquestar y administrar contenedores Docker en un entorno de clúster. Kubernetes también se conoce como k8s y fue desarrollado por Google y donado a la “Fundación Cloud Native Computing”

En la configuración de Kubernetes, tenemos un nodo maestro y varios nodos. Los nodos de clúster se conocen como nodos trabajadores o Minion. Desde el nodo maestro gestionamos el clúster y sus nodos usando ‘kubeadm‘ y ‘kubectlcomando.

Kubernetes se puede instalar e implementar utilizando los siguientes métodos:

  • Minikube (es un clúster de kubernetes de un solo nodo)
  • Kops (configuración de kubernetes de múltiples nodos en AWS)
  • Kubeadm (Clúster multinodo en nuestras propias instalaciones)

En este artículo instalaremos la última versión de Kubernetes 1.7 en CentOS 7/RHEL 7 con la utilidad kubeadm. En mi configuración, tomo tres servidores CentOS 7 con una instalación mínima. Un servidor actuará como nodo maestro y el resto de dos servidores serán nodos auxiliares o trabajadores.

Diagrama de configuración de Kubernetes

En el Master Node se instalarán los siguientes componentes

  • Servidor API – Proporciona la API de kubernetes usando Jason / Yaml sobre http, los estados de los objetos de la API se almacenan en etcd
  • programador – Es un programa en el nodo maestro que realiza las tareas de programación, como el lanzamiento de contenedores en los nodos trabajadores según la disponibilidad de recursos.
  • Administrador del controlador – El trabajo principal del administrador del controlador es monitorear los controladores de replicación y crear módulos para mantener el estado deseado.
  • etc. – Es una base de datos de pares clave-valor. Almacena datos de configuración del clúster y el estado del clúster.
  • Utilidad Kubectl – Es una utilidad de línea de comandos que se conecta al servidor API en el puerto 6443. Los administradores la utilizan para crear pods, servicios, etc.

En los nodos trabajadores, se instalarán los siguientes componentes

  • Kubelet – Es un agente que se ejecuta en cada nodo trabajador, se conecta a Docker y se encarga de crear, iniciar y eliminar contenedores.
  • Kube-Proxy – Enruta el tráfico a los contenedores apropiados según la dirección IP y el número de puerto de la solicitud entrante. En otras palabras, podemos decir que se utiliza para la traducción de puertos.
  • Vaina – El pod se puede definir como un grupo o varios niveles de contenedores que se implementan en un solo nodo trabajador o en un host acoplable.

Pasos de instalación de Kubernetes 1.7 en CentOS 7 / RHEL 7

Realice los siguientes pasos en el nodo maestro

Paso 1: deshabilite SELinux y configure las reglas del firewall

Inicie sesión en su nodo maestro de Kubernetes y configure el nombre de host y deshabilite selinux usando los siguientes comandos

~]# hostnamectl set-hostname 'k8s-master'
~]# exec bash
~]# setenforce 0
~]# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

Establezca las siguientes reglas de firewall.

[[email protected] ~]# firewall-cmd --permanent --add-port=6443/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=2379-2380/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=10250/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=10251/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=10252/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=10255/tcp
[[email protected] ~]# firewall-cmd --reload
[[email protected] ~]# modprobe br_netfilter
[[email protected] ~]# echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

Nota: En caso de que no tenga su propio servidor dns, actualice el archivo /etc/hosts en los nodos maestro y trabajador

192.168.1.30 k8s-master
192.168.1.40 worker-node1
192.168.1.50 worker-node2

Deshabilite el intercambio en todos los nodos usando «intercambio -aComando y elimine o comente las particiones de intercambio o el archivo de intercambio del archivo fstab

Paso 2: configurar el repositorio de Kubernetes

Los paquetes de Kubernetes no están disponibles en los repositorios predeterminados de CentOS 7 y RHEL 7. Use el siguiente comando para configurar sus repositorios de paquetes.

[[email protected] ~]# cat <<EOF > /etc/yum.repos.d/kubernetes.repo
> [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
> EOF [[email protected] ~]#

Paso 3: Instale Kubeadm y Docker

Una vez que los repositorios de paquetes estén configurados, ejecute el siguiente comando para instalar los paquetes kubeadm y docker.

[[email protected] ~]# yum install kubeadm docker -y

Inicie y habilite el servicio kubectl y docker

[[email protected] ~]# systemctl restart docker && systemctl enable docker
[[email protected] ~]# systemctl  restart kubelet && systemctl enable kubelet

Paso 4: inicialice Kubernetes Master con ‘kubeadm init’

Ejecute el siguiente comando para inicializar y configurar kubernetes master.

[[email protected] ~]# kubeadm init

La salida del comando anterior sería algo como a continuación

kubeadm-init-salida

Como podemos ver en el resultado, kubernetes master se ha inicializado correctamente. Ejecute los siguientes comandos para usar el clúster como usuario raíz.

[[email protected] ~]# mkdir -p $HOME/.kube
[[email protected] ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[[email protected] ~]# chown $(id -u):$(id -g) $HOME/.kube/config

Paso 5: implementar la red de pods en el clúster

Intente ejecutar los siguientes comandos para obtener el estado del clúster y los pods.

kubectl-get-nodes

Para que el estado del clúster esté listo y el estado de kube-dns se esté ejecutando, implemente la red de módulos para que los contenedores de diferentes hosts se comuniquen entre sí. La red POD es la red superpuesta entre los nodos trabajadores.

Ejecute el siguiente comando para implementar la red.

[[email protected] ~]# export kubever=$(kubectl version | base64 | tr -d 'n')
[[email protected] ~]# kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"
serviceaccount "weave-net" created
clusterrole "weave-net" created
clusterrolebinding "weave-net" created
daemonset "weave-net" created
[[email protected] ~]#

Ahora ejecute los siguientes comandos para verificar el estado

[[email protected] ~]# kubectl get nodes
NAME         STATUS    AGE       VERSION
k8s-master   Ready     1h        v1.7.5
[[email protected] ~]# kubectl  get pods  --all-namespaces
NAMESPACE     NAME                                 READY     STATUS    RESTARTS   AGE
kube-system   etcd-k8s-master                      1/1       Running   0          57m
kube-system   kube-apiserver-k8s-master            1/1       Running   0          57m
kube-system   kube-controller-manager-k8s-master   1/1       Running   0          57m
kube-system   kube-dns-2425271678-044ww            3/3       Running   0          1h
kube-system   kube-proxy-9h259                     1/1       Running   0          1h
kube-system   kube-scheduler-k8s-master            1/1       Running   0          57m
kube-system   weave-net-hdjzd                      2/2       Running   0          7m
[[email protected] ~]#

Ahora agreguemos nodos trabajadores a los nodos maestros de Kubernetes.

Realice los siguientes pasos en cada nodo trabajador

Paso 1: deshabilite SELinux y configure las reglas del firewall en ambos nodos

Antes de deshabilitar SELinux, configure el nombre de host en ambos nodos como ‘worker-node1’ y ‘worker-node2’ respectivamente

~]# setenforce 0
~]# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
~]# firewall-cmd --permanent --add-port=10250/tcp
~]# firewall-cmd --permanent --add-port=10255/tcp
~]# firewall-cmd --permanent --add-port=30000-32767/tcp
~]# firewall-cmd --permanent --add-port=6783/tcp
~]# firewall-cmd  --reload
~]# echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

Paso 2: Configure los repositorios de Kubernetes en ambos nodos trabajadores

~]# cat <<EOF > /etc/yum.repos.d/kubernetes.repo
> [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
> EOF

Paso 3: instale kubeadm y el paquete docker en ambos nodos

[[email protected] ~]# yum  install kubeadm docker -y
[[email protected] ~]# yum  install kubeadm docker -y

Iniciar y habilitar el servicio docker

[[email protected] ~]# systemctl restart docker && systemctl enable docker
[[email protected] ~]# systemctl restart docker && systemctl enable docker

Paso 4: ahora une los nodos trabajadores al nodo maestro

Para unir los nodos trabajadores al nodo maestro, se requiere un token. Siempre que kubernetes master se inicializa, en la salida obtenemos el comando y el token. Copie ese comando y ejecútelo en ambos nodos.

[[email protected] ~]# kubeadm join --token a3bd48.1bc42347c3b35851 192.168.1.30:6443

La salida del comando anterior sería algo como a continuación

kubeadm-node1

[[email protected] ~]# kubeadm join --token a3bd48.1bc42347c3b35851 192.168.1.30:6443

La salida sería algo como a continuación

kubeadm-join-node2

Ahora verifique el estado de los nodos desde el nodo maestro usando el comando kubectl

[[email protected] ~]# kubectl get nodes
NAME           STATUS    AGE       VERSION
k8s-master     Ready     2h        v1.7.5
worker-node1   Ready     20m       v1.7.5
worker-node2   Ready     18m       v1.7.5
[[email protected] ~]#

Como podemos ver, los nodos maestros y trabajadores están listos. Esto concluye que kubernetes 1.7 se instaló con éxito y también se unieron con éxito dos nodos de trabajo. Ahora podemos crear pods y servicios.

Comparta sus opiniones y comentarios en caso de que este artículo lo ayude a instalar la última versión de kubernetes 1.7

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *