1. minikube 多集群运行
kvm2 驱动依赖 kvm 环境。
1.1. CentOS/Redhat 安装 KVM 环境
判读主机是否支持虚拟化
cat /proc/cpuinfo | egrep '(vmx|svm)'
安装核心软件包安装
yum install kvm libvirt python-virtinst qemu-kvm virt-viewer bridge-utils qemu-img virt-manager libvirt libvirt-python libvirt-client
验证内核模块是否加载:
lsmod | grep kvm
启动虚拟机管理接口服务:
systemctl start libvirtd
或
/etc/init.d/libvirtd start
设置开机启动:
chkconfig libvirtd on
或
systemctl enable libvirtd
启动libvirtd后,会自动创建了一个网卡,并启动 dnsmasq 服务,用来为虚拟机分配IP地址
1.2. 安装 Kubernetes 多集群
使用 kvm2 驱动安装 kubernetes 集群不能使用 root 用户,需要切换到普通用户只执行。
创建普通用户
useradd minikube
usermod -G libvertd minikube
配置 sudo 权限
visudo 添加
minikube ALL=(ALL) NOPASSWD: ALL
#!/bin/bash -x
VERSION=$1
if [ $VERSION = "v1.19" ];then
if [ -f /usr/local/bin/minikube-v1.19.0 ];then
echo "/usr/local/bin/minikube-v1.19.0 already exist."
else
curl -Lo minikube-v1.19.0 https://github.com/kubernetes/minikube/releases/download/v1.19.0/minikube-linux-amd64 && chmod +x minikube-v1.19.0 && sudo mv minikube-v1.19.0 /usr/local/bin/
fi
minikube-v1.19.0 start -p k8s-v1.19.16 --kubernetes-version v1.19.16 \
--registry-mirror=https://registry.docker-cn.com \
--image-mirror-country=cn \
--driver=kvm2 \
--extra-config=kubelet.cgroup-driver=systemd \
--cni=calico
minikube-v1.19.0 -p k8s-v1.19.16 image load registry.cn-hangzhou.aliyuncs.com/google_containers/node:v3.14.1
minikube-v1.19.0 -p k8s-v1.19.16 image load registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controllers:v3.14.1
minikube-v1.19.0 -p k8s-v1.19.16 image load gcr.io/k8s-minikube/storage-provisioner:v5
minikube-v1.19.0 -p k8s-v1.19.16 ssh sudo docker tag gcr.io/k8s-minikube/storage-provisioner:v5 registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-minikube/storage-provisioner:v5
elif [ $VERSION = "v1.20" ];then
if [ -f /usr/local/bin/minikube-v1.20.2 ];then
echo "/usr/local/bin/minikube-v1.20.2 already exist."
else
curl -Lo minikube-v1.20.0 https://github.com/kubernetes/minikube/releases/download/v1.20.0/minikube-linux-amd64 && chmod +x minikube-v1.20.0 && sudo mv minikube-v1.20.0 /usr/local/bin/
fi
minikube-v1.20.0 start -p k8s-v1.20.2 --kubernetes-version v1.20.2 \
--registry-mirror=https://registry.docker-cn.com \
--image-mirror-country=cn \
--driver=kvm2 \
--extra-config=kubelet.cgroup-driver=systemd \
--cni=calico
elif [ $VERSION = "v1.13" ];then
if [ -f /usr/local/bin/minikube-v1.13.0 ];then
echo "/usr/local/bin/minikube-v1.13.0 already exist."
else
curl -Lo minikube-v1.13.0 https://github.com/kubernetes/minikube/releases/download/v1.13.0/minikube-linux-amd64 && chmod +x minikube-v1.13.0 && sudo mv minikube-v1.13.0 /usr/local/bin/minikube-v1.13.0
fi
minikube-v1.13.0 start -p k8s-v1.13.9 --kubernetes-version v1.13.9 \
--registry-mirror=https://registry.docker-cn.com \
--image-mirror-country=cn \
--driver=kvm2 \
--extra-config=kubelet.cgroup-driver=systemd \
--cni=calico
# calico use label
kubectl label node k8s-v1.13.9 kubernetes.io/os=linux
else
echo "not support"
fi
1.3. 使用查看
- 查看启动的虚拟机列表
$ sudo virsh list
Id 名称 状态
----------------------------------------------------
10 k8s-v1.13.9 running
12 k8s-v1.20.2 running
14 k8s-v1.19.16 running
15 k8s-v1.18.20 running
- 查看 kubernets 集群
$ kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
k8s-v1.13.9 k8s-v1.13.9 k8s-v1.13.9
* k8s-v1.18.20 k8s-v1.18.20 k8s-v1.18.20 default
k8s-v1.19.16 k8s-v1.19.16 k8s-v1.19.16 default
k8s-v1.20.2 k8s-v1.20.2 k8s-v1.20.2 default
- 切换 Kubrnetes 集群
$ kubectl config use-context k8s-v1.20.2
Switched to context "k8s-v1.20.2".
$ kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-v1.20.2 Ready control-plane,master 6h4m v1.20.2