--- title: Minikube(docker) 建立 kubernetes Web UI tags: nycu MIRC104 --- # Docker(Minikube) 建立 及 k8s Web UI > [name=蔡秀吉]<br/>[time=Apr 18 2022][color=#F4B400] # 開發環境 筆電配置 系統:Ubuntu 20.04 LTS desktop CPU:i5-5200U SSH連線伺服器 系統:Ubuntu 18.04.6 LTS ~~剛好兩個開發環境都是 2 core ㄏㄏ~~ # 開發流程 筆電開啟終端機 or SSH 連線進入伺服器終端機 [Windows SSH 自動登入腳本](https://hackmd.io/@thc1006/rk83BDsb9) # 安裝 docker(設定repository) [參照這篇](https://docs.docker.com/engine/install/ubuntu/) 別擔心全部複製貼上就可以安裝了~ 首先先更新 apt-get ```bash sudo apt-get update ``` 安裝需要的 packages curl 之類的 喵 ```bash sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common ``` 新增官方 Docker GPG 密鑰 ```bash curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg ``` 新增 穩定版本的 repository ```bash echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` # 安裝 Docker Engine 還是一樣先更新 ```bash sudo apt-get update;sudo apt-get install docker-ce docker-ce-cli containerd.io ``` 安裝最新版本的 engine,command and container ```bash sudo apt-get install docker-ce docker-ce-cli containerd.io ``` 跑跑看docker hello world 看看有沒有出現 ```bash sudo docker run hello-world ``` 然後你可以使用其他docker指令來查看你的image和container 可以看看這篇 [docker 基本指令](https://hackmd.io/@thc1006/rku088xM5) 測試安裝 (會出現你的docker版本) ```bash docker --version ``` ![](https://i.imgur.com/b5C67tt.png) 新增一個docker群組, ```bash sudo groupadd docker ``` 並且將使用者加入即可提高權限執行docker, 之後跑minikube就不會一直跟你靠腰你沒有權限! (XXXX)輸入你的使用者名稱 ```cmd= sudo usermod -aG docker XXXX ``` # 安裝 kubectl - 這邊要注意一下,你要有虛擬化工具才能夠安裝 kubectl 因為以後是開發為服務架構,所以安裝docker。 ~~安裝VirtualBox自己找 (誤~~ [參考文章](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/) Linux 上使用 curl 安裝 kubectl ``` bash curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" ``` 安裝 kubectl ```bash sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl ``` 這邊有一塊提高權限的部分(如果沒有root權限的話) ```cmd= chmod +x kubectl mkdir -p ~/.local/bin mv ./kubectl ~/.local/bin/kubectl ``` 查看安裝的版本 ```bash kubectl version --client ``` # 安裝 minikube [參考網頁](https://minikube.sigs.k8s.io/docs/start/) 在終端機貼這兩行指令,以下載安裝 minikube ```cmd= curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube ``` 啟動minikube ```bash minikube start ``` 跟剛剛的 kubectl 相借問ㄅ ```bash kubectl get po -A ``` Finally你可以進去你的 Dashborad 以及 Url 啦~ 前提是你是桌面板的Ubuntu ```bash minikube dashboard --url ``` ~~然後你就在思考,奇怪 e04 怎麼沒有東西跑出來~~ > 「你以為成功了嗎?,沒有 GUI 的伺服器介面會把你搞到高潮」 [name=HC Tsai] # 安裝 Ubuntu 伺服器版遠端桌面連線套件 [參考文章](https://www.ichiayi.com/tech/ubuntu_xrdp) Ubuntu 安裝可讓 Windows 遠端桌面登入的 xrdp 安裝 xfce4 與 xrdp ```bash sudo apt install xfce4 xrdp ``` 配置登入環境 ```cmd= echo xfce4-session > ~/.xsession sudo vi /etc/xrdp/startwm.sh ``` 啟動 xrdp 服務 ```bash sudo service xrdp restart ``` 你的windows電腦開啟遠端桌面連線 Win+Q 直接搜尋 "遠端桌面連線" 輸入你的伺服器IP並連線 ![](https://i.imgur.com/5prwGo7.png) 輸入使用者帳號密碼 ![](https://i.imgur.com/ydkKSiR.jpg) 你就進入畫面啦 ~~真4K~~ - 還沒有結束ㄏㄏ ~~你他媽沒有內建瀏覽器,哭暈在廁所~~ ```bash sudo apt install firefox ``` 下載完成後就會自動識別為預設瀏覽器啦~ # 創建一個應用程式看看(Pod、Service) ```cmd= kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4 kubectl expose deployment hello-minikube --type=NodePort --port=8080 ``` 測試一個 hello-minikube 看看 ```bash kubectl get services hello-minikube ``` minikube 在你的 Web 瀏覽器 UI中顯示 ```bash minikube service hello-minikube ``` ![](https://i.imgur.com/6D3mnbv.png) 你可以看到有一個叫做 hello-minikube 的 node 啦~ # 部署 Dashboard UI 和 資源管理均衡器 [參考文件](https://github.com/kubernetes/dashboard) 安裝 ```bash kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml ``` 拜訪 ```bash kubectl proxy ``` 部屬資源管理均衡器 (漢化不好 ```cmd= kubectl create deployment balanced --image=k8s.gcr.io/echoserver:1.4 kubectl expose deployment balanced --type=LoadBalancer --port=8080 ``` 為這個node(管理均衡器)建立可訪問IP ```bash minikube tunnel ``` 查找可路由 IP,請運行此命令並檢查該EXTERNAL-IP列 ```bash kubectl get services balanced ``` ![](https://i.imgur.com/c6ymYN4.png) 你可以看到有一個叫做 Balancer 的 node 啦~ # 其他指令 - kubectl - kubectl get pod - kubectl get pods –all-namespaces - kubectl get service - kubectl describe po hello-minikube-180744149-lj0rd - minikube - minikube dashboard - minikube status - minikube service hello-minikube –url # 續看下篇 [Minikube k8s Web UI 可以做到的事~](https://hackmd.io/@thc1006/H1NNU12Vc) > 「如果過程發生問題,你可以先嘗試關掉重開!」 [name=HC Tsai] #### 其他資訊 歡迎加入 FB [O-RAN 5G 網路通訊技術 X GDSC] 學術交流社群:https://www.facebook.com/groups/534980718419173 #### 作者資訊(蔡秀吉) - hctsai@linux.com - thc1006@ieee.org - https://www.facebook.com/thc1006