一个 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 run
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
这似乎是由于current-context: minikube
在 k8s 配置文件中
然后再次挂载认证文件,运行成功。
现在,我可以在挂载时调用kubectl get pods
命令或otherwise
操作容器外部的集群-v /root/.kube/config:/root/.kube/config -v /root/.minikube/:/root/.minikube/
,但是,这不适用于由kubeadm or otherwise
.
但是我希望能够以统一的方式将所需的配置文件等挂载到容器中,以便我可以使用相同的命令来操作可能由or或 or创建的 k8s 集群minikube
rancher k3s
kubeadm
综上所述,我想为k8s集群的所有情况挂载一套统一的文件或目录,比如-v file: file -v dir:dir
,实现对以任何方式创建的k8s集群的操作,比如获取pod状态,创建,删除各种类型的资源等等
我需要有在k8s上操作的最大权限
有人可以告诉我我需要做什么吗?