Kubernetes Ansible shell模块执行kubectl错误连接到本地主机被拒绝

Kubernetes Ansible shell模块执行kubectl错误连接到本地主机被拒绝,kubernetes,ansible,kubectl,Kubernetes,Ansible,Kubectl,我有一个ansible脚本,用于构建kubernetes集群。如果我通过shell模块运行kubectl: - name: Ensure kube-apiserver-to-kubelet ClusterRole is applied shell: "kubectl apply -f kube-apiserver-to-kubelet.yaml" delegate_to: controller1 run_once: true 我收到以下错误“与服务器localhost:8080的连

我有一个ansible脚本,用于构建kubernetes集群。如果我通过shell模块运行
kubectl

- name: Ensure kube-apiserver-to-kubelet ClusterRole is applied
  shell: "kubectl apply -f kube-apiserver-to-kubelet.yaml"
  delegate_to: controller1
  run_once: true
我收到以下错误“与服务器localhost:8080的连接被拒绝-是否指定了正确的主机或端口?”:

但是,如果我登录到
controller1
(我使用堡垒主机作为节点的代理。)并执行它运行时没有发出的命令:

kubectl apply -f kube-apiserver-to-kubelet.yaml
clusterrole.rbac.authorization.k8s.io "system:kube-apiserver-to-kubelet" configured
clusterrolebinding.rbac.authorization.k8s.io "system:kube-apiserver" configured

为什么这直接在节点上工作,而不是通过ansible,我需要做什么才能使此运行不失败?

它可能无法获取您的kubeconfig(localhost:8080是未配置的默认设置)


我要么使用内置的“k8s_raw”模块,要么在shell脚本中指定--kubeconfig参数。我也用
--kubeconfig
标志进行了尝试。不过,我还没有将控制器配置为使用kubeconfig。也许我需要做更多的调查。你确实需要某种方式来向Kubernetes进行身份验证,而kubeconfig是“默认”方式。也就是说,如果不了解更多关于你的env的信息,就很难提供指导。当添加
--kubeconfig=/home/ubuntu/.kube/config
时,这一点对我很有效。命令的完整版本:
shell:kubectl--kubeconfig=/home/dialog/.kube/config-n kube-system-get-configmap/kube-proxy-o yaml
kubectl apply -f kube-apiserver-to-kubelet.yaml
clusterrole.rbac.authorization.k8s.io "system:kube-apiserver-to-kubelet" configured
clusterrolebinding.rbac.authorization.k8s.io "system:kube-apiserver" configured