Instalación de Kubernetes 1.30.1 en CentOS 7

  • Sistema Operativo: CentOS Linux 7 (Core)
  • Containerd: 1.6.33
  • Kubernetes: 1.30.1
  • Ejemplo con un solo nodo maestro (hostname: nodo1, puede variar según la configuración).

Cambio al repositorio YUM de Aliyun

No se puede usar yum update

yum update

Copia de seguridad del repositorio original y adición del repositorio de Aliyun

# Respaldo del repositorio original
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
# Crear archivo /etc/yum.repos.d/CentOS-Base.repo e insertar el contenido siguiente:
------------------------------------------------------------------------------------------------------------------------------
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

# Limpiar caché
yum clean all
# Generar nueva caché
yum makecache

Actualización del Kernel de Linux

Verificar la versión actual del kernel y descargar el nuevo kernel

# Verificar versión actual del kernel
uname -r
# Descargar paquetes del nuevo kernel
wget https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-5.4.257-1.el7.elrepo.x86_64.rpm
wget https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.257-1.el7.elrepo.x86_64.rpm
wget https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-doc-5.4.257-1.el7.elrepo.noarch.rpm
wget https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-headers-5.4.257-1.el7.elrepo.x86_64.rpm
wget https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-tools-5.4.257-1.el7.elrepo.x86_64.rpm
wget https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-tools-libs-5.4.257-1.el7.elrepo.x86_64.rpm
wget https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-tools-libs-devel-5.4.257-1.el7.elrepo.x86_64.rpm

Desinstalar versiones antiguas del kernel-tools y kernel-headers

yum remove -y kernel-tools* kernel-headers*

Instalar los paquetes descargados

yum install -y kernel*.rpm

Estabelcer el kernel recién instalado como predeterminado

# Configurar GRUB para arrancar por defecto el primer kernel
sed -i 's/^GRUB_DEFAULT=saved$/GRUB_DEFAULT=0/' /etc/default/grub
# Generar nueva configuración de GRUB
grub2-mkconfig -o /boot/grub2/grub.cfg

Reiniciar y verificar la versión del kernel actualizado

# Reiniciar el sistema
reboot
# Verificar versión del kernel
uname -r

Preparación para la instalación de Kubernetes

Deshabilitar el firewall

systemctl disable --now firewalld
systemctl stop firewalld
systemctl status firewalld

Deshabilitar SELinux

# Revisar estado de SELinux
getenforce
# Deshabilitar SELinux permanentemente
sed -i 's/enforcing/disabled/' /etc/selinux/config
# Deshabilitar SELinux en la sesión actual
setenforce 0
# Verificar que SELinux está deshabilitado
getenforce

Deshabilitar la partición swap

# Revisar si hay una partición swap activa
free -h
# Deshabilitar swap en la sesión actual
swapoff -a
# Deshabilitar swap permanentemente
sed -ri 's/.*swap.*/#&/' /etc/fstab
# Verificar que la partición swap está desactivada
free -h

Transmitir tráfico IPv4 de puentes a las cadenas de iptables

# Añadir configuraciones a /etc/sysctl.conf
echo -e "net.ipv4.ip_forward = 1\nnet.bridge.bridge-nf-call-ip6tables = 1\nnet.bridge.bridge-nf-call-iptables = 1\nnet.ipv6.conf.all.disable_ipv6 = 1\nnet.ipv6.conf.default.disable_ipv6 = 1\nnet.ipv6.conf.lo.disable_ipv6 = 1\nnet.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.conf
# Cargar módulo br_netfilter
modprobe br_netfilter
# Aplicar cambios
sysctl -p

Instalación de Containerd

Configurar el repositorio de Docker

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

Instalar Containerd

yum install -y yum-utils device-mapper-persistent-data lvm2
yum install -y containerd.io containerd

Configurar archivo de Containerd

# Generar archivo de configuración
containerd config default > /etc/containerd/config.toml
# Reemplazar dirección de imagen por la de Aliyun
sed -i "s#registry.k8s.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g" /etc/containerd/config.toml
# Habilitar SystemdCgroup
sed -i "s#SystemdCgroup = false#SystemdCgroup = true#g" /etc/containerd/config.toml
# Habilitar inicio automático de Containerd
systemctl enable --now containerd
systemctl status containerd

Verificar la versión de Containerd

ctr version
containerd --version

Instalar comando crictl

# Descargar crictl
wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.30.0/crictl-v1.30.0-linux-amd64.tar.gz
# Descomprimir en /usr/local/bin
tar zxvf crictl-v1.30.0-linux-amd64.tar.gz -C /usr/local/bin
# Configurar crictl
cat << EOF | sudo tee /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
debug: false
pull-image-on-create: true
disable-pull-on-run: false
EOF
# Verificar instalación
crictl ps

Opcional: Configurar acelerador de imágenes para Containerd

# Configurar directorio para certificados
mkdir -p /etc/containerd/certs.d/docker.io
# Añadir configuración para Docker Hub
cat > /etc/containerd/certs.d/docker.io/hosts.toml << EOF
server = "https://docker.io"
[host."https://dockerpull.com"]
  capabilities = ["pull", "resolve"]
[host."https://register.liberx.info"]
  capabilities = ["pull", "resolve"]
[host."https://docker.m.daocloud.io"]
  capabilities = ["pull", "resolve"]
[host."https://dockerproxy.cn"]
  capabilities = ["pull", "resolve"]
EOF

# Configurar directorio para registry.k8s.io
mkdir -p /etc/containerd/certs.d/registry.k8s.io
# Añadir configuración para registry.k8s.io
tee /etc/containerd/certs.d/registry.k8s.io/hosts.toml << 'EOF'
server = "https://registry.k8s.io"
[host."https://k8s.m.daocloud.io"]
  capabilities = ["pull", "resolve", "push"]
EOF

# Ejemplos de uso
# Con ctr
ctr i pull --hosts-dir=/etc/containerd/certs.d docker.io/nginx:latest
# Con crictl
crictl pull docker.io/nginx:latest

Instalación de Kubernetes

Añadir repositorio de Kubernetes de Aliyun

cat <<eof baseurl="https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/" enabled="1" eof="" gpgcheck="1" gpgkey="https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/repodata/repomd.xml.key" name="Kubernetes" tee=""></eof>

Instalar kubelet, kubeadm, kubectl

yum install -y kubelet-1.30.1 kubeadm-1.30.1 kubectl-1.30.1

Descargar imágenes necesarias

kubeadm config images pull --kubernetes-version=v1.30.1 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers

Inicializar nodo maestro

kubeadm init --apiserver-advertise-address=172.16.14.132 --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version=v1.30.1 --service-cidr=10.96.0.0/16 --pod-network-cidr=10.244.0.0/16

Configurar acceso a kubectl

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf

Implementar plugin de red Calico

kubectl apply -f https://projectcalico.docs.tigera.io/v3.25/manifests/calico.yaml

Verificar estado de los nodos

kubectl get pod -A
kubectl get node

Nodos trabajadores

Para nodos trabajadores, seguir pasos similares desde la descarga de imágenes. Utilizar el comando kubeadm join xxx para unirse al nodo maestro.

Etiquetas: centos Kubernetes containerd calico

Publicado el 9-25 01:11