如何在 Docker 容器中为 kubectl 生成 admin.conf 文件



我正在使用 Linux-amd64 架构的 Docker 容器中本地运行一个项目。启动脚本运行以下命令

kubectl create configmap -o yaml 
--dry-run=true 
--from-file ./configs/local/grafana 
grafana-dashboards-source-config |
kubectl apply -f -

它在我的 MacOS 上运行良好,但在 Docker 容器内运行时,它会失败并出现The connection to the server localhost:8080 was refused - did you specify the right host or port?错误。在在线浏览资源时,许多帖子建议使用这些命令来解决问题

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

但是在我的 Docker 容器中,我找不到/kubernetes目录,因此找不到admin.conf文件。 我在我的 Dockerfile 中使用COPY --from=lachlanevenson/k8s-kubectl:v1.10.3 /usr/local/bin/kubectl /usr/local/bin/kubectl命令来安装 kubectl 并kubectl version --client返回

Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.3", GitCommit:"2bba0127d85d5a46ab4b778548be28623b32d0b0", GitTreeState:"clean", BuildDate:"2018-05-21T09:17:39Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

我想知道在创建 Docker 镜像时安装 kubectl 的正确方法是什么,以便我可以找到kubernetes/admin.conf文件,或者是否有办法在安装 kubectl 后生成它?

如果主要思想是在集群中的容器中使用 kubectl,您可以使用service account来访问 Kubernetes API Server。您通常可以按照以下步骤操作。

  • 在群集上创建具有相关权限的服务帐户
  • 将服务帐户设置为工作负载(部署、有状态集、Pod 等)
  • 将配置映射设置为使用服务帐户(/var/run/secrets/kubernetes.io/serviceaccount/) 此链接可能很有用。

相关内容

  • 没有找到相关文章

最新更新