今天尝试安装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
按官方的意思
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
最终