Por que um pânico ocorre ocasionalmente quando uso políticas de rede em um nó de cluster?
Cenário
Versão do cluster: v1.15.6-r1
Tipo de cluster: cluster do CCE
Modelo da rede: rede de túneis de contentores
Sistema operacional do nó: CentOS 7.6
Depois que uma política de rede é configurada para o cluster, o componente de rede do agente de canal no nó é incompatível com o kernel do CentOS 7.6. Como resultado, um pânico de kernel pode ocorrer.
Condições
Se qualquer uma das seguintes condições não for atendida, esse problema não ocorrerá:
- A versão do cluster é v1.15.6-r1 e o modelo de rede de túnel de contêiner é usado.
- O nó do CentOS 7.6 usa o componente canal-agent cuja versão é 1.0.RC10.1230.B005 ou anterior. (Os nós do CentOS 7.6 criados em ou antes de 23 de fevereiro de 2021 usam esse componente.)
- Você planeja usar ou já usou políticas de rede.
Localização de falhas
Localização rápida (para nós de pagamento por uso)
Verifique se o seu nó do CentOS 7.6 foi criado após 24 de fevereiro de 2021 no console do CCE.
Localização precisa (Geral)
Se a versão do cluster for v1.15.6-r1, o modelo de rede for rede de túnel de contêiner, o sistema operacional do nó for CentOS 7.6 e a versão do componente do agente de canal for 1.0.RC10.1230.B005.sp1 ou posterior, O problema não ocorrerá. Se uma versão anterior for usada (por exemplo, 1.0.RC10.1230.B002), é aconselhável redefinir ou excluir o nó antes de configurar as diretivas de rede.
Execute as seguintes etapas para consultar a versão do componente de rede no nó:
- Prepare um nó onde o kubectl pode ser usado.
- Execute o seguinte comando para consultar a lista de nós do 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
A saída do comando é a seguinte:
- Suponha que o endereço IP do nó de CentOS de destino seja 10.0.50.187. Execute o seguinte comando para verificar a versão do agente de canal:
kubectl get packageversions.version.cce.io 10.0.50.187 -o yaml | grep -A 1 canal-agent
A saída do comando é a seguinte:
Solução
Se você ainda quiser usar o nó, redefina os nós do CentOS 7.6 no cluster para atualizar os componentes de rede para a versão mais recente. Para obter detalhes, consulte Redefinição de um nó.
Se quiser excluir o nó arriscado e comprar um novo, consulte Exclusão de um nó e Compra de um nó.