容器服务Kubernetes(ACK)及相关云环境几次故障和问题排查记录
1. 镜像仓库被设置为公有,导致镜像泄露风险:
错误现象:
公有镜像仓库可能会被云上其它用户拉取,导致泄露镜像安全风险;部分运维或者开发同学,因为没有设置准确的 secret 到 Deployment,为了解决无法拉取镜像问题,直接开放镜像仓库为公有。
解决方法:
镜像仓库的命名空间一定要设置为私有,准确设置绑定云效中docker 镜像账号,通过云效发布应用;
严格设定容器镜像仓库的维护权限;
2. 镜像拉取失败:
错误现象:
## 查看 pod 部署日志 kubectl logs {pod} ## 错误信息 Failed to pull image "registry-vpc.{region_id}.aliyuncs.com/{app_name}-daily/{app_name}:20190823150817": rpc error: code = Unknown desc = Error response from daemon: pull access denied for registry-vpc.{region_id}.aliyuncs.com/{app_name}-daily/{app_name}, repository does not exist or may require 'docker login'
错误原因:
- 当前 tag 的镜像不存在、镜像地址错误、镜像网络不通,没法访问;
解决方法:
只需修改正确地址或者打通网络即可;
- Deployment 或者 Statefulset 的imagePullSecrets 没有设置或者设置错误
解决方法:
控制台或者使用命令建立保密字典,然后使用 imagePullSecrets 引入,或者自己建立 Secret:
## deplyment yaml 设置: imagePullSecrets: - name: acr-credential-be5ac8be6a88c42ac1d831b85135a585
3. SLB被容器服务清除,导致故障,需要重建和安全配置:
错误现象:
与容器服务关联配置的负载均衡(SLB)被清除;
错误原因:
因为有状态副本或者 Deployment集部署删除,存在级联删除 Service 情况,开发和运维人员使用重建方式修改自己配置的时候,导致 service 级联相应 SLB 被删除,导致故障,需要紧急重建 SLB 并多方增加访问控制等配置。
Service 配置任意修改或者删除,比如将 SLB 模式修改为 NodePort 或者 Cluster 模式,导致 SLB 负载均衡配置被清除。
解决与防止方法:
kubernetes 使用 NodePort,再通过手动建立负载均衡(SLB)与 NodePort 关联,解耦 Service 与 SLB 级联关系。
使用 Ingress 暴露服务,Service 使用虚拟集群 IP,与 Ingress 关联。
使用此种方式需要注意 SLB 到后端服务的负载均衡,具体参考负载均衡 中负载均衡请求部分。
4. ECS 添加到集群失败:
错误现象:
集群增加已有节点或者扩容失败。
错误日志例如下:
2019-07-31 19:44:59cf7c629dbf1dc4088a5a6b316fa5e561a | Wait k8s node i-9dpfd2n6ijvdd5tb642r join cluster timeout 2019-07-31 19:44:59cf7c629dbf1dc4088a5a6b316fa5e561a | Failed to check instance i-9dpfd2n6ijvdd5tb642r healthy : Wait for cn-north-2-gov-1.i-9dpfd2n6ijvdd5tb642r join to cluster cf7c629dbf1dc4088a5a6b316fa5e561a timeout 2019-07-31 19:44:59cf7c629dbf1dc4088a5a6b316fa5e561a | Failed to init instance i-9dpfd2n6ijvdd5tb642r, err Wait for cn-north-2-gov-1.i-9dpfd2n6ijvdd5tb642r join to cluster cf7c629dbf1dc4088a5a6b316fa5e561a timeout 2019-07-31 19:44:59cf7c629dbf1dc4088a5a6b316fa5e561a | Failed to attach node i-9dpfd2n6ijvdd5tb642r, err Wait for cn-north-2-gov-1.i-9dpfd2n6ijvdd5tb642r join to cluster cf7c629dbf1dc4088a5a6b316fa5e561a timeout
错误原因:
- 单个集群内节点数量配额达到阈值,导致 ECS 几点没法加入;
- 虚拟网络 VPC中路由表的路由条目达到阈值,导致新增节点没法添加路由条目;
- kubernetes apiserver 的 SLB 负载均衡设置有访问控制,导致添加的 ECS 没法访问 ApiServer;
- 添加的 ECS 节点自身安全组限制或者底层网络故障,导致没法访问 apiserver;
解决方法:
- 联系阿里云同学增加集群或者路由表阈值;
- 配置 SLB 访问控制,增加白名单;
- 配置安全组,增加白名单,或者重建 ECS,释放故障 ECS;
5. 集群中,个别 POD 网络访问不通:
错误现象:
个别应用产生一定比例的访问超时错误报告,经过监控系统 sunfire 配置发现特定的A 应用 pod 与另外一个应用B pod 网络不通;
网络测试:
- A pod 访问不通 B pod;
- B pod 能访问通 A pod;
- A pod 宿主机 ECS 能访问通 B pod宿主机 ECS;
- B pod 宿主机 ECS 能访问通 A pod宿主机 ECS;
- A pod 访问通 B pod宿主机 ECS;
- B pod 访问通 A pod宿主机 ECS;
抓包并与阿里云同学网络排查发现, 云上 VPC 的 NC 网络控制模块没有正确下发路由信息,导致网络故障。
解决方法:
联系阿里云 vpc 同学,排查 vpc 中 NC 路由下发问题。
6. 部分 ECS 网络故障,Master 访问Node 的 kube-proxy 端口访问不通:
错误现象:
新添加一批 ECS 节点,个别 ECS 总是添加失败,报告超时,排除 SLB 访问控制等原因;
监控 kubelet-TelnetStatus.Value 报警;
【阿里云监控】应用分组-k8s-cbf861623f10144c488813375a8a0d489-worker-1个实例发生报警, 触发规则:kubelet-TelnetStatus.Value 14:16 可用性监控[kubelet dingtalk-a-prod-node-X06/172.16.6.9] ,状态码(631>400 ),持续时间1天3分钟
错误原因:
经过观察和多次测试,失败的 ECS 网络很不稳定,经常网络不通;
该故障排查错层较长,一直没怀疑机器问题;
ECS 宿主机基础设施有问题,排除释放此宿主机上的 ECS。
解决方法:
新建 ECS, 释放故障 ECS,重新加入 kubernetes 集群。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
SpringBoot 2.0 + InfluxDB+ Sentinel 实时监控数据存储
前言 阿里巴巴提供的控制台只是用于演示 Sentinel 的基本能力和工作流程,并没有依赖生产环境中所必需的组件,比如持久化的后端数据库、可靠的配置中心等。目前 Sentinel 采用内存态的方式存储监控和规则数据,监控最长存储时间为 5 分钟,控制台重启后数据丢失。 企业版 这里推荐一下阿里云的官方版,AHAS Sentinel 控制台 是 Sentinel 控制台的阿里云上版本,提供企业级的控制台服务,包括: 实时请求链路查看 还有各种酷炫的监控图表 可靠的实时监控和历史监控数据查询,无需自行存储、拉取 动态规则管理/推送,无需自行配置外部数据源 免费版,可以提供 5 个节点的免费额度。开通专业版即可享受不限量节点额度。 专业版没有实例连接限制,开通后每天前5个限流降级节点不计费,超出部分按3元/天/实例收取相应的费用。 思路 官方文档也提供了思路,若需要监控数据持久化的功能,可以自行扩展实现 MetricsRepository 接口(0.2.0 版本),然后注册成 Spring Bean 并在相应位置通过 @Qualifier 注解指定对应的 bean name 即可。Metri...
- 下一篇
容器服务kubernetes(ACK)基础镜像制作记录
1.概述 容器服务云上环境与弹内差别较大,很多弹内支持默认埋点的 agent 在云上没法使用,同时需要预先部署一些云上环境需要的 agent, 因而云上的基础镜像跟弹内差异较大,需要从centos基础镜像开始配置环境。 容器镜像服务在云上,当云效部署时,需要从镜像服务拉取基础镜像建立镜像,因而需要将基础镜像 push 到镜像服务仓库中。 为了方便镜像 push 到镜像仓库,因而采用一个跳板机制作镜像,并上传到镜像仓库的方式来加快镜像制作和上传。 最终执行环境: 本地办公电脑执行打包脚本命令; 跳板机打包镜像; 跳板机镜像上传到镜像仓库。 2. 镜像制作: 主要步骤有: 跳板机环境安装 Docker; 上传镜像中需要的第三方包和基础软件安装包上传到跳板机,比如 jdk, agent等; 编写本地执行脚本,执行镜像打包,并 push 镜像到仓库; ## 2.1 镜像打包跳板机环境配置: 安装 docker: 1、检查内核版本,必须是3.10及以上 uname -r 注:如果版本低于3.10,使用 yum update 升级 2、安装docker yum install doc...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启