【问题标题】:how to run simple minikube inside docker?如何在 docker 中运行简单的 minikube?
【发布时间】:2021-08-29 12:47:48
【问题描述】:

我正在尝试按照guide 上的说明进行操作,但在 docker 下。

我设置了一个文件夹:

.
├── Dockerfile
└── main.py
0 directories, 2 files

main.py 是:

#!/usr/bin/env python3

print("Docker is magic!")

Dockerfile 是:

FROM python:latest
COPY main.py /
CMD [ "python", "./main.py" ]

FROM python:3.7-alpine
COPY ./ /usr/src/app/
WORKDIR /usr/src/app
RUN apk add curl openssl bash --no-cache
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" \
    && chmod +x ./kubectl \
    && mv ./kubectl /usr/local/bin/kubectl


kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4

kubectl expose deployment hello-node --type=LoadBalancer --port=38080

minikube start --driver=docker

kubectl get pods

当我运行 docker run python-test 时,我在终端中看到:

Docker is magic!

但我没有看到 get pods 输出。

我的目标是在 docker 中运行一个简单的minikube,它只打印 pod 的列表。这里有什么问题?

【问题讨论】:

    标签: docker kubernetes minikube


    【解决方案1】:

    如果你想在 docker 容器中使用 kubernetes,我的建议是使用 k3d。

    k3d 是在 docker.k3d 中运行 k3s(Rancher Lab 的最小 Kubernetes 发行版)的轻量级包装器,使得在 docker 中创建单节点和多节点 k3s 集群变得非常容易,例如用于 Kubernetes 上的本地开发。

    您可以通过 Docker 直接下载、安装和使用它。 更多信息可以关注https://k3d.io/的官方文档。

    要获取 pod 列表,您不需要在 docker 容器内创建 k8s 集群。 您需要的是任何 k8s 集群的配置文件 . ├── Dockerfile ├--配置 └── main.py 0个目录,3个文件

    之后:

    FROM python:latest
    COPY main.py /
    CMD [ "python", "./main.py" ]
    
    FROM python:3.7-alpine
    COPY ./ /usr/src/app/
    WORKDIR /usr/src/app
    RUN apk add curl openssl bash --no-cache
    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" \
        && chmod +x ./kubectl \
        && mv ./kubectl /usr/local/bin/kubectl
    
    COPY config ~/.kube/config
    # now if you execute k get pods you can get the list of pods
    #Example;
    RUN kubectl get pods 
    
    

    要获取此文件配置,您可以点击此链接Organizing Cluster Access Using kubeconfig Files

    希望能帮助您解决问题。

    【讨论】:

    • 谢谢,但我不确定我是否了解如何使用它。您能否举例说明如何在我在问题中使用的简单 docker 中启动它?
    • 我明白你想要什么,要从集群中获取 pod 列表,你只需要 kubernetes 配置文件和 kubectl,之后你可以在容器中运行它并获取 pod 列表,我'将更新我的详细回复
    • 投资,但是这里的 k3s 命令在哪里?我不需要先用k3s启动集群吗?这就是我所缺少的。我正在启动一个空的 docker,我想在其中创建一个小的 k8s 环境。当我启动它时什么都不存在......
    • 确保你复制了正确的 kubeconfig 文件,例如我现在连接到一个特定的集群并且工作正常,我只是复制这个文件并在它上面创建一个 Dockerfile,它工作正常因为,kubectl 需要的是 kubeconfig 文件,只有这样他才能访问你的 k8s 集群。
    • 但这是我不想连接到现有集群的问题我希望它用于单元测试以在本地运行,所以我希望每次 docker 运行时启动一个小 pod 和只是运行一个虚拟的东西。因此,例如,我希望 docker 启动一个 clsuter,创建一个 pod,然后打印 pod 列表并终止集群
    猜你喜欢
    • 1970-01-01
    • 2020-01-06
    • 2021-11-08
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 2018-06-27
    • 1970-01-01
    相关资源
    最近更新 更多