使用minikube部署k8s
Minikube 是一个易于在本地运行 Kubernetes 的工具,可在你的笔记本电脑上的虚拟机内轻松创建单机版 Kubernetes 集群。便于尝试 Kubernetes 或使用 Kubernetes 日常开发。
1 前置条件
- 2 CPUs or more
- 2GB of free memory
- 20GB of free disk space
- Internet connection
- Container or virtual machine manager, such as: Docker, Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, or VMWare
关闭防火墙,selinux
2 安装docker
安装过程本文不再赘述 minikube 安装是需要开启虚拟化支持的,如果不开启,也可以用docker来支持。
Minikube 还支持使用一个
--driver=none
选项,让 Kubernetes 组件运行在主机上,而不是在 VM 中。 使用这种驱动方式需要 Docker 和 Linux 环境,但不需要 hypervisor。
3 安装kubectl
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
chmod +x ./kubectl
mv ./kubectl /usr/local/bin/kubectl
下载失败使用以下命令
curl -Lo kubectl http://rancher-mirror.cnrancher.com/kubectl/v1.18.9/linux-amd64-v1.18.9-kubectl
chmod +x ./kubectl
mv ./kubectl /usr/local/bin/kubectl
4 安装minikube
本文以CentOS7为例,其他机器参考minikube-Installation
4.1 下载minikube
这里使用阿里minikube
curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.13.0/minikube-linux-amd64
chmod +x minikube
sudo mv minikube /usr/local/bin/
5 启动集群
安装conntrack-tools
yum -y install conntrack-tools
启动集群
minikube start --driver=none --registry-mirror=https://registry.docker-cn.com --kubernetes-version=v1.18.9
常见参数
--driver=none
Minikube使用无驱动程序的方式来创建Kubernetes本地环境--registry-mirror=***
为了拉取Docker Hub镜像,需要为 Docker daemon 配置镜像加速,参考阿里云镜像服务--kubernetes-version=***
: minikube 虚拟机将使用的 kubernetes 版本
Minikube利用本地虚拟机环境部署Kubernetes,其基本架构如下图所示。
看到如下内容表示启动成功
6 快速开始
创建一个名为hello-minikube的Deployment,使用e2eteam/echoserver:2.2镜像,暴露8000端口,副本pod数为3
# API 版本号
apiVersion: apps/v1
# 类型,如:Pod/ReplicationController/Deployment/Service/Ingress
kind: Deployment
metadata:
# Kind 的名称
name: hello-minikube
spec:
selector:
matchLabels:
# 容器标签的名字,发布 Service 时,selector 需要和这里对应
app: hello
# 部署的实例数量
replicas: 3
template:
metadata:
labels:
app: hello
spec:
# 配置容器,数组类型,说明可以配置多个容器
containers:
# 容器名称
- name: hello-minikube
# 容器镜像
image: e2eteam/echoserver:2.2
# 只有镜像不存在时,才会进行镜像拉取
imagePullPolicy: IfNotPresent
ports:
# Pod 端口
- containerPort: 8080
执行命令
kubectl apply -f hello.yaml
查看创建的对象
kubectl get deployment
kubectl get po
创建svc,通过Nodeport方式暴露服务
kubectl expose deployment hello-minikube --type=NodePort
查看svc,可以看到NodePort随机分配的端口为30216
kubectl get svc
接下来,在用户操作系统就可以通过minikube虚拟机的ip地址:30216来访问这个hello-minikube svc了,svc会把8080口的请求再负载均衡到实际的hello-minikube pod上。
更方便的,可以使用minikube server
命令直接获取到svc的访问地址:
minikube service hello-minikube --url
测试访问
curl $(minikube service hello-minikube --url)
可以看到,每次的访问请求是都进入不同的pod,与kubectl get po命令所示的pod一致。
删除svc
kubectl delete service hello-minikube
删除deployment
kubectl delete deployment hello-minikube
停止minikube
minikube stop