centos7虚拟机安装minikube和kubectl

CentOS7虚拟机安装minikube和kubectl




1、理论知识



Minikube提供了一种非常简单的方法来安装单节点的K8S环境。它是一种方便在本地运行Kubernetes的工具,它是可以在 VM 中运行单节点的 Kubernetes 集群,是为了开发或测试在本地启动一个节点的 kubernetes 集群。

理解上面的图,需要注意一个特别关键的概念minikube Vm。minikube启动后,是先创建一个minikube vm,然后在minikube vm中创建一个单节点的k8s集群,就是说创建了一个集群,但是集群很特殊,只有一个节点。

在vmware虚拟机的Centos7 下安装minikube的时候,会使用--vm-driver=none,添加这个参数之后,minikube就不会创建minikubevm了,而会直接在当前系统里安装单节点的k8s集群,因为minikube会将当前的虚拟机当成minikube vm。




安装minikube的过程中,主要步骤包括3个,分别是:安装docker、安装kubectl、安装minikube。

docker是容器引擎,kubernetes是容器管理工具,为了安装minikube学习kubernetes,安装docker是理所应当的。

kubectl是一个kubernetes的命令管理工具,也可以称之为一个kubernetes的一个命令行客户端。它和kubernetes的关系,类似于mysql命令和mysqld数据库服务器的管理,mysql是mysqld的一个命令管理工具,mysqld是数据库引擎。

minikube是缩小版的kubernetes。

知道了这三者的相互关系,也就明白了为啥安装minikube的过程中要依次安装这三个东西。这是安装的理论知识。下面的步骤就是实践过程了。


2、安装实践过程




2.1 安装docker-ce。



安装docker的过程省略了,因为我已经在以前装好了。

2.2 安装kubectl。



# 下载二进制包,添加可执行权限,移动到bin目录,
# 因为我是root登录的所以是/usr/bin,其他用户登录是/usr/local/bin
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/amd64/kubectl 
chmod +x ./kubectl &&\
mv ./kubectl /usr/bin/kubectl

kubectl是否安装成功,这么验证:

[root@bogon minikube]# kubectl version --client
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.0", GitCommit:"c2b5237ccd9c0f1d600d3072634ca66cefdf272f", GitTreeState:"clean", BuildDate:"2021-08-04T18:03:20Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"linux/amd64"}
[root@bogon minikube]# 

2.3 安装minikube。



wget https://github.com/kubernetes/minikube/releases/download/v1.7.3/minikube-linux-amd64
mv minikube-linux-amd64 minikube
chmod +x minikube
mv minikube /usr/bin/


2.4 启动minikube




启动minikube之前,要对系统做一些设置。


首先,要将虚拟机关闭,重新设置虚拟机的内存和cpu核数,内存至少4G,cpu设置为2核。


第二,设置防火墙为 Iptables 并设置空规则。因为centos7默认的防火墙是firewalld,所以要先关闭firewalld,然后安装iptables,并设置清空其规则。

//关闭默认自带防火墙:
systemctl stop firewalld && systemctl disable firewalld

//安装iptables管理工具,并清空规则:
yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save

第三,关闭selinux
//下面命令先关闭selinux,然后从selinux的配置文件中设置它为永久关闭。
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

第四,关闭swap

//下面的命令是将/etc/fstab中swap的哪一行注释掉,就是给哪一行最前面加个#
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

第五,调整内核参数

cat > kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0 # 禁止使用 swap 空间,只有当系统 OOM 时才允许使用它
vm.overcommit_memory=1 # 不检查物理内存是否够用
vm.panic_on_oom=0 # 开启 OOM
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF

//调用配置:
cp kubernetes.conf /etc/sysctl.d/kubernetes.conf && sysctl -p /etc/sysctl.d/kubernetes.conf

第六,启动

