集群节点使用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
回显如图:
网络异常 所有常见问题
- 工作负载网络异常时,如何定位排查?
- 集群内部无法使用ELB地址访问负载
- 集群外部访问Ingress异常
- CCE集群中域名解析失败
- 为什么访问部署的应用时浏览器返回404错误码?
- 为什么容器无法连接互联网?
- VPC的子网无法删除,怎么办?
- 如何修复出现故障的容器网卡?
- 节点无法连接互联网(公网),如何排查定位?
- 如何解决VPC网段与容器网络冲突的问题?
- ELB四层健康检查导致java报错:Connection reset by peer
- Service事件:Have no node to bind,如何排查?
- 为什么登录虚拟机VNC界面会间歇性出现Dead loop on virtual device gw_11cbf51a, fix it urgently?
- 集群节点使用networkpolicy概率性出现panic问题
- 节点远程登录界面(VNC)打印较多source ip_type日志问题
- 使用IE浏览器访问nginx-ingress出现重定向308无法访问
- NGINX Ingress控制器插件升级导致集群内Nginx类型的Ingress路由访问异常
- 负载均衡型Service更新出现错误:Quota exceeded for resources: members_per_pool
more