先前我們在 docker 建置了 一個 Image 檔案 根據 docker file 與對應的檔案。那如果我們要在 minikube 部屬一個網站需要 就必須要把外部 建立好的 Image 加入到 minikube 的 Docker runtime,不然會找不到。
✅ 總結流程:
minikube image load my-custom-nginx:latestkubectl apply -f deployment.yamlkubectl apply -f service.yamlminikube service my-nginx-service或http://$(minikube ip):30080docker 建立Image 可參考(link)
1. 把 Image 匯入至 minikube
方法 1
docker save my-custom-nginx:latest -o my-custom-nginx.tar
minikube image load my-custom-nginx:latest
方法 2
minikube image load my-custom-nginx:latest
使用 Minikube 內置的 Docker
minikube ssh
minikube images

驗證是否設置成功
docker ps

如果顯示的是 Minikube 中的容器而不是你主機的容器,說明設置成功了。
之後你就可以構建鏡像並直接在 Minikube 中使用了:
docker build -t my-image .
記得在 Kubernetes 部署文件中設置:
imagePullPolicy: Never
2. 在Minikube 中建立網站
在 local 建立兩個檔案分別是 deployment 與 service 用

Deployment yaml(用來管理 Pod)
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-nginx
template:
metadata:
labels:
app: my-nginx
spec:
containers:
- name: nginx
image: my-custom-nginx:latest
imagePullPolicy: Never # ⬅️ 這個非常關鍵!
ports:
- containerPort: 80
Service yaml(用來對外暴露端口)
apiVersion: v1
kind: Service
metadata:
name: my-nginx-service
spec:
type: NodePort # NodePort 在 minikube 下方便測試,實際生產會用 LoadBalancer 或 Ingress
selector:
app: my-nginx
ports:
- protocol: TCP
port: 80 # 服務端口(Cluster 內部)
targetPort: 80 # Pod 內部 containerPort
nodePort: 30080 # minikube 主機對外端口,30000~32767 之間
套用配置
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml

確認是否正常運行
minikube service my-nginx-service


查 Service port
kubectl get svc
