K8S问题记录

1、POD启动状态一直为ContainerCreating,提示cni0的IP与既有子网不同

报错信息

使用 kubectl describe pods <pod-name> -n <namespace> 命令可看到提示信息
Failed to create pod sandbox: rpc error: code = Unknown desc = failed to setup network for sandbox “745720ffb20646054a167560299b19bb9ae046fe6c677b5d26312b89a26554e1”: failed to set bridge addr: “cni0” already has an IP address different from 172.20.2.1/24

进入到对应计算节点,使用ip a命令确认cni0的IP信息,使用cat /run/flannel/subnet.env查看flannel网络插件分配的子网IP,发现两者确实不一致。

解决办法

删掉这个IP错误的网卡cni0, 之后flanneld自动重新创建。命令如下。

 ifconfig cni0 down
 ip link delete cni0

2、POD启动状态一直为ContainerCreating,提示cgroup无法分配内存

报错信息

failed to create container for [kubepods burstable pod…]: mkdir /sys/fs/cgroup/memory/kubepods/burstable/pod…: cannot allocate memory

原因

cgroup内存泄露

解决办法

  • 方法一:将集群节点的centos系统内核升级到5.4以上版本,频率会明显降低
  • 方法二:重启节点服务器,但运行过一段时间后还是会出现这种问题

3、prometheus采集到的kube_node_labels指标,label信息不全

分析

该指标由 kube-state-metrics (deployment)采集,经curl在集群内访问该exporter,原始采集到的指标即不完整

解决办法

与其他采集正常的k8s集群对比,发现所用kube-state-metrics (deployment)版本有差异,将其镜像版本由2.0.0 改为了 v1.9.7 问题得到解决,效果如下。
在这里插入图片描述

4、deployment部署状态为ReplicaFailure

现象

deployment应用后,状态为ReplicaFailure,pod无法启动

分析过程:查看对应replicaset的event信息,确认原因

  • 命令行方式

具体步骤如下:

(1) 查看deployment详细信息,condition为ReplicaFailure

[root@10-75-18-18 ~]# kubectl describe deploy redis-hdms -n kunlun-cn-poc-m9
...
Conditions:
  Type             Status  Reason
  ----             ------  ------
  Available        False   MinimumReplicasUnavailable
  ReplicaFailure   True    FailedCreate
  Progressing      False   ProgressDeadlineExceeded
OldReplicaSets:    redis-hdms-54c669b665 (0/1 replicas created)
Events:            <none>

(2) 确认对应replicaset的名称

# 方法1
从上步骤的描述结果中查找
# 方法2:使用命令检索,再按时间等信息匹配
[root@10-75-18-18 ~]# kubectl get rs -n kunlun-cn-poc-m9 |grep redis-hdms
redis-hdms-54c669b665                                 1         0         0       97m
redis-hdms-6f749b758d                                 1         0         0       95m

(3) 查看replicaset的情况,event中warning提示未设置limits.cpu和limits.memory

[root@10-75-18-18 ~]# kubectl describe rs redis-hdms-54c669b665 -n kunlun-cn-poc-m9
... 
Conditions:
  Type             Status  Reason
  ----             ------  ------
  ReplicaFailure   True    FailedCreate
Events:
  Type     Reason        Age    From                   Message
  ----     ------        ----   ----                   -------
  Warning  FailedCreate  59m    replicaset-controller  Error creating: pods "redis-hdms-54c669b665-dx5lf" is forbidden: failed quota: m9: must specify limits.cpu,limits.memory
  • 图形界面方式

从图形界面关联找到其对应的replicaset,点击查看其event信息
在这里插入图片描述

解决办法

在deployment对应的yaml中增加资源limits信息即可

(20240222)

5、pod持续重启,提示Back-off restarting failed container

现象

pod持续重启,提示Back-off restarting failed container

原因分析

(1) 查看pod详细信息,Last State中查看原因为OOMKilled,即内存不足

[root@10-75-18-18 ~]# kubectl describe pod minio-74c9cf8669-f8wc7 -n kunlun-cn-poc-m9
...
    Last State:     Terminated
      Reason:       OOMKilled
      Exit Code:    137
      Started:      Thu, 22 Feb 2024 14:18:43 +0800
      Finished:     Thu, 22 Feb 2024 14:18:44 +0800
...
Events:
  Type     Reason   Age                   From                    Message
  ----     ------   ----                  ----                    -------
  Normal   Pulled   48s (x5 over 2m29s)   kubelet, 192-167-20-74  Container image "registry.xxx.com/infra/minio:RELEASE.2020-06-18T02-23-35Z" already present on machine
  Normal   Created  48s (x5 over 2m29s)   kubelet, 192-167-20-74  Created container minio
  Normal   Started  47s (x5 over 2m28s)   kubelet, 192-167-20-74  Started container minio
  Warning  BackOff  33s (x10 over 2m24s)  kubelet, 192-167-20-74  Back-off restarting failed container

