在 MacOS 中使用 multipass 安裝 microk8s 環境_潭子電動車
※Google地圖已可更新顯示潭子電動車充電站設置地點!!
日本、大陸,發現這些先進的國家已經早就讓電動車優先上路,而且先進國家空氣品質相當好,電動車節能減碳可以減少空污
在 MacOS 中使用 multipass 安裝 microk8s 環境
Multipass & MicroK8S 介紹
Kubernetes 是什麼?
Kubernetes 集群通過可靠和可擴展的方式對容器化應用進行託管,使得在 DevOps 思維和體系中,讓運維服務、系統升級等工作變得超級簡單。
Multipass 是什麼?
Multipass 是一款可運行於 Linux、Windows 和 MacOS 的輕量級虛擬機管理器,它專為希望使用單個命令即可啟動全新 Ubuntu 環境的開發人員而設計。它在 Linux 上使用 KVM、在 Windows 上使用 Hyper-V、在 MacOS 上使用 HyperKit,以便以最小的開銷運行虛擬機。它還可以在 Windows 和 MacOS 上使用 VirtualBox。Multipass 將協助你獲取最新鏡像,並持續保持更新。
MicroK8S 是什麼?
MicroK8S 是 CNCF 認證的 Kubernetes 部署環境,可在工作站或邊緣設備上運行。作為一個 snap 包,它可以原生的運行所有 Kubernetes 服務,如果需要還可以打包類庫和二進制文件。它的安裝僅受限於你的下載速度,而刪除 MicroK8S 后不會留下任何痕迹。
- 參考:Install MicroK8s on Windows using Multipass
- 參考:https://microk8s.io/
安裝 multipass & microk8s
安裝 multipass 服務
brew search multipass brew cask info multipass brew cask install multipass multipass version
通過 multipass 安裝和啟動 microk8s 環境
multipass launch –name microk8s-vm –mem 4G –disk 40G multipass list multipass stop microk8s-vm multipass delete microk8s-vm multipass purge
在虛機中安裝 microk8s 服務
multipass exec microk8s-vm — sudo snap install microk8s –classic multipass exec microk8s-vm — sudo iptables -P FORWARD ACCEPT
查看 microk8s 的 snap 包信息,比如版本信息
multipass exec microk8s-vm — sudo snap info microk8s
增加賬號訪問權限,簡化操作
# 默認 ubuntu 賬號無權限操作集群,均需要 sudo # 可將 ubuntu 賬號加入 microk8s 用戶組以便簡化訪問 multipass exec microk8s-vm — sudo usermod -a -G microk8s ubuntu multipass exec microk8s-vm — sudo sudo chown -f -R ubuntu ~/.kube
增加訪問公鑰,簡化操作
# 在 ~/.ssh/authorized_keys 增加自己的公鑰,則可方便的進行SSH登錄 multipass shell microk8s-vm ssh ubuntu@192.168.64.2
查看磁盤空間
multipass exec microk8s-vm — df -kh
查看 kubeconfig 配置
multipass exec microk8s-vm — /snap/bin/microk8s.config
在 kubeconfig 中可以找到集群信息,可登錄查看
server: https://192.168.64.2:16443 username: admin password: xxx
增加 DNS 插件,必須安裝,多處依賴使用
multipass exec microk8s-vm — /snap/bin/microk8s.enable dns multipass exec microk8s-vm — /snap/bin/microk8s.enable dashboard
嘗試訪問 Grafana 地址
https://192.168.64.2:16443/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
安裝 Dashboard UI
multipass exec microk8s-vm — /snap/bin/microk8s.kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
使用 Bearer Token 進行鑒權訪問
# 為安全考慮,Dashboard UI 需要使用 Bearer Token 進行鑒權訪問,使用如下命令獲取 Token multipass exec microk8s-vm — /snap/bin/microk8s.kubectl -n kube-system get secret | grep default-token | cut -d ” ” -f1 multipass exec microk8s-vm — /snap/bin/microk8s.kubectl -n kube-system describe secret default-token-qqt75
訪問 Dashboard UI
https://192.168.64.2:16443/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益
有別於一般網頁架設公司,除了模組化的架站軟體,我們的營業主軸還包含:資料庫程式開發、網站建置、網頁設計、電子商務專案開發、系統整合、APP設計建置、專業網路行銷。
查看集群組件狀態
multipass exec microk8s-vm — /snap/bin/microk8s.status
可通過指定配置文件進行訪問
# 把kubeconfig保存至本地 /Users/xxx/.kube/microk8s-vm.yml,則可通過指定配置文件進行訪問 kubectl –insecure-skip-tls-verify –kubeconfig=”/Users/xxx/.kube/microk8s-vm.yml” get pods –all-namespaces
# 把kubeconfig保存至本地 ~/.kube/config,則可通過指定配置文件進行訪問 kubectl –insecure-skip-tls-verify get pods –all-namespaces
安裝 registry 組件
# The MicroK8s registry will not be enabled by default, so needs run the following to enable it. multipass exec microk8s-vm — /snap/bin/microk8s.enable registry
查看集群內組件狀態
multipass exec microk8s-vm — /snap/bin/microk8s.status | grep enabled
-
參考:在 MacOS 中使用 multipass 安裝 microk8s 環境
部署業務應用
業務應用 Demo 代碼
urban-iptable-management # 簡單的IP地址查詢服務,服務自治,無外部依賴 urban-district-management # 簡單的省市區查詢服務,服務自治,無外部依賴 urban-traffic-management # 簡單的模擬服務間調用,依賴 district 服務查詢城市信息 urban-gateway-management # 模擬API網關,將訪問轉發至其他服務
-
Github Repo:https://github.com/gaochundong/urbanboot
本地 docker image 構建
cd urbanboot
docker build -t urban-iptable-management-app:latest –file ./urban-iptable-management/docker/Dockerfile . docker build -t urban-district-management-app:latest –file ./urban-district-management/docker/Dockerfile . docker build -t urban-traffic-management-app:latest –file ./urban-traffic-management/docker/Dockerfile . docker build -t urban-gateway-management-app:latest –file ./urban-gateway-management/docker/Dockerfile .
刪除無用鏡像
docker images docker rmi –force $(docker images | grep “^<none>” | awk ‘{print $3}’) docker images
保存本地鏡像至文件
# Save one or more images to a tar archive docker save -o urban-iptable-management-app.tar urban-iptable-management-app:latest docker save -o urban-district-management-app.tar urban-district-management-app:latest docker save -o urban-traffic-management-app.tar urban-traffic-management-app:latest docker save -o urban-gateway-management-app.tar urban-gateway-management-app:latest
-
參考:Container Runtimes Part 3: High-Level Runtimes
拷貝鏡像文件至 microk8s 機器
scp ./urban-iptable-management-app.tar ubuntu@192.168.64.2:/tmp scp ./urban-district-management-app.tar ubuntu@192.168.64.2:/tmp scp ./urban-traffic-management-app.tar ubuntu@192.168.64.2:/tmp scp ./urban-gateway-management-app.tar ubuntu@192.168.64.2:/tmp
安裝鏡像至 registry
multipass exec microk8s-vm — /snap/bin/microk8s.ctr namespaces list multipass exec microk8s-vm — /snap/bin/microk8s.ctr images list -q
multipass exec microk8s-vm — /snap/bin/microk8s.ctr images import /tmp/urban-iptable-management-app.tar multipass exec microk8s-vm — /snap/bin/microk8s.ctr images import /tmp/urban-district-management-app.tar multipass exec microk8s-vm — /snap/bin/microk8s.ctr images import /tmp/urban-traffic-management-app.tar multipass exec microk8s-vm — /snap/bin/microk8s.ctr images import /tmp/urban-gateway-management-app.tar
multipass exec microk8s-vm — /snap/bin/microk8s.ctr images list -q | grep urban
刪除鏡像
multipass exec microk8s-vm — /snap/bin/microk8s.ctr images remove docker.io/library/urban-iptable-management-app:latest multipass exec microk8s-vm — /snap/bin/microk8s.ctr images remove docker.io/library/urban-district-management-app:latest multipass exec microk8s-vm — /snap/bin/microk8s.ctr images remove docker.io/library/urban-traffic-management-app:latest multipass exec microk8s-vm — /snap/bin/microk8s.ctr images remove docker.io/library/urban-gateway-management-app:latest
在部署文件中配置鏡像位置
# 替換deployment.yaml文件中的image路徑 /Users/xxx/g/github/urbanboot/urban-district-management/kubernetes/deployment.yaml
創建 Namespace
kubectl –insecure-skip-tls-verify create namespace urbanboot
部署應用
kubectl –insecure-skip-tls-verify apply -f /Users/xxx/g/github/urbanboot/urban-iptable-management/kubernetes/deployment.yaml -n urbanboot kubectl –insecure-skip-tls-verify apply -f /Users/xxx/g/github/urbanboot/urban-district-management/kubernetes/deployment.yaml -n urbanboot kubectl –insecure-skip-tls-verify apply -f /Users/xxx/g/github/urbanboot/urban-traffic-management/kubernetes/deployment.yaml -n urbanboot kubectl –insecure-skip-tls-verify apply -f /Users/xxx/g/github/urbanboot/urban-gateway-management/kubernetes/deployment.yaml -n urbanboot
查看部署
kubectl –insecure-skip-tls-verify get deployments -n urbanboot kubectl –insecure-skip-tls-verify get pods -n urbanboot
刪除部署,會自動刪除 Pods
kubectl –insecure-skip-tls-verify delete deployment urban-iptable-management-app -n urbanboot kubectl –insecure-skip-tls-verify delete deployment urban-district-management-app -n urbanboot kubectl –insecure-skip-tls-verify delete deployment urban-traffic-management-app -n urbanboot kubectl –insecure-skip-tls-verify delete deployment urban-gateway-management-app -n urbanboot
-
參考:Build apps locally and Deploy on MicroK8s
創建 Service
kubectl –insecure-skip-tls-verify get services -n urbanboot multipass exec microk8s-vm — /snap/bin/microk8s.kubectl expose -h
multipass exec microk8s-vm — /snap/bin/microk8s.kubectl expose deployment urban-iptable-management-app –type=ClusterIP –port=7200 –name=urban-iptable-management-app -n urbanboot multipass exec microk8s-vm — /snap/bin/microk8s.kubectl expose deployment urban-iptable-management-app –type=NodePort –port=7200 –name=urban-iptable-management-nodeport -n urbanboot
multipass exec microk8s-vm — /snap/bin/microk8s.kubectl expose deployment urban-district-management-app –type=ClusterIP –port=7200 –name=urban-district-management-app -n urbanboot multipass exec microk8s-vm — /snap/bin/microk8s.kubectl expose deployment urban-district-management-app –type=NodePort –port=7200 –name=urban-district-management-nodeport -n urbanboot
multipass exec microk8s-vm — /snap/bin/microk8s.kubectl expose deployment urban-traffic-management-app –type=ClusterIP –port=7200 –name=urban-traffic-management-app -n urbanboot multipass exec microk8s-vm — /snap/bin/microk8s.kubectl expose deployment urban-traffic-management-app –type=NodePort –port=7200 –name=urban-traffic-management-nodeport -n urbanboot
multipass exec microk8s-vm — /snap/bin/microk8s.kubectl expose deployment urban-gateway-management-app –type=ClusterIP –port=7200 –name=urban-gateway-management-app -n urbanboot multipass exec microk8s-vm — /snap/bin/microk8s.kubectl expose deployment urban-gateway-management-app –type=NodePort –port=7200 –name=urban-gateway-management-nodeport -n urbanboot
multipass exec microk8s-vm — /snap/bin/microk8s.kubectl expose deployment urban-traffic-management-app –type=LoadBalancer –port=7200 –name=urban-traffic-management-loadbalancer -n urbanboot
- 參考:Kubernetes NodePort vs LoadBalancer vs Ingress? When should I use what?
- The big downside is that each service you expose with a LoadBalancer will get its own IP address, and you have to pay for a LoadBalancer per exposed service, which can get expensive!
使用配置文件創建 Service
kubectl –insecure-skip-tls-verify expose -f /Users/xxx/g/github/urbanboot/urban-traffic-management/kubernetes/service.yaml -n urbanboot kubectl –insecure-skip-tls-verify expose -f /Users/xxx/g/github/urbanboot/urban-traffic-management/kubernetes/nodeport.yaml -n urbanboot
刪除 Service
kubectl –insecure-skip-tls-verify delete service urban-iptable-management-app -n urbanboot kubectl –insecure-skip-tls-verify delete service urban-iptable-management-nodeport -n urbanboot kubectl –insecure-skip-tls-verify delete service urban-district-management-app -n urbanboot kubectl –insecure-skip-tls-verify delete service urban-district-management-nodeport -n urbanboot kubectl –insecure-skip-tls-verify delete service urban-traffic-management-app -n urbanboot kubectl –insecure-skip-tls-verify delete service urban-traffic-management-nodeport -n urbanboot kubectl –insecure-skip-tls-verify delete service urban-gateway-management-app -n urbanboot kubectl –insecure-skip-tls-verify delete service urban-gateway-management-nodeport -n urbanboot
查一下 TCP 端口監聽
multipass exec microk8s-vm — netstat -nl -t
查看部署事件,按照時間排序
kubectl –insecure-skip-tls-verify get events -n urbanboot –sort-by=.metadata.creationTimestamp
查看 Pod 日誌
kubectl –insecure-skip-tls-verify get pods -n urbanboot kubectl –insecure-skip-tls-verify describe pod urban-traffic-management-app-58d7578547-p277h -n urbanboot kubectl –insecure-skip-tls-verify logs urban-traffic-management-app-58d7578547-p277h -n urbanboot kubectl –insecure-skip-tls-verify logs urban-traffic-management-app-58d7578547-p277h -n urbanboot –tail=20
查看 Endpoint 信息
# Spring Cloud Kubernetes 會通過 API 查詢 Endpoints kubectl –insecure-skip-tls-verify get services -n urbanboot kubectl –insecure-skip-tls-verify get endpoints -n urbanboot kubectl –insecure-skip-tls-verify get all –all-namespaces kubectl –insecure-skip-tls-verify get all -n urbanboot kubectl –insecure-skip-tls-verify describe services urban-traffic-management-nodeport -n urbanboot kubectl –insecure-skip-tls-verify describe services urban-traffic-management-app -n urbanboot
訪問 NodePort 端口
curl -s http://192.168.64.2:30211 curl -s http://192.168.64.2:30211 -i curl -s http://192.168.64.2:30211 -v
登錄 Pod 環境
kubectl –insecure-skip-tls-verify exec -it urban-traffic-management-app-58d7578547-p277h -n urbanboot — /bin/bash
查看 Java 進程
java -version env | grep JAVA ps -ef|grep java
版權聲明:本篇文章《在 MacOS 中使用 multipass 安裝 microk8s 環境》由作者 Dennis Gao 發表自博客園個人技術博客,未經作者本人同意禁止以任何的形式轉載,任何自動的或人為的爬蟲轉載行為均為耍流氓。
本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
※Google地圖已可更新顯示潭子電動車充電站設置地點!!
日本、大陸,發現這些先進的國家已經早就讓電動車優先上路,而且先進國家空氣品質相當好,電動車節能減碳可以減少空污