JAVA后台开发学习日志 21-09-23 学习elasticsearch 之 安装环境-1
最近有点空了,打算在家里电脑上搭建一个JAVA开发环境。以前只在公司里做过,在家里搞还是有很多不一样的地方。因此把过程记录分享出来。
这个系列不是教学,只是自己记的日志,搞到哪里就记到哪里。在系统性和全面性上肯定是不足的。不过读者如果有相关问题,也欢迎留言讨论。
这个系列我们打算是以目标驱动的方式来做。我们先有一个最终目标,之后从因果关系上来推导出我们目前需要做的事情。这种逆向思考的过程我觉得是特别重要的,特别适合新入门的读者参考。然而,我不会在文档中注明非常明确的命令,1是因为这些命令可能和你的环境不相符,比如我想装在D盘,你想装在E盘。我还得花时间介绍这条命令中哪些地方需要调整。这不是我的初衷,因此需要读者有一定的bash经验。2,我懒。但是,我保证以下内容在我本机肯定都是成功的,有一些比较特别的注意点我也会写出。
以下是我们第一阶段的终极目标:
- 我们想做一个站内搜索的功能模块,需要使用全文索引的能力。例如站内有一些文档doc,用户想用关键词等条件来检索哪些doc是match的。市面上做这个比较好的是elasticsearch,因此,我们想在本机搭建一个elasticsearch的环境
好的,以上就是我们的目标,为了完成这个目标,我们倒推一下需要干什么:
1,需要minikube,原因如下。elasticsearch我们想安装在k8s的集群上,有两个理由,1,这是比较贴近实际工作环境的情况,顺便也熟悉一下k8s的运维。2,家用电脑除了工作还要娱乐,我们想有一个统一的开关,如果不启动就不要一直占用资源。minikube可以比较好的做到这一点。我们也可以在网上先查一查elasticsearch on minikube等关键词,确认这个事情是可行的,不过我们先不看具体怎么搞。我们下面一步一步来。
2,安装minikube,根据官方网站来操作。我们一直安照先官方,再民间的顺序来找资料。官方网站要求下载一个minikube.exe,下载好了运行,发现如下报错。
```
* Microsoft Windows 10 Home China 10.0.19043 Build 19043 上的 minikube v1.23.2
* Unable to pick a default driver. Here is what was considered, in preference order:
- docker: Not installed: exec: "docker": executable file not found in %PATH%
- hyperv: Not installed: C:\windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive @(Get-Wm
iobject Win32_ComputerSystem).HypervisorPresent returned "False\r\n"
- vmware: Not installed: exec: "docker-machine-driver-vmware": executable file not found in %PATH%
- virtualbox: Not installed: unable to find VBoxManage in $PATH
- podman: Not installed: exec: "podman": executable file not found in %PATH%
X Exiting due to DRV_NOT_DETECTED: No possible driver was detected. Try specifying --driver, or see https://minikube.sig
s.k8s.io/docs/start/
```
3,根据上述报错提示,我们发现minikube依赖于某种虚拟机技术。由于我们不太关心minikube往下(底层)的运行环境,因此我们可以找一种比较适合自己的虚拟机技术,不一定和生产环境相符合了。因此我们选择hyper-v。
4,安装hyper-v,网上找到相关文档,发现有两个问题需要解决:1,bios打开虚拟化支持,2,win10 home版需要特别的启用技巧。我们分别来处理上述两个任务。
5,bios打开虚拟化支持,这一步在我的电脑上还是比较简单的,先运行systeminfo检查是否已经打开。之后去bios,找cpu相关的高级设置,找intel虚拟化相关的选择,enable就好了。具体各家bios不同,有些主板/CPU可能做不了。但我这台是可以的,打开后再运行systeminfo,发现4项要求全部满足了。
6,win10 home打开hyper-v功能。首先,在启用windows功能里面,我们是找不到hyper-v的(这是因为我的OS是win10 home版),网上找相关资料。现在传的最多的是要写一个cmd文件,但不幸的是由于二手信息传的太多了,命令的排版也出了问题。因此我们把这个cmd文件分开来解读一下。发现它实际上有以下3步组成:1,列出所有hyper-v相关的安装包,2,启用上述安装包,3,启用hyper-v。
7,我们先进行第一步,列出所有安装包并放到一个txt文件中,执行
```
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
```
注意这是个dos命令。检查hyper-v.txt,看看是不是列出了一堆安装包
8,第二步,启用这些安装包
```
for /f %i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:”%SystemRoot%\servicing\Packages\%i”
```
注意这是第二个命令,要换行的。另外有些排版问题导致你找到的版本可能:1,%i错写为%%i,2,'findstr 前面的应该是英文单引号。
如果成功执行,会看到很多类似如下的信息
```
正在处理 1 (共 1) - 正在添加程序包 Microsoft-Hyper-V-Services-Package~31bf3856ad364e35~amd64~~10.0.19041.1237
[==========================100.0%==========================]
操作成功完成。
```
9,启用hyper-v,执行
```
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
```
成功后重启电脑
检查 启用windows功能 中有没有hyper-v,是否已经勾选
10,再次尝试启动minikube,另外我已经安装了ubuntu,因此以下使用bash。
```
* Microsoft Windows 10 Home China 10.0.19043 Build 19043 上的 minikube v1.23.2
* 自动选择 hyperv 驱动
* 正在下载 VM boot image...
> minikube-v1.23.1.iso.sha256: 65 B / 65 B [-------------] 100.00% ? p/s 0s
> minikube-v1.23.1.iso: 225.22 MiB / 225.22 MiB [] 100.00% 6.21 MiB p/s 36s
* Starting control plane node minikube in cluster minikube
* Downloading Kubernetes v1.22.2 preload ...
> preloaded-images-k8s-v13-v1...: 511.84 MiB / 511.84 MiB 100.00% 6.73 MiB
* Creating hyperv VM (CPUs=2, Memory=6000MB, Disk=20000MB) ...
* 正在 Docker 20.10.8 中准备 Kubernetes v1.22.2…
- Generating certificates and keys ...
- Booting up control plane ...
- Configuring RBAC rules ...
* Verifying Kubernetes components...
- Using image gcr.io/k8s-minikube/storage-provisioner:v5
* Enabled addons: storage-provisioner, default-storageclass
* 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
```
出现类似如上的提示。可见它下载了minikube的镜像和k8s的镜像。并且已经启动成功了。
这里我们先停一下,给自己增加三个任务:1,校验环境,2,校验hyper-v,3,停止minikube
插一句,有一些教程,写到start了某个东西就结束了,我觉得这种教程特别不负责任。更好的作法是,安装,启动,校验,停止。这4步全部做完。校验这一步,一定要检查这个程序占用了哪些系统资源,CPU,内存,硬盘这些。OK我们开始。
11,校验minikube,上面提示我们kubectl没装,没关系,我们就用minikube kubectl的方式干活,反正是个学习环境,记得上正式了把minikube拿掉就行了。我们执行它推荐的指令
```
minikube kubectl -- get pods -A
```
好了报错了,两个原因,1,我们是windows,需要minikube.exe 2,我们没加PATH。没关系,换成以下指令
```
./minikube.exe kubectl -- get pods -A
```
运行OK,得到以下结果
```
> kubectl.exe.sha256: 64 B / 64 B [----------------------] 100.00% ? p/s 0s
> kubectl.exe: 46.11 MiB / 46.11 MiB [----------] 100.00% 5.53 MiB p/s 8.5s
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-78fcd69978-5mkcl 1/1 Running 0 6m8s
kube-system etcd-minikube 1/1 Running 0 6m23s
kube-system kube-apiserver-minikube 1/1 Running 0 6m23s
kube-system kube-controller-manager-minikube 1/1 Running 0 6m21s
kube-system kube-proxy-6lcs5 1/1 Running 0 6m8s
kube-system kube-scheduler-minikube 1/1 Running 0 6m22s
kube-system storage-provisioner 1/1 Running 0 6m19s
```
挺智能的,先去下载了一个kubectl再运行。再来一遍试试,可见下载的过程就没有了。
12,检查hyper-v,之前看到minikube申请了20G的硬盘,我想看看用的是哪个盘。打开windows的hyper-v界面。在搜索里输入hyper-v,启动hyper-v管理器。可以看到我们有一个minikube的实例正在运行中。懒得截图了,可以看到这个虚拟机实例有两个IDE,一个是硬盘,一个是minikube的安装iso。两个都在C盘用户目录下,minikube新建了一个.minikube目录。我C盘暂时还够用,以后不够用了再看怎么移动的别的盘吧。总之现在我们心里有底了。
13,停止minikube,试一下minikube stop
```
* Stopping node "minikube" ...
* 正在通过 SSH 关闭“minikube”…
* 1 nodes stopped.
```
再检查下hyper-v的管理界面,发现minikube实例的状态是 关机。好了,这下不占用CPU和内存了,不影响我们玩游戏了。
OK,完成了minikube的安装,算是一个阶段性的成功,今天的学习就先到这里。我们后面再继续看怎么玩minikube。后续的计划是先装个mysql造点数据。以便elasticsearch根据这些数据创建索引。但是具体怎么弄,我也不清楚呢,边摸索边记录吧。

