目录
前言
最近想学习一下Kubernetes,然后发现Kubernetes整体架构太复杂了,对新手入门比较困难,并且由于是在自己电脑上搭建,各方面性能不足以支撑搭建一个完整的服务,在查阅网上信息后发现了一个最适合单机版的方案 -- Minikube,可以方便的在本机用虚拟机创建一个开箱即用的Kubernetes集群,所以决定就是它了,慢慢啃,从基础开始
Kubernetes 是什么?
Kubernetes 是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
Minikube是什么?
Minikube是一种轻量化的Kubernetes集群,是Kubernetes社区为了帮助开发者和学习者能够更好学习和体验k8s功能而推出的,借助个人PC的虚拟化环境就可以实现Kubernetes的快速构建启动。目前已支持在macOS、Linux、Windows平台上利用各类本地虚拟化环境作为驱动运行。
搭建步骤
1、配置要求
-
2核 CPU 及以上
-
2G 空闲的内存
这是搭建测试环境的基本要求
2、安装docker
docker的安装整体比较简单,这里就不详细阐述了,不太清楚的同学可以查看我的另外一篇小笔记
3、安装kubectl
3.1、使用以下命令下载最新版本
curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl"
3.2、使用以下命令安装指定版本
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/amd64/kubectl
如果提示权限不足就在安装命令前加上 sudo 再进行尝试
3.3、使kubectl二进制可执行文件
chmod +x ./kubectl
3.4、将二进制文件移到您的PATH中
sudo mv ./kubectl /usr/local/bin/kubectl
3.5、输出服务端和客户端的版本信息
kubectl version
正常返回如下:
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.0", GitCommit:"9e991415386e4cf155a24b1da15becaa390438d8", GitTreeState:"clean", BuildDate:"2020-03-25T14:58:59Z", GoVersion:"go1.13.8", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.2", GitCommit:"faecb196815e248d3ecfb03c680a4507229c2a56", GitTreeState:"clean", BuildDate:"2021-01-13T13:20:00Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
4、安装Minikube
4.1、创建新用户,配置docker组
因为Minikube不能用root账号启动,得用别的账号,并且需要docker组启动,所以要创建一个新的账号进行操作,这是我在后面踩坑过程,我们就先拉出来放前面解决
创建名称为user的账号
adduser user
设置密码
passwd user
切换用户
将user添加到docker组
sudo usermod -aG docker $USER && newgrp docker
将user添加到docker组也可用下面命令
#创建docker组
sudo groupadd docker
#将您的用户添加到该docker组
sudo usermod -aG docker $USER
#在Linux上,运行以下命令来激活对组的更改
newgrp docker
4.2、安装Minikube
curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.18.1/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
5、启动Minikube
5.1、安装minikube,Docker驱动
minikube start --driver=docker
5.2、安装启动成功示例
[user@localhost /]$ minikube start --driver=docker
* Centos 7.9.2009 上的 minikube v1.18.1
* 根据用户配置使用 docker 驱动程序
X The requested memory allocation of 1996MiB does not leave room for system overhead (total system memory: 1996MiB). You may face stability issues.
* 建议:Start minikube with less memory allocated: 'minikube start --memory=1996mb'
* Starting control plane node minikube in cluster minikube
* Pulling base image ...
* Creating docker container (CPUs=2, Memory=1996MB) ...
> kubectl.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s /
> kubelet: 108.73 MiB / 108.73 MiB [-----------] 100.00% 1.35 MiB p/s 1m21s
- Generating certificates and keys ...
- Booting up control plane ...
- Configuring RBAC rules ...
* Verifying Kubernetes components...
! Executing "docker container inspect minikube --format={{.State.Status}}" took an unusually long time: 2.208853698s
* Restarting the docker service may improve performance.
- Using image registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v4 (global image repository)
* Enabled addons: default-storageclass, storage-provisioner
* kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
5.3、打开Kubernetes控制台
[user@localhost /]$ minikube dashboard
* 正在开启 dashboard ...
- Using image registry.hub.docker.com/kubernetesui/dashboard:v2.1.0
- Using image registry.hub.docker.com/kubernetesui/metrics-scraper:v1.0.4
* 正在验证 dashboard 运行情况 ...
* Launching proxy ...
* 正在验证 proxy 运行状况 ...
* Opening http://127.0.0.1:46420/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...
- http://127.0.0.1:46420/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
5.4、由于我们是部署在服务器上,从外部访问又无法访问服务器的回环地址,因此我们需要做代理,来实现外部访问
[user@localhost /]$ kubectl proxy --port=45396 --address='0.0.0.0' --disable-filter=true --accept-hosts='^.*'
W0826 18:09:53.057028 32947 proxy.go:167] Request filter disabled, your proxy is vulnerable to XSRF attacks, please be cautious
Starting to serve on [::]:45396
代理成功后就可以在外部浏览器使用虚拟机IP加端口号加对应地址进行访问,需要注意的是,这个代理不是后台运行的,不能关闭,关闭后就不能访问了
http://192.168.186.128:45396/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
访问成功
至此,基于本地虚拟机的 Minikube 搭建完毕!
总结
Minikube的搭建环节还比较简单,比较适合新手学习的时候测试用,等后面熟悉了可以再搭建完整版进行学习测试。搭建过程中碰到的问题也不少,但是都可以在网上找到相关的解决方案,只要细心,很快就能完成了呀。后面就是实际的应用环节了,一起加油,耶( •̀ ω •́ )y