在 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地圖已可更新顯示潭子電動車充電站設置地點!!

日本、大陸,發現這些先進的國家已經早就讓電動車優先上路,而且先進國家空氣品質相當好,電動車節能減碳可以減少空污

您可能也會喜歡…