使用Minikube部署Kubernetes环境
1. Minikube简介
Minikube是一个轻量级的Kubernetes实现,它在本地运行一个Kubernetes集群,可以是单节点或者集群环境,主要用于开发和测试。Minikube支持Kubernetes的所有主要功能,包括Dashboard、DNS、容器运行时(如Docker、containerd、CRI-O)等。
主要功能:
- 快速启动本地Kubernetes集群
- 支持多种容器运行时
- 集成Kubernetes Dashboard
- 提供内置的加载均衡器和Ingress控制器
- 支持持久化存储卷
2. 安装Minikube
2.1 环境要求
- 操作系统:Linux, macOS, Windows
- 最低配置:2 CPUs, 2GB 内存, 20GB 磁盘空间
- 互联网连接
- 容器或者虚拟化管理器: Docker, QEMU, Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, or VMware Fusion/Workstation
2.2 安装步骤
以lx86架构的linux环境为例,更多的安装选项参考:minikube start | minikube (k8s.io)
-
下载Minikube二进制文件:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
-
安装Minikube:
sudo install minikube-linux-amd64 /usr/local/bin/minikube
3. 启动集群
3.1 启动Minikube
启动Minikube非常简单,只需运行以下命令:
minikube start
如果minikube启动失败,可以参考Drivers | minikube (k8s.io)安装一个虚拟机或容器环境。
集群启动成功后,创建了一个当前最新的单节点K8S 1.30版本的集群:
test@ubuntu-svr:~$ kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
minikube Ready control-plane 31m v1.30.0 192.168.49.2 <none> Ubuntu 22.04.4 LTS 5.15.0-107-generic docker://26.1.1
test@ubuntu-svr:~$ kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-7db6d8ff4d-8c7h8 1/1 Running 0 4m33s
kube-system coredns-7db6d8ff4d-xmd7b 1/1 Running 0 4m33s
kube-system etcd-minikube 1/1 Running 0 4m47s
kube-system kube-apiserver-minikube 1/1 Running 0 4m47s
kube-system kube-controller-manager-minikube 1/1 Running 0 4m47s
kube-system kube-proxy-c6jdl 1/1 Running 0 4m33s
kube-system kube-scheduler-minikube 1/1 Running 0 4m47s
kube-system storage-provisioner 1/1 Running 0 4m46s
备注:
官方建议使用非root用户启动集群,如果要使用root运行,需要加
--force
如果拉取镜像失败,可以通过设置代理服务器进行,命令如下:
export HTTP_PROXY=http://<proxy hostname:port> export HTTPS_PROXY=https://<proxy hostname:port> export NO_PROXY=localhost,127.0.0.1,10.96.0.0/12,192.168.59.0/24,192.168.49.0/24,192.168.39.0/24 minikube start
3.2 节点运行说明
本机使用docker作为底层driver,上述创建了一个单节点的k8s集群,该k8s节点运行在docker容器中。minikube所在的宿主机ip为192.168.0.157,docker使用kicbase启动了一个容器作为k8s的节点(ip为192.168.49.2),这种玩法用到了容器嵌套的技术。
test@ubuntu-svr:~$ ip add | grep 192.
inet 192.168.0.157/24 metric 100 brd 192.168.0.255 scope global dynamic ens33
test@ubuntu-svr:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9d565ab58c23 gcr.io/k8s-minik