【问题标题】:How to generate admin.conf file for kubectl in Docker container如何在 Docker 容器中为 kubectl 生成 admin.conf 文件
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    • 2020-02-02
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    相关资源
    最近更新 更多