一例容器服务kubernetes集群节点异常问题的解决

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

结论

上来先发结论,方面出现同样问题的同学解决问题:

问题表现:

新创建的ACK托管版集群节点上被加了污点( node.kubernetes.io/network-unavailable: Effect: NoSchedule )

问题原因:

VPC中每个路由表中可保有的自定义路由条目数量(vpc_quota_route_entrys_num)超过配额限制,被ACK监测到从而给部分集群节点添加了污点标记

解决方法:

1.申请增加vpc_quota_route_entrys_num

  1. 2.手动删除对应节点的路由让ccm自动更新(推荐)或移除节点重新加入

问题解决感受:

1.阿里云容器服务kubernetes版本一直在不断地迭代,发展的越来越好,尤其是托管版,对于没有kubernetes专业人才甚至连专业运维人员都确认的企业非常方便适用;当然,阿里云容器服务kubernetes并不完美,还是有一些小问题的。
2.阿里云的支持人员非常敬业,晚上快11点了,还在帮忙排查和解决问题。点个赞。

问题发现和处理过程

下面是问题发现和处理过程,有兴趣或者需要了解详情的同学可以参考下:

近期,因业务需要,在测试环境新搭建了几个阿里云容器服务kubernetes托管版。
原本的#搭建过程非常顺利。在原有VPC网络中新建交换机、配置SNAT路由、创建新集群、指定了Pod网络CIDR和Service CIDR、指定使用新的ECS、配置日志服务等,点击创建集群,过个10来分钟,集群就创建好了。
然后取KubeConfig配置在发布系统中开始发布业务应用。
发布了几个应用之后,问题开始显露出来了。这个测试集群虽然只有几个节点,但也没道理应用一直都只往一个节点上部署啊。
image
仔细一检查,发现其他几个节点上都有污点。
再仔细一看,发现是创建集群时添加路由失败了。
image
然后去VPC控制台下检查路由,发现路由是存在的。
跟ACK支持同学确认,怀疑是创建时路由配额满了,导致ACK给节点标记了污点。
至于为啥路由是存在的,我怀疑是ACK有特殊权限,虽然路由满了,但是依然可以成功添加路由;同时,ACK仍然记录了此处路由数的限制问题,而在节点上标记了污点(纯粹合理猜想,因为复现成本较高,所以没有继续排查这方面的原因了)。
找到原因,就可以开始解决了。
首先,在配额管理中申请增加配额。
配额增加后,再查看路由表,没发现变化;查看节点详情,也没有变化,污点依然在,依然没有应用可以调度过去。
那么,试试手动去掉污点应该可以吧。
image
命令是执行成功了,但不管是describe node还是阿里云控制台上,污点依然在。
试了试调度,这时候有应用可以调度上去了。
好吧,看来是有些地方不太一致啊!
这时候,ACK支持的同学说,可以后台重启下ccm(cloud-controller-manager),ccm会自动检查路由表并更新状态。
那么,我们就重启下吧。
重启之后,发现节点上的污点标记依然在。
这时候,我试了试把节点从集群中移除然后重新加入,发现污点没有了,节点状态完全正常了。
不过,移除节点再加入的方式比较重,集群处理起来也很慢。
这时候,ACK支持的同学建议把路由手动删除来触发CCM自动更新。
我们手动删除了路由,然后刷新路由表,发现路由很快被加回来了。
然后去查看节点详情,发现节点上的污点已经去掉了;
再调度下业务应用,发现业务应用可以正常调度上去了。
到此,问题解决。

相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
Kubernetes API 调度
k8s中节点无法启动Pod
【10月更文挑战第3天】
84 6
|
1月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
121 60
|
1月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
210 62
|
7天前
|
存储 Kubernetes 网络协议
k8s的无头服务
Headless Service 是一种特殊的 Kubernetes 服务,其 `spec:clusterIP` 设置为 `None`,不会分配 ClusterIP,通过 DNS 解析提供服务发现。与普通服务不同,Headless Service 不提供负载均衡功能,每个 Pod 都有唯一的 DNS 记录,直接映射到其 IP 地址,适用于有状态应用的场景,如与 StatefulSet 一起部署数据库。示例中通过创建 Nginx 的 StatefulSet 和 Headless Service,展示了如何直接访问单个 Pod 并进行内容修改。
18 3
|
25天前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景
|
26天前
|
Kubernetes 持续交付 开发工具
ACK One GitOps:ApplicationSet UI简化多集群GitOps应用管理
ACK One GitOps新发布了多集群应用控制台,支持管理Argo CD ApplicationSet,提升大规模应用和集群的多集群GitOps应用分发管理体验。
|
1月前
|
Kubernetes 应用服务中间件 nginx
搭建Kubernetes v1.31.1服务器集群,采用Calico网络技术
在阿里云服务器上部署k8s集群,一、3台k8s服务器,1个Master节点,2个工作节点,采用Calico网络技术。二、部署nginx服务到k8s集群,并验证nginx服务运行状态。
497 1
|
1月前
|
Kubernetes Ubuntu Linux
Centos7 搭建 kubernetes集群
本文介绍了如何搭建一个三节点的Kubernetes集群,包括一个主节点和两个工作节点。各节点运行CentOS 7系统,最低配置为2核CPU、2GB内存和15GB硬盘。详细步骤包括环境配置、安装Docker、关闭防火墙和SELinux、禁用交换分区、安装kubeadm、kubelet、kubectl,以及初始化Kubernetes集群和安装网络插件Calico或Flannel。
143 0
|
8天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
33 2
|
18天前
|
Kubernetes 监控 开发者
掌握容器化:Docker与Kubernetes的最佳实践
【10月更文挑战第26天】本文深入探讨了Docker和Kubernetes的最佳实践,涵盖Dockerfile优化、数据卷管理、网络配置、Pod设计、服务发现与负载均衡、声明式更新等内容。同时介绍了容器化现有应用、自动化部署、监控与日志等开发技巧,以及Docker Compose和Helm等实用工具。旨在帮助开发者提高开发效率和系统稳定性,构建现代、高效、可扩展的应用。

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版
  • 推荐镜像

    更多