解决办法

在deployment对应的yaml中修改内存资源配置

其他常见原因

  • 无常驻进程

https://blog.csdn.net/yztezhl/article/details/125421316
https://serverfault.com/questions/924243/back-off-restarting-failed-container-error-syncing-pod-in-minikube

  • 其他

https://www.imooc.com/article/339069

(20240222)

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 作为 Kubernetesk8s)面试官,以下是可能会问到的一些问题: 1. 你能简要解释一下 Kubernetes 吗?它是用来做什么的? 2. Kubernetes 的核心组件是什么?请详细描述每个组件的作用。 3. 如何创建 Kubernetes PodPod 又是什么? 4. 如何定义 Kubernetes Deployment?Deployment 又是什么? 5. 什么是 Kubernetes Service?它的作用是什么? 6. 如何调整 Kubernetes Pod 的 CPU 和内存资源限制? 7. Kubernetes 中的 ConfigMap 和 Secret 有什么作用? 8. Kubernetes 中的控制器有哪些?它们的区别是什么? 9. 如何进行 Kubernetes 集群的扩容和缩容? 10. 如何进行 Kubernetes 的升级和回滚操作? 这些问题涵盖了 Kubernetes 的基本概念、组件和实践,面试官可能会进一步深入某些主题并询问相关问题,以确保应聘者对 Kubernetes 有足够的了解。 ### 回答2: 在K8s面试中,面试官通常会提问关于以下几个方面的问题: 1. K8s基础知识:面试官可能会问关于K8s的基本概念、组件和架构等方面的问题,例如K8s的工作原理、Master和Node节点的作用及其之间的通信方式等。 2. K8s资源管理:面试官可能会询问关于K8s资源管理的问题,包括如何创建和管理Pod、Deployment、Service和Ingress等资源对象,如何伸缩应用程序以及如何进行故障排除等。 3. K8s网络:面试官可能会提问关于K8s网络的问题,例如如何实现Pod间的通信和跨节点访问,如何配置网络策略和网络插件,并解释主流网络插件(如Flannel、Calico)的工作原理等。 4. K8s存储:面试官可能会问关于K8s存储的问题,包括如何使用持久化卷(Persistent Volume)和持久化卷声明(Persistent Volume Claim)来实现数据持久化,以及如何使用存储类(Storage Class)来动态分配存储资源等。 5. K8s安全性:面试官可能会询问关于K8s安全性的问题,包括如何配置K8s的认证和授权机制,如何使用角色和角色绑定来控制访问权限,以及如何使用Secret对象来安全管理敏感信息等。 6. K8s调度和自动扩缩容:面试官可能会提问关于K8s调度和自动扩缩容的问题,包括如何使用标签和选择器进行调度、如何设置资源限制和请求、如何使用HPA(Horizontal Pod Autoscaler)和VPA(Vertical Pod Autoscaler)等。 除了上述方面的问题,面试官还可能会根据具体的职位要求提问其他相关问题,例如K8s集群监控、CI/CD流水线和K8s云原生应用开发等。因此,在准备K8s面试时,还应该对这些方面进行充分的学习和准备。 ### 回答3: k8s面试官通常会提问涉及以下主题的问题: 1. Kubernetes基础知识:面试官会询问关于Kubernetes的基本概念、主要组件和工作原理的问题,如Pod、Deployment、Service等。 2. 容器技术:由于Kubernetes是一个容器编排平台,面试官可能会问关于容器技术的问题,如Docker镜像、容器的生命周期管理、容器网络等。 3. 集群管理和调度:面试官可能会问如何管理和扩展Kubernetes集群,如何进行调度和负载均衡,如何监控、日志记录和故障处理等。 4. 安全性和访问控制:面试官可能会询问如何保护Kubernetes集群的安全性以及如何配置用户访问权限、网络策略和安全策略。 5. 自动化和持续集成/持续交付(CI/CD):面试官可能会问如何使用Kubernetes进行自动化部署、持续集成和持续交付,以及如何实现滚动部署和回滚等。 6. 监控和调试:面试官可能会问如何监控Kubernetes集群和应用程序的性能,如何分析日志和故障排除等。 7. DevOps实践和最佳实践:面试官可能会问DevOps相关的问题,如何实施基础设施即代码(Infrastructure as Code)、持续集成和持续交付、自动化测试和部署等。 8. Kubernetes生态系统:面试官可能会询问与Kubernetes相关的其它工具和技术,如Helm、Prometheus、Istio等,以及如何与其他云原生技术栈进行集成。 在准备面试时,应当深入了解这些主题,并准备一些常见问题的答案,以展示自己对Kubernetes的理解和实践经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值