【发布时间】:2020-08-18 08:45:34
【问题描述】:
docker容器running on a docker machine instead of a k8s pod如何操作k8s集群。例如,如果我需要在容器内做这样的事情:
kubectl 获取 pod
在我的 dockerfile 中,我安装了 kubectl
RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
RUN chmod +x ./kubectl
RUN sudo mv ./kubectl /usr/local/bin/kubectl
当我运行kubectl get pods时,结果如下:
kubectl get pod
error: no configuration has been provided, try setting KUBERNETES_MASTER environment variable
所以我将config 安装到docker 容器docker runcommand
docker run -v /root/.kube/config:/root/.kube/config my-images
结果如下:
kubectl get pod
Error in configuration:
* unable to read client-cert /root/.minikube/profiles/minikube/client.crt for minikube due to open /root/.minikube/profiles/minikube/client.crt: no such file or directory
* unable to read client-key /root/.minikube/profiles/minikube/client.key for minikube due to open /root/.minikube/profiles/minikube/client.key: no such file or directory
* unable to read certificate-authority /root/.minikube/ca.crt for minikube due to open /root/.minikube/ca.crt: no such file or directory
这似乎是由于 k8s 配置文件中的current-context: minikube
然后再次挂载认证文件,运行成功。
现在,当我挂载-v /root/.kube/config:/root/.kube/config -v /root/.minikube/:/root/.minikube/ 时,我可以调用kubectl get pods 命令或otherwise 操作容器外的集群,但是,这不适用于@987654334 创建的集群挂载 @。
但我希望能够以统一的方式将所需的配置文件等挂载到容器中,以便我可以使用相同的命令 操作k8s集群,可以由minikube或rancher k3s或kubeadm创建
综上,我想为k8s集群的所有情况挂载一套统一的文件或目录,比如-v file: file -v dir:dir,实现在k8s集群以任何方式创建,比如获取pod状态、创建、删除各类资源等
我需要有最大权限才能在k8s上操作
谁能告诉我我需要做什么?
【问题讨论】:
-
您在容器内但在 Kubernetes 之外运行
kubectl的具体用例是什么?在 Kubernetes 中,你会 use a service account;对于像安装部署这样的常规操作,您只需从主机运行kubectl。 -
@DavidMaze docker 容器可以被视为我在 k8s 集群上的项目组件的代理。在前端操作系统之后,将命令发送到docker容器代理,然后解析,最后调用kubectl执行或者其他执行方式。就像创建一个应用组件一样。
标签: docker kubernetes kubectl kubeconfig