如何从 docker 容器连接到 minikube 集群?

时间:2021-02-06 21:47:30

标签: docker kubernetes kubectl minikube kubeconfig

我有一个正在运行的 minikube 集群。我可以轻松连接到它并使用 kubectl 应用更改。但我想从 docker 容器运行 kubectl。这是 Dockerfile:

FROM alpine:latest

RUN apk --no-cache add curl

# Install and configure kubectl
RUN curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
RUN mkdir -p ~/.local/bin/kubectl
RUN mv ./kubectl ~/.local/bin/kubectl
RUN chmod +x ~/.local/bin/kubectl/ -R

它基本上是一个安装了 alpine 的简单 kubectl 映像。

如何从此容器连接到我的 minikube 集群?

1 个答案:

答案 0 :(得分:2)

我必须将 somevar="spaces or other special characters" somevar2="!@#$%^" another_func() { mkdir -p "$1" } work() { another_func "$somevar" touch "$somevar"/"$somevar2" } ssh user@server 'bash -s' <<EOT $(declare -p somevar somevar2) # transfer variables values $(declare -f work another_func) # transfer function definitions work # call the function EOT ~/.kube 文件夹复制到图像中。这是新的 Dockerfile:

~/.minikube

您可以像这样使用图像:

FROM alpine:latest

RUN apk --no-cache add curl

# Install and configure kubectl
RUN curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
RUN mkdir -p ~/.local/bin/kubectl
RUN mv ./kubectl ~/.local/bin/kubectl
COPY .kube /root/.kube
COPY .minikube /root/.minikube
RUN chmod +r ~/.kube/config
RUN chmod +x ~/.local/bin/kubectl/ -R
WORKDIR /root/.local/bin/kubectl/

注意

docker build . -t USERNAME/kubectl:latest docker run USERNAME/kubectl:latest ./kubectl get pods 文件是为主机系统创建的。因此,您需要更改 .kube/config 文件中的一些路径以指向容器中的 .kube/config 文件夹。

还要注意

.minikube~/.minikube 是巨大的文件夹。将它们添加到您的 docker 构建上下文可能会使您的构建变得非常缓慢。

您可能希望为此目的安装卷。