【云原生 Kubernetes】基于 Minikube 搭建第一个k8s集群

时间:2022-12-21 08:01:44

一、前言

对于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

【云原生 Kubernetes】基于 Minikube 搭建第一个k8s集群

 

4、安装docker

根据上一步的结果,选择合适的版本进行安装

yum -y install docker-ce-20.10.21-3.el7

5、  查看docker版本

【云原生 Kubernetes】基于 Minikube 搭建第一个k8s集群

 

6、设置开机启动

也可以不设置

systemctl enable docker.service

7、启动docker并查看状态

systemctl start docker

#查看docker 启动状态
systemctl status docker

Minikube 安装过程

1、配置镜像源

配置阿里云镜像源

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

【云原生 Kubernetes】基于 Minikube 搭建第一个k8s集群

 

2、安装kubectl

yum install -y kubectl-1.18.0

安装过程 

【云原生 Kubernetes】基于 Minikube 搭建第一个k8s集群

 

3、安装minikube

curl -LO https://storage.googleapis.com/minikube/releases/v1.18.1/minikube-linux-amd64 && sudo install minikube-linux-amd64 /usr/local/bin/minikube

这个过程可能有点慢,需要耐心等待一会儿;

【云原生 Kubernetes】基于 Minikube 搭建第一个k8s集群

 

4、检查minikube是否安装成功

minikube  version

看到下面的显示说明安装成功 

【云原生 Kubernetes】基于 Minikube 搭建第一个k8s集群

 

5、启动minikube

minikube start --image-mirror-country='cn'  --driver=docker --force

这个过程在初次启动的时候可能有点长,需要耐心等待一会,看到下面的内容说明启动成功,接下来就可以使用k8s的常用命令了;

【云原生 Kubernetes】基于 Minikube 搭建第一个k8s集群

 

6、查看集群状态

kubectl cluster-info

【云原生 Kubernetes】基于 Minikube 搭建第一个k8s集群

 

7、查看集群节点信息

kubectl get pod -A

【云原生 Kubernetes】基于 Minikube 搭建第一个k8s集群

 

五、基于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

【云原生 Kubernetes】基于 Minikube 搭建第一个k8s集群

 

2、查看上面创建的deployment

kubectl get deployment,pod,svc

【云原生 Kubernetes】基于 Minikube 搭建第一个k8s集群

 

这里的写法比较灵活,也可以写成: kubectl get deploy

3、暴露80端口(nginx客户端默认端口)

kubectl expose deployment test-nginx --port=80  --type=NodePort

【云原生 Kubernetes】基于 Minikube 搭建第一个k8s集群

这时候再次查看时,可以发现service那一层就多出来了一个NodePort,而这个NodePort产生的IP就是对外的一个访问入口;

【云原生 Kubernetes】基于 Minikube 搭建第一个k8s集群

 

4、配置端口转发

kubectl port-forward  --address 0.0.0.0   service/test-nginx 80:80

kubectl port-forward 转发一个本地端口到 Pod 端口,不会返回数据,上面的命令的意思就是允许所有的IP地址进行访问,映射到k8s集群中上面启动的这个test-nginx服务上面来;

【云原生 Kubernetes】基于 Minikube 搭建第一个k8s集群

 

5、客户端浏览器进行访问

如果是阿里云服务器,请提前在网络安全组开放80端口限制

接下来在客户端的浏览器打开nginx,看到如下界面说明通过上面部署的nginx就可以正常使用了

【云原生 Kubernetes】基于 Minikube 搭建第一个k8s集群