RPMS Kubernetes con versión en Fedora

Bradley G Smith, Versión F41,rawhide Last review: 2024-07-27

Esta página analiza fuentes de software de terceros que no están afiliadas ni respaldadas oficialmente por el Proyecto Fedora. Úselas a su propia discreción. Fedora recomienda el uso de software libre y de código abierto, y evitar el software protegido por patentes.

Vista general

Los rpms de Kubernetes con versiones fueron introducidos en Fedora 41 y serán el formato utilizado dentro de liberaciones subsecuentes. La anterior práctica tuvo una versión de Kubernetes disponible para cada liberación de Fedora. La cadencias de liberación diferente para Fedora (una liberación nueva cada 6 meses) y Kubernetes (una versión nueva cada trimestre) resultó en o bien la versión de Kubernetes disponible domado bien anterior u omitiendo las liberaciones de Kubernetes. Ni la opción proporcionó una experiencia de usuario buena para los usuarios de Fedora.

Los rpms versionados resuelven esos problemas proporcionando todas las versiones Kubernetes proporcionadas en cada liberación de Fedora (asunto a una restricción Golang; consulte a continuación). Fedora 41 tiene rpms para Kubernetes 1.31, Kubernetes 1.30, Kubernetes 1.29, and Kubernetes 1.28. Estos rpms serán nombrados, respectivamente, kubernetes1.31, kubernetes1.30, kubernetes1.29, y kubernetes1.28. Desde estos rpms tienen nombres diferentes, el gestor de paquetes de Fedora, rpms, los identifican como aplicaciones diferentes, no como versiones diferentes en la misma aplicación. Debido a esta diferencia, los rpms versionados requieren cambios para el proceso de actualización de paquete normal está para ser documentado a continuación.

¿Qué cambió?

Los rpms versionados contienen varios cambios y actualizaciones que difieren desde los rpms sin versión. Para la mayor parte de estos cambios no afectarían el empleo o actualizaciones de rpm pero unos pocos deben tomar atención.

configuración de kubelet

La configuración de kubelet ahora utiliza el archivo de configuración de kubelet que indicadores pasados como parámetros de línea de comando en el archivo de unidad de systemd.

ficheros de systemd kubelet

kubelet systemd unit files are now largely consistent with corresponding unit files used by the Kubernetes team in their rpms. In particular, kubelet now defaults to runtime configuration using the standard kubelet configuration file. Non-versioned rpms used command line parameters in systemd files to configurekubelet.

kubelet sysuser

non-versioned rpms created a kube sysuser for kubelet. This sysuser was used for file and group ownership of some but not all files and directories used by kubelet. This sysuser was not present in rpms from the Kubernetes team and, given its partial implementation in Fedora, removed from the versioned rpms.

Restricciones del lenguaje Go

Cada versión de Kubernetes (en el nivel menor, ej Kubernete v1.31) es compilado con una versión especificada del lenguaje go. Cada liberación de Fedora está emparejado con una versión go específica. Go 1.22 está disponible en Fedora 40 y go 1.23 está disponible en Fedora 41.

Una versión nueva de Kubernetes puede ser compilada con una versión de Go no disponible en las liberaciones de Fadora más antiguas por tanto bloqueando el empaquetado de que versión de Kubernetes para esa liberación de Fedora.

Rpms de Kubernetes en Fedora

Los rpms versionados de Kubernetes tienen la siguiente organización. Note que esta estructura del paquete además aplica a los paquetes de kubernetes1.28 y kubernetes1.29 los cuales son diferentes desde las contrapartes no versionadas de estas versiones de Kubernetes. La tabla de abajo lista los rpms de Kubernetes disponibles, que el rpm contiene, y notas con el propósito y cualquier cautela o restricciones.

Tabla 1. Los rpms de Kubernetes versionados en Fedora 41 (y más nuevos)
Nombre RPM Contenido Notas

kubernetes

kubelet

Kubelet is the Kubernetes runtime on a node.

kubernetes-kubeadm

kubeadm

Kubeadm initializes a cluster and joins new nodes to a cluster. This rpm is optional but recommended by the Kubernetes team. Install on every node if used.

kubernetes-client

kubectl

Kubernetes command line client. Recommended on any node configured as a control plane as it allows the cluster administrator control over the cluster from an ssh session on the control plane. Install on a machine that can connect to the cluster over the network.

kubernetes-systemd

kube-apiserver, kube-controller-manager, kube-proxy, kube-scheduler

Systemd services for a kubernetes control-plane and/or node. Not needed for most installations as kubeadm will install these components as static pods. If used, then install on all nodes. Use systemctl to enable kube-proxy on all nodes. Enable kube-apiserver, kube-controller-manager, and kube-scheduler on control plane nodes.

Recomendaciones de instalación de rpm versionados

Para muchos de los clústeres kubernetes modernos instalan kubernetes, kubernetes-kubeadm, y kubernetes-client en cada máquina en el clúster. Si el espacio de disco es una restricción solo instala kubernetes-client en máquinas de control-plane.

# empleando kubernetes 1.30 como un ejemplo
sudo dnf install kubernetes1.30 kubernetes1.30-kubeadm kubernetes1.30-client

Si conduce una instalación manual de Kubernetes (consulte Kubernetes The Hard Ways) entonces instale todos los rpms de kubernetes excepto kubernetes-kubeadm.

# utilizando kubernetes 1.30 como un ejemplo
sudo dnf install kubernetes1.30 kubernetes1.30-client kubernetes1.30-systemd

Recomendaciones de actualización de rpm con versiones

Ya que los rpm tratan kubernetes1.30 como una aplicación diferente desde kubernetes1.31, por tanto ambos rpms instalan los mismos archivos en el mismo lugar entran en conflicto y el usual dnf update no lo logrará en remplazo de v1.30 por v1.31. Hay disponibles dos opciones cuando utilice dnf: desinstalar/instalar o intercambiar.

La secuencia desinstalar e instalar utilizando los comandos dnf por primera vez desinstala una versión de Kubernetes y después la reemplaza con la versión siguiente. Ambos comandos de dnf además desinstalan/instalan cualquier dependencia.

Important Note - this is only needed when changing minor versions, that is replacing v1.30 with v1.31. Updates at the patch level such as v1.30.2 to v1.30.3 use the normal dnf update command.

# Desinstala y reemplaza con kubernetes 1.30 y 1.31 como un ejemplo
sudo dnf remove kubernetes1.30 kubernetes1.30-kubeadm kubernetes1.30-client
sudo dnf install kubernetes1.31 kubernetes1.31-kubeadm kubernetes1.31-client

El comando dnf swap además puede ser utilizado para cambiar desde una publicación de Kubernetes a la siguiente. Utilizar intercambio evita re-instalación de dependencias pero la especificación del paquete dnf kubernetes1.31* instalará todos los rpms coincidentes desde el repositorio y no tan solo los rpms desinstalados por la especificación de paquete inicial kubernetes1.30*.:w

# Desinstalar y sustituir con kubernetes 1.20 y 1.31 como un ejemplo
sudo dnf swap kubernetes1.30* kubernetes1.31*