---
title: 建立 kubernetes Dashboard
---
# 建立 kubernetes Dashboard
> [name=蔡秀吉][name=趙偉廷]<br/>[time=June 22 2022][color=#F4B400]
# 如何建構
## 研究流程

## 開發流程
## 1. 安裝 Docker(設定repository)
[參照這篇](https://docs.docker.com/engine/install/ubuntu/)
- 首先先更新 apt-get
```bash
sudo apt-get update
```
- 安裝所需的 應用程式套件 喵
```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(資料庫)路徑 (適用 Docker 的 Ubuntu)
```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
```
## 2. 安裝 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 (選用)
```bash
docker image ls
```
```bash
docker container ls
```
可以看看這篇 [docker 基本指令](https://hackmd.io/@thc1006/rku088xM5)
- 測試安裝 (查看docker版本)
```bash
docker --version
```

- 新增一個 Docker 群組,
```bash
sudo groupadd docker
```
- 並且將使用者加入即可提高權限執行docker,
XXXX 為你的使用者帳戶名稱 如果就改成 user
```cmd=
sudo usermod -aG docker XXXX
```
## 3. 安裝 kubectl
- 這邊要注意一下,要有虛擬化工具才能夠安裝 kubectl,
像是 VirtualBox VMware 也都可以
因為本期末專題是部屬微服務架構,所以安裝 Docker。
[參考文章](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 相借問 (獲取所有 pod 的詳細資訊)
```bash
kubectl get po -A
```
- Finally你可以進去你的 Dashborad 以及 Url 啦~
前提是你是桌面板的Ubuntu
```bash
minikube dashboard --url
```
~~然後你就在思考,奇怪 e04 怎麼沒有東西跑出來~~
> 「你以為成功了嗎?,沒有 GUI 的伺服器介面會把你搞到抓狂」 [name=HC Tsai]
## 4. 安裝 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並連線

- 輸入使用者帳號密碼

你就進入畫面啦 ~~真4K~~
- 還沒有結束ㄏㄏ ~~你他媽沒有內建瀏覽器,哭暈在廁所~~
```bash
sudo apt install firefox
```
- 下載完成後就會自動識別為預設瀏覽器啦~
## 5. 創建一個應用程式看看(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
```

- 你可以看到有一個叫做 hello-minikube 的 node 啦~
## 6. 部署 Dashboard UI 和 資源管理均衡器
[參考文件](https://github.com/kubernetes/dashboard)
安裝
```bash
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml
```
- 拜訪 Access
```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
```

- 你可以看到有一個叫做 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
> 「如果過程發生問題,你可以先嘗試關掉重開!」 [name=HC Tsai]