¿Por qué ocurre un pánico ocasionalmente cuando uso políticas de red en un nodo de clúster?
Escenario
Versión del clúster: v1.15.6-r1
Tipo de clúster: clúster de CCE
Modelo de red: red de túneles de contenedores
Sistema operativo del nodo: CentOS 7.6
Después de configurar una política de red para el clúster, el componente de red canal-agent en el nodo es incompatible con el núcleo de CentOS 7.6. Como resultado, puede producirse un pánico en el núcleo.
Condiciones
Si no se cumple alguna de las siguientes condiciones, este problema no se producirá:
- La versión del clúster es v1.15.6-r1 y se utiliza el modelo de red de túnel de contenedor.
- El nodo de CentOS 7.6 utiliza el componente canal-agent cuya versión es 1.0.RC10.1230.B005 o anterior. (Los nodos de CentOS 7.6 creados en o antes del 23 de febrero de 2021 usan dicho componente.)
- Tiene previsto utilizar o ha utilizado políticas de red.
Localización de fallas
Localización rápida (para nodos de pago por uso)
Compruebe si su nodo de CentOS 7.6 se creó después del 24 de febrero de 2021 en la consola de CCE.
Localización precisa (General)
Si la versión del clúster es v1.15.6-r1, el modelo de red es red de túnel de contenedor, el sistema operativo del nodo es CentOS 7.6, y la versión del componente del canal-agent es 1.0.RC10.1230.B005.sp1 o posterior, el problema no ocurrirá. Si se utiliza una versión anterior (por ejemplo, 1.0.RC10.1230.B002), se recomienda restablecer o eliminar el nodo antes de configurar las políticas de red.
Realice los siguientes pasos para consultar la versión del componente de red en el nodo:
- Prepare un nodo donde se pueda usar kubectl.
- Ejecute el siguiente comando para consultar la lista de nodos de CentOS:
for node_item in $(kubectl get nodes --no-headers | awk '{print $1}') ; do kubectl get node ${node_item} -o yaml | grep CentOS >/dev/null; if [[ "$?" == "0" ]];then echo "${node_item} is CentOS node";fi;done
La salida de comandos es la siguiente:
- Suponga que la dirección IP del nodo CentOS de destino es 10.0.50.187. Ejecute el siguiente comando para comprobar la versión canal-agent:
kubectl get packageversions.version.cce.io 10.0.50.187 -o yaml | grep -A 1 canal-agent
La salida de comandos es la siguiente:
Solución
Si aún desea utilizar el nodo, restablezca los nodos de CentOS 7.6 en el clúster para actualizar los componentes de red a la versión más reciente. Para obtener más información, consulte Restablecimiento de un nodo.
Si desea eliminar el nodo riesgoso y comprar uno nuevo, consulte Eliminar un nodo y Comprar un nodo.