集群节点使用networkpolicy概率性出现panic问题
问题场景
集群版本:v1.15.6-r1版本
集群类型:CCE集群
网络模式:容器隧道网络模式
节点操作系统:CentOS 7.6
上述集群的用户配置使用networkpolicy后,由于节点上canal-agent网络组件与CentOS 7.6内核存在不兼容,概率性导致CentOS 7.6的节点panic。
受影响范围
以下三条为必要条件,若有一条不满足,则您不会受到此问题的影响:
- v1.15.6-r1容器隧道网络模式集群。
- canal-agent组件版本为1.0.RC10.1230.B005或更低版本的CentOS 7.6节点(简单的判断方法为2021年2月23日及之前创建的节点)。
- 计划使用或已配置使用networkpolicy规则。
排查方法
快速排查方法(适用于节点为按需计费类型)
若您的节点为按需计费类型,可从cce-console上查看节点创建时间,对创建于2021年2月24日及之后的新建CentOS 7.6节点已无该问题。
准确排查方法(通用)
若您的集群版本为v1.15.6-r1,网络模式为容器隧道网络,节点操作系统为CentOS 7.6,而canal-agent组件版本为1.0.RC10.1230.B005.sp1或更高版本,则无此问题;若低于此版本(例如1.0.RC10.1230.B005、1.0.RC10.1230.B003、1.0.RC10.1230.B002),则建议您重置/删除对应节点后再使用networkpolicy。
执行以下步骤查询节点网络组件版本:
- 准备可执行kubectl的节点。
- 执行如下命令查询存量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
回显如图:
- 假定用户CentOS节点的ip为10.0.50.187 (请替换为实际IP),执行下述命令查看canal-agent版本:
kubectl get packageversions.version.cce.io 10.0.50.187 -o yaml | grep -A 1 canal-agent
回显如图: