要跑起來一個container在kubernetes需要兩個概念
Kubernetes最小的部署元件命名為Pod
Pod裡可以包含一個或一組container,透過config.yaml如下來描述一個pod
# nestjsapi-pod.config.yaml
apiVersion: v1
kind: Pod
metadata:
name: nestjs-pod
labels:
component: api
spec:
containers:
- name: nestjsapi
image: yirengoo/nestjsapi
ports:
- containerPort: 3000
image可以指定在Docker Hub的image,重要的是labels屬性,宣告pod並不會啟動其中的containers,需要Service才會告訴kubernetes建立一個node,跑pod中container。
# nestjsapi-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nestjsapi-service
spec:
type: NodePort
ports:
- port: 5000
targetPort: 3000
nodePort: 30001
selector:
component: api
Selector的component屬性指到pod的labels的component,告訴kubernetes建立一個Node跑api那一組containers
nodePort是expose到外部的port
載入Pod config
kubectl apply -f nestjsapi-pod.config.yaml
載入Service config
kubectl apply -f nestjsapi-service.yaml
讀取Kubernetes上Pods資訊
kubectl get pods
讀取Kubernetes上Service資訊
kubectl get services
取得minikube vm ip
minikube ip
使用postman測試之前nestjsapi
得到之前的錯誤訊息,因為資料庫還沒設定。
或許用hello-world image比較單純
明天繼續