如何识别Kubernetes集群使用的部署置备工具
Kubernetes集群部署工具识别方案
可以通过节点标签、系统组件特征、进程与配置路径几个维度快速区分,按以下步骤排查即可准确定位:
快速排查命令
先执行以下命令拿到基础信息,再对照后续特征匹配:
- 查看节点基础信息与标签:
kubectl get nodes -o wide --show-labels - 查看节点详细注解:
kubectl describe node <任意节点名> - 查看系统命名空间下的所有Pod:
kubectl get pods -n kube-system - 登录控制平面节点查看运行进程:
ps aux | grep -E 'k3s|kubelet|minikube|kind'
各部署工具专属识别特征
- kind
- 节点默认命名规则为
kind-control-plane、kind-worker[序号] - 节点自带标签
node.kubernetes.io/instance-type=kind - 所有集群节点本身是Docker容器,在宿主机执行
docker ps可看到镜像为kindest/node的对应节点容器 - 无额外定制化系统组件,核心组件均以静态Pod形式运行
- 节点默认命名规则为
- minikube
- 单节点集群居多,默认节点名就是
minikube - 节点带
minikube.k8s.io/*前缀的专属标签与版本注解 - kube-system命名空间下存在
minikube.io前缀的专属组件,比如minikube自带的storage-provisioner - 在部署节点执行
minikube status可直接返回集群运行状态(未卸载minikube二进制的前提下)
- 单节点集群居多,默认节点名就是
- k3s
- 特征辨识度最高:控制平面节点上执行
ps aux可看到主进程为k3s server,工作节点主进程为k3s agent,不存在独立运行的kubelet、kube-proxy进程,所有核心组件都打包在k3s单二进制中 - 节点自带标签
node.kubernetes.io/instance-type=k3s - kube-system命名空间默认预装
local-path-provisioner、traefik、metrics-server等k3s专属绑定组件 - 配置文件默认存放在
/etc/rancher/k3s/路径下,默认kubeconfig路径为/etc/rancher/k3s/k3s.yaml
- 特征辨识度最高:控制平面节点上执行
- kops
- 一般部署在公有云环境,节点命名默认带可用区、实例组标识,格式类似
master-us-east-1a-1、node-us-east-1b-2 - 集群资源带大量
kops.k8s.io/*前缀的注解与标签,比如kops.k8s.io/instancegroup标识节点所属实例组 - kube-system命名空间下运行kops专属的kops-controller、dns-controller组件
- 部署配置默认存放在节点
/etc/kubernetes/kops/路径下
- 一般部署在公有云环境,节点命名默认带可用区、实例组标识,格式类似
- kubeadm
- 无专属强标识标签,排除上述四种工具后即可判定为kubeadm部署
- 核心判定依据:kube-system命名空间下存在名为
kubeadm-config的ConfigMap,执行kubectl get cm kubeadm-config -n kube-system可查询到即确认 - 所有控制平面核心组件(kube-apiserver、kube-controller-manager、kube-scheduler、etcd)均以静态Pod形式存放在
/etc/kubernetes/manifests/路径下 - 无绑定预装的第三方网络、存储组件,节点命名无固定规则,一般为用户自定义主机名
排查优先级建议:先查节点的
instance-type标签,大部分工具会主动打这个标识,10秒就能出结果;标签没命中的话再查系统Pod和节点进程,最后核对配置文件路径,基本不会出现误判。
内容的提问来源于stack exchange,提问作者YoMar
相关产品推荐
相关产品推荐

