JAVA后臺開發(fā)學習日志 21-09-23 學習elasticsearch 之 安裝環(huán)境-1
最近有點空了,打算在家里電腦上搭建一個JAVA開發(fā)環(huán)境。以前只在公司里做過,在家里搞還是有很多不一樣的地方。因此把過程記錄分享出來。
這個系列不是教學,只是自己記的日志,搞到哪里就記到哪里。在系統(tǒng)性和全面性上肯定是不足的。不過讀者如果有相關(guān)問題,也歡迎留言討論。
這個系列我們打算是以目標驅(qū)動的方式來做。我們先有一個最終目標,之后從因果關(guān)系上來推導出我們目前需要做的事情。這種逆向思考的過程我覺得是特別重要的,特別適合新入門的讀者參考。然而,我不會在文檔中注明非常明確的命令,1是因為這些命令可能和你的環(huán)境不相符,比如我想裝在D盤,你想裝在E盤。我還得花時間介紹這條命令中哪些地方需要調(diào)整。這不是我的初衷,因此需要讀者有一定的bash經(jīng)驗。2,我懶。但是,我保證以下內(nèi)容在我本機肯定都是成功的,有一些比較特別的注意點我也會寫出。
以下是我們第一階段的終極目標:
- 我們想做一個站內(nèi)搜索的功能模塊,需要使用全文索引的能力。例如站內(nèi)有一些文檔doc,用戶想用關(guān)鍵詞等條件來檢索哪些doc是match的。市面上做這個比較好的是elasticsearch,因此,我們想在本機搭建一個elasticsearch的環(huán)境
好的,以上就是我們的目標,為了完成這個目標,我們倒推一下需要干什么:
1,需要minikube,原因如下。elasticsearch我們想安裝在k8s的集群上,有兩個理由,1,這是比較貼近實際工作環(huán)境的情況,順便也熟悉一下k8s的運維。2,家用電腦除了工作還要娛樂,我們想有一個統(tǒng)一的開關(guān),如果不啟動就不要一直占用資源。minikube可以比較好的做到這一點。我們也可以在網(wǎng)上先查一查elasticsearch on minikube等關(guān)鍵詞,確認這個事情是可行的,不過我們先不看具體怎么搞。我們下面一步一步來。
2,安裝minikube,根據(jù)官方網(wǎng)站來操作。我們一直安照先官方,再民間的順序來找資料。官方網(wǎng)站要求下載一個minikube.exe,下載好了運行,發(fā)現(xiàn)如下報錯。
```
* 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,根據(jù)上述報錯提示,我們發(fā)現(xiàn)minikube依賴于某種虛擬機技術(shù)。由于我們不太關(guān)心minikube往下(底層)的運行環(huán)境,因此我們可以找一種比較適合自己的虛擬機技術(shù),不一定和生產(chǎn)環(huán)境相符合了。因此我們選擇hyper-v。
4,安裝hyper-v,網(wǎng)上找到相關(guān)文檔,發(fā)現(xiàn)有兩個問題需要解決:1,bios打開虛擬化支持,2,win10 home版需要特別的啟用技巧。我們分別來處理上述兩個任務(wù)。
5,bios打開虛擬化支持,這一步在我的電腦上還是比較簡單的,先運行systeminfo檢查是否已經(jīng)打開。之后去bios,找cpu相關(guān)的高級設(shè)置,找intel虛擬化相關(guān)的選擇,enable就好了。具體各家bios不同,有些主板/CPU可能做不了。但我這臺是可以的,打開后再運行systeminfo,發(fā)現(xiàn)4項要求全部滿足了。
6,win10 home打開hyper-v功能。首先,在啟用windows功能里面,我們是找不到hyper-v的(這是因為我的OS是win10 home版),網(wǎng)上找相關(guān)資料?,F(xiàn)在傳的最多的是要寫一個cmd文件,但不幸的是由于二手信息傳的太多了,命令的排版也出了問題。因此我們把這個cmd文件分開來解讀一下。發(fā)現(xiàn)它實際上有以下3步組成:1,列出所有hyper-v相關(guān)的安裝包,2,啟用上述安裝包,3,啟用hyper-v。
7,我們先進行第一步,列出所有安裝包并放到一個txt文件中,執(zhí)行
```
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?前面的應(yīng)該是英文單引號。
如果成功執(zhí)行,會看到很多類似如下的信息
```
正在處理 1 (共 1) - 正在添加程序包 Microsoft-Hyper-V-Services-Package~31bf3856ad364e35~amd64~~10.0.19041.1237
[==========================100.0%==========================]
操作成功完成。
```
9,啟用hyper-v,執(zhí)行
```
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
```
成功后重啟電腦
檢查?啟用windows功能 中有沒有hyper-v,是否已經(jīng)勾選
10,再次嘗試啟動minikube,另外我已經(jīng)安裝了ubuntu,因此以下使用bash。
```
* Microsoft Windows 10 Home China 10.0.19043 Build 19043 上的 minikube v1.23.2
* 自動選擇 hyperv 驅(qū)動
* 正在下載 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
```
出現(xiàn)類似如上的提示。可見它下載了minikube的鏡像和k8s的鏡像。并且已經(jīng)啟動成功了。
這里我們先停一下,給自己增加三個任務(wù):1,校驗環(huán)境,2,校驗hyper-v,3,停止minikube
插一句,有一些教程,寫到start了某個東西就結(jié)束了,我覺得這種教程特別不負責任。更好的作法是,安裝,啟動,校驗,停止。這4步全部做完。校驗這一步,一定要檢查這個程序占用了哪些系統(tǒng)資源,CPU,內(nèi)存,硬盤這些。OK我們開始。
11,校驗minikube,上面提示我們kubectl沒裝,沒關(guān)系,我們就用minikube kubectl的方式干活,反正是個學習環(huán)境,記得上正式了把minikube拿掉就行了。我們執(zhí)行它推薦的指令
```
minikube kubectl -- get pods -A
```
好了報錯了,兩個原因,1,我們是windows,需要minikube.exe 2,我們沒加PATH。沒關(guān)系,換成以下指令
```
?./minikube.exe kubectl -- get pods -A
```
運行OK,得到以下結(jié)果
```
? ? > 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盤暫時還夠用,以后不夠用了再看怎么移動的別的盤吧??傊F(xiàn)在我們心里有底了。
13,停止minikube,試一下minikube stop
```
* Stopping node "minikube"? ...
* 正在通過 SSH 關(guān)閉“minikube”…
* 1 nodes stopped.
```
再檢查下hyper-v的管理界面,發(fā)現(xiàn)minikube實例的狀態(tài)是?關(guān)機。好了,這下不占用CPU和內(nèi)存了,不影響我們玩游戲了。
OK,完成了minikube的安裝,算是一個階段性的成功,今天的學習就先到這里。我們后面再繼續(xù)看怎么玩minikube。后續(xù)的計劃是先裝個mysql造點數(shù)據(jù)。以便elasticsearch根據(jù)這些數(shù)據(jù)創(chuàng)建索引。但是具體怎么弄,我也不清楚呢,邊摸索邊記錄吧。