Kubernetes学习环境难搭建?Mac笔记本上安装一个!
共 6785字,需浏览 14分钟
·
2020-12-23 09:57
要学习Kubernetes技术,先决条件是得有一个实验环境,虽然在之前的文章中给大家介绍过如何安装部署一个Kubernetes(具体可参考<<如何部署一个Kubernetes集群>>),但是这篇文章是基于Linux虚拟机安装的,所需要的资源环境还是相对复杂。而我们在日常学习Kubernetes的过程中,其实是更希望在开发电脑上直接部署一个简单的Kubernetes环境,这样学习起来会更加方便。今天的内容就给大家介绍下如何在Mac开发电脑上安装一个基于MiniKube的Kubernetes学习环境!
Minikube是社区为了方便大家开发和体验Kubernetes,而提供的一个运行在本地的Kubernetes单节点环境。Minikube在不同的操作系统上需要不同的驱动支持,在MacOS中需要"xhyve driver "作为缺省驱动。具体安装步骤如下:
1)、安装kubectl
在Mac上安装kubectl可以直接使用brew命令安装,具体如下:
$ brew install kubectl
2)、安装MiniKube
为了解决海外资源访问受限问题,这里我们使用阿里云提供的镜像地址。具体命令如下:
$ minikube start --cpus=4 --memory='6000mb' --image-mirror-country='cn' --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'
命令参数说明如下:
--cpus=4:表示为minikube分配的CPU核数;
--memory='6000mb':表示为minikube虚拟机分配的内存数;
--image-mirror-country='cn':将缺省利用"registry.cn-hangzhou.aliyuncs.com/google_containers"作为安装Kubernetes的容器镜像仓库;
--image-repository="xx":表示所使用的镜像仓库地址,这里为阿里云地址;
安装命令执行效果如下:
? Darwin 10.14.6 上的 minikube v1.14.2
✨ Automatically selected the hyperkit driver
? 正在下载驱动 docker-machine-driver-hyperkit:
> docker-machine-driver-hyperkit.sha256: 65 B / 65 B [---] 100.00% ? p/s 0s
> docker-machine-driver-hyperkit: 11.44 MiB / 11.44 MiB 100.00% 3.82 KiB p
? The 'hyperkit' driver requires elevated permissions. The following commands will be executed:
$ sudo chown root:wheel /Users/qiaojiang/.minikube/bin/docker-machine-driver-hyperkit
$ sudo chmod u+s /Users/qiaojiang/.minikube/bin/docker-machine-driver-hyperkit
Password: #输入Mac电脑密码
✅ 正在使用镜像存储库 registry.cn-hangzhou.aliyuncs.com/google_containers
? 正在下载 VM boot image...
> minikube-v1.14.0.iso.sha256: 65 B / 65 B [-------------] 100.00% ? p/s 0s
> minikube-v1.14.0.iso: 178.27 MiB / 178.27 MiB 100.00% 1.62 MiB p/s 1m51s
? Starting control plane node minikube in cluster minikube
? Creating hyperkit VM (CPUs=4, Memory=6000MB, Disk=20000MB) ...
? 正在 Docker 19.03.12 中准备 Kubernetes v1.19.2…
> kubectl.sha256: 65 B / 65 B [--------------------------] 100.00% ? p/s 0s
> kubelet.sha256: 65 B / 65 B [--------------------------] 100.00% ? p/s 0s
> kubeadm.sha256: 65 B / 65 B [--------------------------] 100.00% ? p/s 0s
> kubeadm: 37.30 MiB / 37.30 MiB [-----------] 100.00% 548.93 KiB p/s 1m10s
> kubectl: 41.01 MiB / 41.01 MiB [-----------] 100.00% 497.14 KiB p/s 1m25s
> kubelet: 104.88 MiB / 104.88 MiB [---------] 100.00% 477.49 KiB p/s 3m45s
? Verifying Kubernetes components...
? Enabled addons: storage-provisioner, default-storageclass
? Done! kubectl is now configured to use "minikube" by default
如上安装详情所示,如果你的电脑中未安装相关驱动,则会自动进行下载!经过上述简单的命令执行步骤,到这里我们就将minikube安装好了,是不是很简单?
3)、验证MiniKube状态相关信息
接下来我们看下minikube的运行状态,命令及效果如下:
$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
如上所示,可以看到此时Kubernetes的几个核心组件已经正常运行起来了!接下来我们还可以具体看看kubectl的版本,命令如下:
$ kubectl version --client
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.0", GitCommit:"af46c47ce925f4c4ad5cc8d1fca46c7b77d13b38", GitTreeState:"clean", BuildDate:"2020-12-08T17:59:43Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"darwin/amd64"}
可以看到在未指定具体的安装版本时,会默认安装最新版本!这里kubectl的版本为v1.20.0。
接下来我们继续看看kubectl所指向的Kubernetes集群环境,命令如下:
$ kubectl config current-context
minikube
可以看到此时kubectl客户端指向的Kubernetes集群环境就是我们本地所安装的minikube环境!
此时我们还可以具体看看通过minikube所安装的Kubernetes集群服务的版本信息,命令如下:
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.0", GitCommit:"af46c47ce925f4c4ad5cc8d1fca46c7b77d13b38", GitTreeState:"clean", BuildDate:"2020-12-08T17:59:43Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.2", GitCommit:"f5743093fd1c663cb0cbc89748f730662345d44d", GitTreeState:"clean", BuildDate:"2020-09-16T13:32:58Z", GoVersion:"go1.15", Compiler:"gc", Platform:"linux/amd64"}
如上所示,这里显示我们所安装的Kubernetes Server版本为v1.19.2!
继续查看Kubernetes的集群信息,命令如下:
$ kubectl cluster-info
Kubernetes control plane is running at https://192.168.64.2:8443
KubeDNS is running at https://192.168.64.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
查看kubernetes的节点信息,命令如下:
$ kubectl get node
NAME STATUS ROLES AGE VERSION
minikube Ready master 2d3h v1.19.2
可以看到minikube所安装的是一个只有master节点的单节点集群!
接下来我们打开kubernetes dashbord,从图形化界面上看看Kubernetes的运行状态!命令如下:
$ minikube dashboard
? 正在验证 dashboard 运行情况 ...
? Launching proxy ...
? 正在验证 proxy 运行状况 ...
? Opening http://127.0.0.1:50299/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...
执行完该命令后,minikube会自动在浏览器打开kubernetes dashbord,效果如下:
可以看到我们在Mac上通过minikube所安装的Kubernetes集群的确已经正常运行,可以满足我们学习Kubernetes的基本要求了!
最后看看minikube所支持的扩展功能,命令如下:
$ minikube addons list
|-----------------------------|----------|--------------|
| ADDON NAME | PROFILE | STATUS |
|-----------------------------|----------|--------------|
| ambassador | minikube | disabled |
| csi-hostpath-driver | minikube | disabled |
| dashboard | minikube | enabled ✅ |
| default-storageclass | minikube | enabled ✅ |
| efk | minikube | disabled |
| freshpod | minikube | disabled |
| gcp-auth | minikube | disabled |
| gvisor | minikube | disabled |
| helm-tiller | minikube | disabled |
| ingress | minikube | disabled |
| ingress-dns | minikube | disabled |
| istio | minikube | disabled |
| istio-provisioner | minikube | disabled |
| kubevirt | minikube | disabled |
| logviewer | minikube | disabled |
| metallb | minikube | disabled |
| metrics-server | minikube | disabled |
| nvidia-driver-installer | minikube | disabled |
| nvidia-gpu-device-plugin | minikube | disabled |
| olm | minikube | disabled |
| pod-security-policy | minikube | disabled |
| registry | minikube | disabled |
| registry-aliases | minikube | disabled |
| registry-creds | minikube | disabled |
| storage-provisioner | minikube | enabled ✅ |
| storage-provisioner-gluster | minikube | disabled |
| volumesnapshots | minikube | disabled |
|-----------------------------|----------|--------------|
上述列表就是minikube所支持的扩展功能了,可以在学习时根据实际情况启用,例如我们刚才启用了dashbord,就可以看到列表中的状态变成“enable”了。
—————END—————
参考链接:
#阿里云社区
https://developer.aliyun.com/article/221687