在Linux中使用minikube
Minikebe
Minikube是一个轻量级Kubernetes实现,它在本地机器上创建一个VM,并部署一个只包含一个节点的简单集群。
Minikube使用Docker机器来管理Kubernetes VM,因此它得益于Docker机器使用的驱动程序插件架构,该架构提供了一种一致的方式来管理各种VM提供者。Minikube嵌入了VirtualBox和VMware Fusion驱动程序,因此不需要额外的步骤来使用它们。但是,其他驱动程序需要在主机路径中提供额外的二进制文件。
先决条件:
1. 系统支持虚拟化技术
2. 已安装配置KVM2或Virtualbox
3. 已安装Docker(Docher CE 或 Docker EE)
--KVM2 Driver
KVM2安装(KVM2需要安装libvirt 1.3.1或更高版本和qemu-kvm)
- Debian or Ubuntu 18.x:
sudo apt install libvirt-clients libvirt-daemon-system qemu-kvm
- Ubuntu 16.x or older:
sudo apt install libvirt-bin libvirt-daemon-system qemu-kvm
- Fedora/CentOS/RHEL:
sudo yum install libvirt-daemon-kvm qemu-kvm
- openSUSE/SLES:
sudo zypper install libvirt qemu-kvm
检查virsh版本: virsh --version
若版本高于1.3.1则可下载预构造的KVM2 driver
curl -LO https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-kvm2 \ && sudo install docker-machine-driver-kvm2 /usr/local/bin/
#查看kvm driver版本 docker-machine-driver-kvm2 version
--安装Docker
yum install docker -y
--安装minikube 1.2.0
curl -L minikube https://storage.googleapis.com/minikube/releases/v1.2.0/minikube-linux-amd64 -o /usr/local/bin/minikube
--安装kubectl 1.15.0
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.15.0/bin/linux/amd64/kubectl -o /usr/local/bin/kubectl
--启动libvirtd服务
systemctl enable libvirtd.service systemctl start libvirtd.service systemctl status libvirtd.service #将当前用户加入libvirt组 usermod -a -G libvirt $(whoami) #切换用户有效组 newgrp libvirt
--启动minikube
minikube start --vm-driver=kvm2 #可将kvm2设置为默认driver minikube config set vm-driver kvm2
#我的启动输出,为了出现不必要麻烦,我使用root安装的 [root@oc1657727366 ~]# minikube start --vm-driver=kvm2 😄 minikube v1.2.0 on linux (amd64) ⚠️ Please don't run minikube as root or with 'sudo' privileges. It isn't necessary. 🔥 Creating kvm2 VM (CPUs=2, Memory=2048MB, Disk=20000MB) ... 🐳 Configuring environment for Kubernetes v1.15.0 on Docker 18.09.6 💾 Downloading kubeadm v1.15.0 💾 Downloading kubelet v1.15.0 🚜 Pulling images ... 🚀 Launching Kubernetes ... ⌛ Verifying: apiserver proxy etcd scheduler controller dns 🏄 Done! kubectl is now configured to use "minikube" #查看minikube状态 [root@oc1657727366 ~]# minikube status host: Running kubelet: Running apiserver: Running kubectl: Correctly Configured: pointing to minikube-vm at 192.168.39.42
--minikube使用
#创建一个名为my-nginx的deployment [root@oc1657727366 ~]# kubectl create deployment --image=nginx my-nginx deployment.apps/my-nginx created #查看pod列表 [root@oc1657727366 ~]# kubectl get pods NAME READY STATUS RESTARTS AGE my-nginx-f969cff84-kcc49 1/1 Running 0 6m21s #查看已建立的deployment [root@oc1657727366 ~]# kubectl get deployment NAME READY UP-TO-DATE AVAILABLE AGE my-nginx 1/1 1 1 7m19s #扩展nginx pod数量到两个 [root@oc1657727366 ~]# kubectl scale deployment --replicas 2 my-nginx deployment.extensions/my-nginx scaled #再次查看pod列表 [root@oc1657727366 ~]# kubectl get pods NAME READY STATUS RESTARTS AGE my-nginx-f969cff84-c92vj 1/1 Running 0 9s my-nginx-f969cff84-kcc49 1/1 Running 0 9m28s
#通过minikube打开dashboard [root@oc1657727366 ~]# minikube dashboard 🤔 Verifying dashboard health ... 🚀 Launching proxy ... 🤔 Verifying proxy health ... 🎉 Opening http://127.0.0.1:43575/api/v1/namespaces/kube-system/services/http:kubernetes-dashboard:/proxy/ in your default browser... START /usr/bin/google-chrome-stable "http://127.0.0.1:43575/api/v1/namespaces/kube-system/services/http:kubernetes-dashboard:/proxy/" [18070:18070:0717/193410.832958:ERROR:zygote_host_impl_linux.cc(89)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.
--其他
# 查看集群的所有资源 kubectl get all kubectl get all -o wide # 进入节点服务器 minikube ssh # 执行节点服务器命令,例如查看节点 docker info minikube ssh -- docker info # 删除集群 minikube delete # 关闭集群 minikube stop
#进入节点服务器后可以查看当前docker服务,开启容器交互模式终端 [root@oc1657727366 ~]# minikube ssh _ _ _ _ ( ) ( ) ___ ___ (_) ___ (_)| |/') _ _ | |_ __ /' _ ` _ `\| |/' _ `\| || , < ( ) ( )| '_`\ /'__`\ | ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )( ___/ (_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____) $ who am i docker pts/0 Jul 17 12:04 (192.168.39.1) $ ip add|grep 'inet ' inet 127.0.0.1/8 scope host lo inet 192.168.122.246/24 brd 192.168.122.255 scope global dynamic eth0 inet 192.168.39.42/24 brd 192.168.39.255 scope global dynamic eth1 inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 $ uname -r 4.15.0 $ cat /etc/os-release NAME=Buildroot VERSION=2018.05.3 ID=buildroot VERSION_ID=2018.05.3 PRETTY_NAME="Buildroot 2018.05.3" $ docker ps $ docker exec -it e86496c07070 /bin/bash
参考网站:
https://github.com/kubernetes/minikube/blob/master/docs/drivers.md#kvm2-driver
https://github.com/kubernetes/examples/blob/master/staging/simple-nginx.md
https://xcodest.me/minikube.html