minikube有2种启动驱动:虚拟机程序启动和裸机启动(也被称为none驱动程序启动)

  • 虚拟机程序启动。
    minikube依赖虚拟机运行。如果是在物理机上安装的minikube,则官方推荐使用libvirt v1.3.1+、qemu-kvm v2.0+或VirtualBox 5.2+等虚拟机来启动minikube。
  • 裸机启动(也被称为none驱动程序启动)。
    如果安装minikube的时候是在Vmware等虚拟机中安装的,那么Vmware虚拟机管理程序不允许嵌套虚拟化,则可以使用裸机启动方式,跳过创建其他VM的操作。裸机启动只能单节点部署k8s。
    启动的时候一定要指定--vm-driver=none,表示不采用任何虚拟机驱动而采用裸机启动,也可以说是采用none驱动程序启动。
    裸机启动方式要求minikube以root身份运行,需要带上--registry-mirror参数,指明从docker中国区的镜像下载数据。
    minikube start --vm-driver=none --registry-mirror=https://registry.docker-cn.com

可以设置none为默认驱动程序(裸机启动),那么以后只需要执行minikube start即可正常启动minikube,设置命令:
minikube config set vm-driver none
然后执行:
minikube start --registry-mirror=https://registry.docker-cn.com

minikube start 命令执行后会依次自动执行以下操作:
1)验证minikube运行环境
2)在docker上预加载Kubernates,验证docker
3)下载kubelet、kubeadm(当前实验版本为v1.16)
4)拉取Kubernates镜像
5)启动Kubernates

//启动minikube下载所需镜像,不会用vbox,所以用默认容器驱动启动的:

minikube start --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers \
    --cpus=2 \    # 为虚拟机分配核数
    --memory=4096 \    # 分配内存
    --vm-driver=none


第七,给docker设置阿里云的镜像库。这样docker下载镜像的时候会快一点。

//添加阿里云加速器,如果/etc/docker下没有daemon.json,则新建一个。
cat > /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": [
        "https://registry.docker-cn.com"
    ]
}
EOF
//docker重启后台运行:
service docker restart && systemctl enable docker

minikube start执行成功后,单个节点的k8s集群就建好了。下面就可以用kubectl命令行客户端对k8s集群进行管理了。

2.5 启动之后的基本操作

下面的操作可以分为两类:
1、用minikube对k8s集群的管理性操作
2、kubectl客户端的各种操作,它是对单个集群的访问性操作

# 用minikube对k8s集群的管理性操作:
# 用类似如下命令设置minikube的各种参数
minikube config set memory 4096 # minikube默认情况下仅分配2GB的RAM,需扩内存可使用此命令
# 访问minikube的dashboard 
minikube dashboard # 访问minikube集群中运行的Kubernetes仪表

# 
minikube service hello-minikube # 使用minikube可在浏览器中轻松打开此开放节点

# minikube默认启动一个单节点k8s集群,下面命令可以启动另外一个k8s集群,当然,也是单节点的。
minikube start -p cluster2 # 启动第二个本地集群(注意:裸机启动(本次实验环境)不适用)

# 停止本地集群
minikube stop 

# 删除本地集群
minikube delete 

# kubectl客户端的各种操作,它是对单个集群的访问性操作:
kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.4 --port=8080 # 启动服务器
kubectl get po -A # 查看pod状态
kubectl expose deployment hello-minikube --type=NodePort # 将服务公开为NodePort

参考资料:

1、https://www.cnblogs.com/spll/p/10033316.html,(目前没有用上)
2、https://www.jianshu.com/p/a92425a6c6a6,(提供了一个清晰的步骤)
3、https://developer.aliyun.com/article/221687,(minikube启动的配置有详细说明)
4、https://www.cnblogs.com/harmful-chan/p/12731014.html,(有一个完整的安装步骤,安装过程中主要参考的文档是这个)
5、https://www.cnblogs.com/mengyucloud/p/12244168.html,(启动配置项具有参考意义)
6、https://blog.csdn.net/haohaifeng002/article/details/102478143,(另一个主力参考文档)
7、https://blog.csdn.net/u014636124/article/details/105145674/,(通过这一篇,了解了minikube基本情况)
8、https://www.jianshu.com/p/b10c0d7f7d18,(这一篇文章提供了一点有益的帮助)




posted @   zhangzl419  阅读(2076)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示