Ansible部署单节点k3s集群时遇kube-config无效配置未找到错误
解决Ansible部署k3s集群时的kube-config配置问题
问题排查与修复步骤
1. 指定k3s专属的kubeconfig路径
k3s的kubeconfig默认存储在/etc/rancher/k3s/k3s.yaml,而非通用的~/.kube/config。在Ansible任务中明确指定该路径:
kubernetes.core.k8s: state: present src: deployment.yml kubeconfig: /etc/rancher/k3s/k3s.yaml
由于任务使用了become: yes,root用户默认拥有该文件的读取权限(k3s默认给k3s.yaml设置600权限)。
2. 避免api_key与kubeconfig同时配置
同时提供api_key和kubeconfig会导致模块优先级冲突,直接移除api_key参数,让模块从kubeconfig中自动读取认证信息:
kubernetes.core.k8s: state: present src: deployment.yml kubeconfig: /etc/rancher/k3s/k3s.yaml
3. 验证kubeconfig文件有效性
在目标主机上执行以下命令,确认kubeconfig可用:
kubectl --kubeconfig /etc/rancher/k3s/k3s.yaml get nodes
如果命令返回节点信息,说明文件正常;若失败,可重启k3s服务或重新安装k3s以生成正确的kubeconfig。
4. 指定kubeconfig上下文(可选)
若kubeconfig包含多个上下文,需明确指定默认上下文:
kubernetes.core.k8s: state: present src: deployment.yml kubeconfig: /etc/rancher/k3s/k3s.yaml context: default
可通过以下命令确认上下文名称:
kubectl config get-contexts --kubeconfig /etc/rancher/k3s/k3s.yaml
5. 明确本地deployment文件路径
确保Ansible能正确读取本地的deployment.yml,使用playbook_dir变量指定绝对路径:
kubernetes.core.k8s: state: present src: "{{ playbook_dir }}/deployment.yml" kubeconfig: /etc/rancher/k3s/k3s.yaml
内容的提问来源于stack exchange,提问作者HochWieBreit
相关产品推荐
相关产品推荐

