【云原生 Kubernetes】基于 Minikube 搭建第一个k8s集群
一、前言
对于k8s来说,搭建方式有多种,如果是生产环境,一般来说,至少需要3台节点确保服务的高可用性,常用的搭建方式列举如下(提供参考):
kubeadm搭建(推荐)
一个K8s部署工具,提供kubeadm init和kubeadm join ;
用于快速搭建k8s集群,比较推荐(也是官方推荐的方式);
二进制包搭建
- github下载发行版二进制包,手动部署每个组件, 组成Kubernetes集群 ;
- 步骤繁琐,可能会踩很多坑;
Minikube搭建
- 是一种轻量化的Kubernetes集群 ;
- k8s社区为了帮助开发者和学习者能够更好学习和体验k8s功能而推出的;
- 使用个人PC虚拟化环境,或者低配的云服务器就可以快速构建启动单节点k8s 集群;
其他方式
- 青云等其他厂商提供的一站式部署解决方案;
二、Minikube 介绍
Minikube 是一种轻量化的Kubernetes集群,是k8s社区为帮助开发者和学习者能够更好学习和体验k8s功能而推出的,使用个人PC虚拟化环境,或者低配的云服务器就快速构建启动单节点k8s,同时,在使用上来说,其命令的操作基本上与集群模式下没有太大差异。
三、机器准备
阿里云(腾讯云) CentOS 7.x ,2核4g(至少,本篇操作的服务器为4核8G的配置);
四、安装步骤
在正式安装Minikube之前,需要确保当前服务器已经安装了docker;
为了便于后续的操作和演示,这里再对docker的搭建流程做下总结;
docker 安装过程
1、 安装和配置yml源
yum install -y yum-utils device-mapper-persistent-data lvm2
2、 配置阿里云镜像
不设置的话,后面拉取镜像的时候可能会比较慢,建议设置一下;
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、查看当前系统可安装的docker版本
yum list docker-ce --showduplicates | sort -r
4、安装docker
根据上一步的结果,选择合适的版本进行安装
yum -y install docker-ce-20.10.21-3.el7
5、 查看docker版本
6、设置开机启动
也可以不设置
systemctl enable docker.service
7、启动docker并查看状态
systemctl start docker
#查看docker 启动状态
systemctl status docker
Minikube 安装过程
1、配置镜像源
配置阿里云镜像源
cat > /etc/yum.repos.d/kubernetes.repo
2、安装kubectl
yum install -y kubectl-1.18.0
安装过程
3、安装minikube
这个过程可能有点慢,需要耐心等待一会儿;
4、检查minikube是否安装成功
minikube version
看到下面的显示说明安装成功
5、启动minikube
minikube start --image-mirror-country='cn' --driver=docker --force
这个过程在初次启动的时候可能有点长,需要耐心等待一会,看到下面的内容说明启动成功,接下来就可以使用k8s的常用命令了;
6、查看集群状态
kubectl cluster-info
7、查看集群节点信息
kubectl get pod -A
五、基于k8s单节点集群部署nginx应用
通过上面的操作,完成了一个基于minikube搭建的一个单节点的k8s集群,接下来,我们将基于minikube单节点部署一个nginx应用,并能够通过公网访问;
安装下面的操作执行;
1、创建deployment
deployment是Pod控制器的一种(在上一篇组件中有详细的说明),通过deployment创建的pod, 如果删除pod后,还会自动创建新的pod,需要删除deployment才可以真正删除pod;
使用下面的命令创建一个nginx的deployment(版本可以根据自己的需要即可)
kubectl create deployment test-nginx --image=nginx:1.23.0
2、查看上面创建的deployment
kubectl get deployment,pod,svc
这里的写法比较灵活,也可以写成: kubectl get deploy
3、暴露80端口(nginx客户端默认端口)
kubectl expose deployment test-nginx --port=80 --type=NodePort
这时候再次查看时,可以发现service那一层就多出来了一个NodePort,而这个NodePort产生的IP就是对外的一个访问入口;
4、配置端口转发
kubectl port-forward --address 0.0.0.0 service/test-nginx 80:80
kubectl port-forward 转发一个本地端口到 Pod 端口,不会返回数据,上面的命令的意思就是允许所有的IP地址进行访问,映射到k8s集群中上面启动的这个test-nginx服务上面来;
5、客户端浏览器进行访问
如果是阿里云服务器,请提前在网络安全组开放80端口限制
接下来在客户端的浏览器打开nginx,看到如下界面说明通过上面部署的nginx就可以正常使用了