【发布时间】:2022-08-23 03:00:22
【问题描述】:
我想创建一个集群来在本地尝试 Kubernetes。
我可以在上面创建带有 Ubuntu 的虚拟机,或者购买一些 Raspberry Pi,但我想知道我是否可以使用 Docker 容器来模拟它)。
我的想法是创建一个基于 Ubuntu 的 Docker 镜像,并在那里安装 Kubernetes 和 Docker。
然后我可以启动 4 个运行这个镜像的容器并配置 Kubernetes,其中一个是 Mater,另一个是工人(这应该模拟 4 台运行 Ubuntu 的计算机,上面有 Docker 和 Kubernetes)
我正在关注本教程:https://phoenixnap.com/kb/install-kubernetes-on-ubuntu
到目前为止,我已经下载了 Ubuntu 镜像,并在上面安装了 docker 和 Kubernetes。
但是我无法使用教程中的命令启动 Docker,因为 Ubuntu 容器似乎没有使用 systemd 启动
systemctl status docker
System has not been booted with systemd as init system (PID 1). Can\'t operate.
Failed to connect to bus: Host is down
如果我尝试将其中一个容器分配为 Kubernetes 主服务器,则在不启动 Docker 的情况下,它会失败
kubeadm init --pod-network-cidr=10.244.0.0/16
[init] Using Kubernetes version: v1.24.3
[preflight] Running pre-flight checks
[WARNING Swap]: swap is enabled; production deployments should disable swap unless testing the NodeSwap feature gate of the kubelet
[WARNING SystemVerification]: missing optional cgroups: blkio
error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR CRI]: container runtime is not running: output: time=\"2022-08-16T12:27:18Z\" level=fatal msg=\"unable to determine runtime API version: rpc error: code = Unavailable desc = connection error: desc = \\\"transport: Error while dialing dial unix /var/run/containerd/containerd.sock: connect: no such file or directory\\\"\"
, error: exit status 1
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher
有没有办法获取 Docker 映像(例如:ubuntu)并使其在其上运行 Kubernetes?
这是我用来创建镜像和安装 Kubernetes 和 docker 的 dockerfile
FROM ubuntu:22.04
RUN apt-get update -y
RUN apt install -y gnupg2 curl software-properties-common docker.io
RUN curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add
RUN apt-add-repository \"deb http://apt.kubernetes.io/ kubernetes-xenial main\"
RUN apt-get install -y kubeadm kubelet kubectl
-
对于运行本地 k8s 集群来“尝试”,我强烈建议运行 minikube。您唯一需要的是 WSL2(用于 Windows)或本机 linux。
-
@pavol 说了什么。您实际上是在尝试在 docker 中运行 docker,并附加一层使用 docker 套接字作为 kubernetes 的容器运行时。如果您可以使用 minikube 快速启动单节点 kubernetes 集群,那么完成这项工作所需的设置绝对不值得
-
是的。我已经将 minicube 用于单节点 kubernetes。现在我想模拟一个真实的系统。我可以在我的计算机上运行多个虚拟机来模拟它。但是由于 Docker 的想法是拥有一个独立的自给自足的系统,我认为可以像使用独立的计算机一样使用容器。
-
您还可以将kind 视为一种更明确地支持多个 Kubernetes 节点但仍在本地容器中运行的设置。
标签: docker kubernetes