注意事项:
用minikube搭建k8s环境时,既支持通过虚拟化技术运行,也可以选择不通过虚拟化技术直接运行在服务器上。所以对于一些不支持虚拟化技术的云服务器实例,只能通过后者安装运行k8s,也无须安装KVM或VirtualBox等虚拟化工具,不过还是依赖于Docker环境,所以需要先安装Docker,具体可参考Ubuntu上安装Docker。
Note: Minikube also supports a --vm-driver=none option that runs the Kubernetes components on the host and not in a VM. Using this driver requires Docker and a Linux environment but not a hypervisor. It is recommended to use the apt installation of docker from Docker, when using the none driver. The snap installation of docker does not work with minikube.
1. 安全前准备工作
##hosts绑定
[root@node1 ~]# cat /etc/hosts
127.0.0.1 VM-0-12-centos VM-0-12-centos
127.0.0.1 localhost.localdomain localhost
127.0.0.1 localhost4.localdomain4 localhost4
::1 VM-0-12-centos VM-0-12-centos
::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
172.16.0.12 node1
#禁用swap
[root@node1 ~]#swapoff -a ; sed -i '/fstab/d' /etc/fstab
#更新yum源
[root@node1 ~]#yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#安装docker
[root@node1 ~]#yum install docker-ce -y
[root@node1 ~]#ysystemctl enable docker --now
[root@node1 ~]#cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://frz7i079.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
[root@node1 ~]#systemctl restart docker
2. 安装minikube
[root@node1 ~]#curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
[root@node1 ~]#sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
[root@node1 ~]# minikube version
minikube version: v1.33.1
commit: 5883c09216182566a63dff4c326a6fc9ed2982ff
查看启动状态
$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
3. 安装cri-dockerd
从kubernetes 1.24开始,dockershim已经从kubelet中移除,但因为历史问题docker却不支持kubernetes主推的CRI(容器运行时接口)标准,所以docker不能再作为kubernetes的容器运行时了,即从kubernetesv1.24开始不再使用docker了。
但是如果想继续使用docker的话,可以在kubelet和docker之间加上一个中间层cri-docker。
https://github.com/Mirantis/cri-dockerd/tags 下载cri-dockerd
###安装
[root@node1 ~]#tar zxvf cri-dockerd-0.3.15.tar.gz
[root@node1 ~]#cd cri-dockerd
[root@node1 ~]#cp cri-dockerd /usr/bin
创建启动文件
启动文件从下面链接找到 https://github.com/Mirantis/cri-dockerd/tree/master/packaging/systemd
#cri-docker.service
[root@node1 ~]# cat /usr/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
[root@node1 ~]#cat /usr/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
启动cri-docker并设置开机自动启动
[root@node1 ~]#systemctl daemon-reload ; systemctl enable cri-docker --now
Created symlink from /etc/systemd/system/multi-user.target.wants/cri-docker.service to /usr/lib/systemd/system/cri-docker.service.
[root@node1 ~]# systemctl is-active cri-docker
4. 安装kubectl (可选)
# kubectl安装过程
[root@node1 ~]#curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.30.0/bin/linux/amd64/kubectl
[root@node1 ~]#chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
##配置命令别名,方便操作
[root@node1 ~]# echo 'alias kubectl="minikube kubectl --"' >> /etc/profile
[root@node1 ~]# source /etc/profile
5. 安装、启动K8S集群
[root@node1 ~]# minikube start --driver=none --force --registry-mirror=https://registry.docker-cn.com --kubernetes-version=v1.30.0 --image-mirror-country=cn --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
测试
6. minikube常用命令
# 查看minikube版本
minikube version
# 查看minikube状态
minikube status
# 查看minikube节点信心
minikube node list
# 查看minikube插件
minikube addons list
# 设置dashboard启动
minikube addons enable dashboard
# 停止dashboard
minikube addons disable dashboard
问题
1. 如集群无法调度,可以去除master污点
[root@node1 ~]#kubectl taint nodes node1 node-role.kubernetes.io/control-plane:NoSchedule-
2. 如执行minikube start
出现Unable to pick a default driver. Here is what was considered, in preference ord
问题
使用 minikube start --driver=none