終於要開始部署第一個服務啦 *^O^*
簡單的 Demo,選用輕量的工具演示。
使用工具:minikube
官方文件:minikube start
執行環境:macOS 14.0
先啟動 docker,不然會像這樣:
如果還沒安裝 docker 可以參考前面的章節:Day-4 在學習 Kubernetes 之前:Docker
依照環境選擇安裝版本,
並執行安裝指令
brew install minikube
安裝時間不到兩分鐘,其實蠻快就能安裝好。
執行啟動指令
minikube start
初次啟動需要花時間下載 kubernetes &建立 Cluster,請耐心等待 (*¯︶¯*)或是去上個洗手間再買杯咖啡,他真的蠻花時間的 (大概等了15分鐘)
完成後的畫面是這個樣子的:
簡單檢視一下執行內容:
可以注意一下這段內容:
❗ This container is having trouble accessing https://registry.k8s.io
💡 To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/
kubernetes 預設網路配置只專注在 Cluster 內部,不會提供對外連接。
因此,如果需要連到 internet ,需要自行設定 proxy
。
可參考 minikube 官方文件:Proxies and VPNs
可以執行第一個指令啦~
讀取目前所有 namespace 中的 pod(指令 -A
)
kubectl get pod -A
# 也可以只打縮寫:po (其實 po, pod, pods 都可以)
kubectl get po -A
取得資訊如下:
在 Worker Node 中有提過,Control Plane 的 pod 都運行在名稱為 kube-system
的namespace
中,現在正好驗證一下,來看看目前的設定:
(1) 看看 pod 在哪個 node 上
kubectl get pods -A -o wide
-o wide
是個方便的指令,可以取得較多的資訊
可以看到所有的 pod 都執行在名為 minikube
的 node 上。
那要怎麼知道他是 Worker Node 還是 Control Plane?
\去看 node啊!/ (什麼廢話)
kubectl get nodes
執行結果如下:
驗證結束,來試試看部署第一個 pod 吧!
kubectl run demo-pod --image=kicbase/echo-server:1.0
用 image kicbase/echo-server:1.0
啟一個 pod
再次執行 kubectl get pods -A
可以確認目前的 pod 運作狀態
除了從 STATUS 的狀態確認 pod 有正常運行,也可以看到剛部署的 pod 是落在名為 default
的 namespace
上。default
是 Cluster 建立時就會同時被創建的 namespace
,作為 namespace
的預設值使用。不過在實務上,還是建議善加利用 namespace
做好環境隔離。
如果部署或下指令後找不到,不妨看看
namespace
設定是否正確喔!
確認部署結果
kubectl logs demo-pod
最後補充幾個管理 minikube 的指令:
minikube pause
# 再次啟用
minikube unpause
minikube stop
minikube config set memory 9001
minikube delete --all
實際上手操作看看,比硬背概念有趣多啦~