【发布时间】:2020-09-03 08:03:47
【问题描述】:
我正在使用 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命令作为我的部署基础设施的一部分(可能隐含在 Helm 图表中),而不是我的容器启动的一部分。您是在 Kubernetes 内部还是在其他地方运行它?您可以从主机运行kubectl,如果可以,它的凭据来自哪里?kubectl的较旧版本是否做得更好(1.10 现在落后了 9 个版本)?
标签: docker kubernetes kubectl