首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
安装 kubeadm
kubeadm故障排查方法
通过Kubeadm 创建集群
Kubernetes组件介绍
Kubernetes中的API
Kubernetes对象
Kubernetes对象管理
Kubernetes对象名称和 ID
Kubernetes对象标签和选择算符
Kubernetes对象名字空间
Kubernetes对象注解
Kubernetes对象字段选择器
Kubernetes对象Finalizers
Kubernetes对象属主与附属
Kubernetes对象推荐使用的标签
Kubernetes节点
Kubernetes节点与控制面之间的通信
Kubernetes控制器
Kubernetes云控制器管理器
Kubernetes关于 cgroup v2
Kubernetes容器运行时接口(CRI)
Kubernetes垃圾收集
当前位置:
首页>>
技术小册>>
Kubernetes中文教程(一)
小册名称:Kubernetes中文教程(一)
与任何程序一样,你可能会在安装或者运行 kubeadm 时遇到错误。 本文列举了一些常见的故障场景,并提供可帮助你理解和解决这些问题的步骤。 如果你的问题未在下面列出,请执行以下步骤: 如果你认为问题是 kubeadm 的错误: 转到 github.com/kubernetes/kubeadm 并搜索存在的问题。 如果没有问题,请 打开 并遵循问题模板。 如果你对 kubeadm 的工作方式有疑问,可以在 Slack 上的 #kubeadm 频道提问, 或者在 StackOverflow 上提问。 请加入相关标签,例如 #kubernetes 和 #kubeadm,这样其他人可以帮助你。 ------------ **由于缺少 RBAC,无法将 v1.18 Node 加入 v1.17 集群** 自从 v1.18 后,如果集群中已存在同名 Node,kubeadm 将禁止 Node 加入集群。 这需要为 bootstrap-token 用户添加 RBAC 才能 GET Node 对象。 但这会导致一个问题,v1.18 的 kubeadm join 无法加入由 kubeadm v1.17 创建的集群。 要解决此问题,你有两种选择: 使用 kubeadm v1.18 在控制平面节点上执行 kubeadm init phase bootstrap-token。 请注意,这也会启用 bootstrap-token 的其余权限。 或者,也可以使用 kubectl apply -f ... 手动应用以下 RBAC: ```asp apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: kubeadm:get-nodes rules: - apiGroups: - "" resources: - nodes verbs: - get --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kubeadm:get-nodes roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: kubeadm:get-nodes subjects: - apiGroup: rbac.authorization.k8s.io kind: Group name: system:bootstrappers:kubeadm:default-node-token ``` ------------ **在安装过程中没有找到 ebtables 或者其他类似的可执行文件** 如果在运行 kubeadm init 命令时,遇到以下的警告: ```asp [preflight] WARNING: ebtables not found in system path [preflight] WARNING: ethtool not found in system path ``` 那么或许在你的节点上缺失 ebtables、ethtool 或者类似的可执行文件。 你可以使用以下命令安装它们: - 对于 Ubuntu/Debian 用户,运行 apt install ebtables ethtool 命令。 - 对于 CentOS/Fedora 用户,运行 yum install ebtables ethtool 命令。 **在安装过程中,kubeadm 一直等待控制平面就绪** 如果你注意到 kubeadm init 在打印以下行后挂起: ```asp [apiclient] Created API client, waiting for the control plane to become ready ``` 这可能是由许多问题引起的。最常见的是: - 网络连接问题。在继续之前,请检查你的计算机是否具有全部联通的网络连接。 - 容器运行时的 cgroup 驱动不同于 kubelet 使用的 cgroup 驱动。要了解如何正确配置 cgroup 驱动, 请参阅配置 cgroup 驱动。 - 控制平面上的 Docker 容器持续进入崩溃状态或(因其他原因)挂起。你可以运行 docker ps 命令来检查以及 docker logs 命令来检视每个容器的运行日志。 对于其他容器运行时,请参阅使用 crictl 对 Kubernetes 节点进行调试。 **当删除托管容器时 kubeadm 阻塞** 如果容器运行时停止并且未删除 Kubernetes 所管理的容器,可能发生以下情况: ```asp sudo kubeadm reset ``` ```asp [preflight] Running pre-flight checks [reset] Stopping the kubelet service [reset] Unmounting mounted directories in "/var/lib/kubelet" [reset] Removing kubernetes-managed containers (block) ``` 一个可行的解决方案是重新启动 Docker 服务,然后重新运行 kubeadm reset: 你也可以使用 crictl 来调试容器运行时的状态。
上一篇:
安装 kubeadm
下一篇:
通过Kubeadm 创建集群
该分类下的相关小册推荐:
Kubernets合辑8-权限控制
Kubernetes中文教程(二)
Kubernets合辑5-Pod控制器
Kubernets合辑15-持续部署
Kubernetes合辑1-安装Kubernetes
Kubernetes中文教程(六)
云原生-K8S入门实战
Kubernets合辑6-服务发现
Kubernets合辑10-网络
Kubernets合辑9-资源约束
Kubernetes中文教程(五)
Kubernetes中文教程(三)