说明
最近在看《Quick Start Kubernetes》,书上使用的是 Docker Desktop 和 Linode Kubernetes Engine(LKE) 进行演示,但是实际开发中都不可能用到这两个工具,所以本人使用 minikube 进行操作。
系统:WSL Ubuntu 22.0。
安装
curl -LO https://github.com/kubernetes/minikube/releases/latest/download/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
注:
1.安装流程参考:https://minikube.sigs.k8s.io/docs/start
2.某些服务器可能访问不了外部网络,那么先在能访问外部网络的地方下载好二进制文件(下载地址:https://github.com/kubernetes/minikube/releases/),然后再将二进制文件上传到服务器。
启动
- 方式一:使用 root 帐号启动
minikube start
可能会遇到问题:Exiting due to DRV_AS_ROOT:
# minikube start
😄 minikube v1.35.0 on Ubuntu 22.04 (amd64)
✨ Automatically selected the docker driver. Other choices: none, ssh
🛑 The "docker" driver should not be used with root privileges. If you wish to continue as root, use --force.
💡 If you are running minikube within a VM, consider using --driver=none:
📘 https://minikube.sigs.k8s.io/docs/reference/drivers/none/
❌ Exiting due to DRV_AS_ROOT: The "docker" driver should not be used with root privileges.
解决方法:添加 --driver=none:
sudo minikube start --driver=none
可能会继续遇到问题:Exiting due to NOT_FOUND_CRI_DOCKERD:
# minikube start --drive=none
Error: unknown flag: --drive
See 'minikube start --help' for usage.
root@LAPTOP-5PGRQ2IO:/www# minikube start --driver=none
😄 minikube v1.35.0 on Ubuntu 22.04 (amd64)
✨ Using the none driver based on existing profile
👍 Starting "minikube" primary control-plane node in "minikube" cluster
🔄 Restarting existing none bare metal machine for "minikube" ...
🐳 Exiting due to NOT_FOUND_CRI_DOCKERD:
💡 Suggestion:
The none driver with Kubernetes v1.24+ and the docker container-runtime requires cri-dockerd.
Please install cri-dockerd using these instructions:
https://github.com/Mirantis/cri-dockerd
解决方法:安装cri-dockerd:
curl -LO https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.16/cri-dockerd_0.3.16.3-0.ubuntu-jammy_amd64.deb sudo dpkg -i cri-dockerd_0.3.16.3-0.ubuntu-jammy_amd64.deb
最后,再次执行启动命令:
minikube start --driver=none
注:启动需要一定的时间,耐心等待,不要强行结束。
总结
从本次安装 minikube 过程收获两点:
1.搞懂每个命令的作用是什么。例如上面的 curl 是从 github 下载二进制文件,但如果你的网络不行怎么办?那就想办法从其它地方下载这个二进制文件,不必非得按照教程演示的使用 curl 命令。
2.先动起来再完善。例如启动 minikube 的时候会提示“The “docker” driver should not be used with root privileges”,但如果你不用 root 用户去启动,那么你就得花更多的时间解决权限相关的问题。个人认为先把 minikube 跑起来,运行书上的例子,再去考虑其它的。
参考资料
1.docs: https://minikube.sigs.k8s.io/docs/start
2.source code: https://github.com/kubernetes/minikube
欢迎搜索及关注:编程人(a_codists)