珂珂的个人博客 - 一个程序猿的个人网站

PVE 中LXC的Ubuntu安装minikube

今天尝试安装minikube,系统环境是pve用Lxc虚拟的ubuntu 22.04,中间遇到一些问题,记录一下

按官方minikube start | minikube (k8s.io)  可能需要魔法

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

发现没curl...那么先 apt install curl 但又报错

那么先执行下apt update 就可以了

然后执行

install minikube-linux-amd64 /usr/local/bin/minikube

很快执行完没输出....按我理解应该不会很快,后面了解到执行 minikube start 的时候才会去一系列动作

然后执行

minikube start

不出意外报错了...

提示不能用root运行,那么加上 --driver=none然后又报缺少conntrack

那么先apt install conntrack  

这个安装倒是顺利

然后又报缺少crictl

这个好像不能apt install

那么先去https://github.com/kubernetes-sigs/cri-tools/releases 下载crictl-v1.31.0-linux-amd64.tar.gz

然后将其解压到 /usr/local/bin下,可以用ssh 直接放windows解压后的crictl 文件到此目录,也可以用命令

sudo tar zxvf crictl-v1.31.0-linux-amd64.tar.gz -C /usr/local/bin

可能还需要加执行权限chmod +x /usr/local/bin/crictl

然后crictl --version

好像还需要安装个kubectl?

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

sudo mv ./kubectl /usr/local/bin/kubectl

测试

kubectl version --client

然后执行

minikube start --vm-driver=none --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers

又报缺少缺少cri-dockerd

Releases · Mirantis/cri-dockerd (github.com) 这里下载cri-dockerd-0.3.14.amd64.tgz

同理放在/usr/local/bin 下

然后又报缺少containernetworking-plugins

Releases · containernetworking/plugins (github.com) 这里下载cni-plugins-linux-amd64-v1.5.1.tgz

按官方的意思

FAQ | minikube (k8s.io)

CNI_PLUGIN_VERSION="<version_here>"
CNI_PLUGIN_TAR="cni-plugins-linux-amd64-$CNI_PLUGIN_VERSION.tgz" # change arch if not on amd64
CNI_PLUGIN_INSTALL_DIR="/opt/cni/bin"

curl -LO "https://github.com/containernetworking/plugins/releases/download/$CNI_PLUGIN_VERSION/$CNI_PLUGIN_TAR"
sudo mkdir -p "$CNI_PLUGIN_INSTALL_DIR"
sudo tar -xf "$CNI_PLUGIN_TAR" -C "$CNI_PLUGIN_INSTALL_DIR"
rm "$CNI_PLUGIN_TAR"

我解压后放到了/opt/cni/bin 下,这个目录需要新建

然后运行minikube start 又报

X Exiting due to RT_DOCKER_MISSING_CRI_DOCKER_NONE: sudo systemctl enable cri-docker.socket: exit status 1

解决方法

创建cri-docker.service配置文件

vi /lib/systemd/system/cri-docker.service

复制以下内容

[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket

[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

StartLimitBurst=3

StartLimitInterval=60s

LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity

TasksMax=infinity
Delegate=yes
KillMode=process

[Install]
WantedBy=multi-user.target

创建cri-docker.socket配置文件

vi /lib/systemd/system/cri-docker.socket

复制以下内容

[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service

[Socket]
ListenStream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker

[Install]
WantedBy=sockets.target

启动

systemctl daemon-reload
systemctl start docker.service
systemctl enable cri-docker
systemctl status docker.service

最后再执行

minikube start --image-mirror-country=cn --driver=none

我这里魔法后用--image-mirror-country=cn或者上面的阿里云都很慢。。直接去掉反而快了。

但还是有错

运行kubectl get po -A

报错


过了一夜,怀疑是不是不能在LXC中安装,于是又尝试在完整的ubuntu server中安装

过程和上面差不多,有报过

* Exiting due to NOT_FOUND_DOCKERD: 

* Suggestion: 

    The none driver with Kubernetes v1.24+ and the docker container-runtime requires dockerd.

但是看

docker --version 又有输出Docker version 24.0.5, build ced0996

最终确定是没有安装docker ...因为我这个ubuntu虚拟机是从别的地方备份还原的,结合以上docker --version以为安装过

这个dockerd 是docker 守护进程Docker daemon,起初还以为是另一个软件

安装docker 

apt install docker.io

systemctl start docker

systemctl status docker

最终


上一篇:个人代码全部开源

下一篇:PVE 中LXC的Ubuntu安装minikube


0 评论

查看所有评论

给个评论吧