如何解决如何在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 -
在我的MacO上运行良好,但是在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/),此link可能会有用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。