Instalar kubernetes con kudeadm
A continuación de muestras los pasos para la instalación de kuberenetes sobre tres servidores CentOS 7 con una instalación mínima realizada usando kubeadm. El objetivo de esta instalación es disponer de un clúster pequeño para entornos de pruebas.
Requisitos
Hay que verificar que los tres servidores tienen visibilidad entre ambos y con resolución de nombres. Las siguientes tareas se realizan en los tres servidores.
Se deshabilita el firewall al ser un entorno de pruebas.
systemctl disable firewalld
systemctl stop firewalld
systemctl status firewalld
Se deshabilita el SElinux.
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
Se modifican variables del sysctl.
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl -p
De deshabilita el SWAP y se comentan las líneas de swap en el fichero fstab.
swapoff -a
vi /etc/fstab
Instalación de docker
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum update
yum install -y docker-ce-18.06.1.ce
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
EOF
mkdir -p /etc/systemd/system/docker.service.d
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
Instalación de kuberentes
Se configuran los repositorios para poder descargar los paquetes.
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
exclude=kube*
EOF
Se instalan unas versiones en concreto de los paquetes de kubernetes.
yum install -y kubelet-1.13.5 kubeadm-1.13.5 kubectl-1.13.5 --disableexcludes=kubernetes
systemctl enable kubelet
systemctl start kubelet
Se inicializa el clúster ejecutando el siguientes comando solo desde el master.
kubeadm init
Se ejecutan los siguientes comandos tal y como muestra la salida del comando de inicialización.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Unión de nodos al clúster
Desde el resto de nodos, se ejecuta el siguientes comando para unirlos al clúster.
kubeadm join 192.168.0.11:6443 --token x0hs5a.z7cjeel7326m08hb --discovery-token-ca-cert-hash sha56:3827b8400d6030b41b3677a27f017e42ad52e5c252730bc57e975451c47350bd
Gestión del clúster
Se verifica el estado del clúster.
kubectl get pods --all-namespaces
kubectl get nodes
Se configura la red a utilizar dentro de Kubernetes. En este caso se instala Wave.
export kubever=$(kubectl version | base64 | tr -d '\n')
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"
Se verifica el estado del clúster
kubectl get pods --all-namespaces