本次試驗(yàn)僅作為如何學(xué)習(xí) k8s 部署 nuxt 項(xiàng)目屋休,所有服務(wù)器的操作均在本地模擬器(VMware )上執(zhí)行眯分。
1米死、將 nuxt 項(xiàng)目文件除了 node_module 外,全部上傳至服務(wù)器驰怎。
2、編寫 Dockerfile 文件
可在本地創(chuàng)建后上傳或在服務(wù)器創(chuàng)建
# 基于 node 鏡像,構(gòu)建鏡像前需先下載
FROM node:latest
# 鏡像信息
MAINTAINER lzd
# 任意ip
ENV HOST 0.0.0.0
# 容器內(nèi)創(chuàng)建目錄mynuxt
RUN mkdir -p /usr/frontend/mynuxt
# 將當(dāng)前目錄文件復(fù)制到 /usr/frontend/mynuxt 目錄
COPY . /usr/frontend/mynuxt
# 切換工作目錄到 /usr/frontend/mynuxt 目錄
WORKDIR /usr/frontend/mynuxt
# 暴露項(xiàng)目端口
EXPOSE 3000
# 設(shè)置 npm 源
RUN npm config set registry https://registry.npm.taobao.org
# 清除緩存
RUN npm cache clean --force
# 安裝依賴
RUN npm install
# 打包構(gòu)建項(xiàng)目
RUN npm run build
# 啟動(dòng)項(xiàng)目
CMD ["npm", "start"]
3、構(gòu)建鏡像
在當(dāng)前目錄下(/usr/frontend/mynuxt)運(yùn)行:
docker build -t mynuxt:v1.0 .
4牙瓢、標(biāo)記鏡像為私有倉庫的鏡像
docker tag mynuxt:v1.0 <倉庫ip>:5000/mynuxt:v1.0
5、上傳標(biāo)記鏡像
docker push <倉庫ip>:5000/mynuxt:v1.0
由于上傳的是本地私有倉庫间校,可能會遇到如下報(bào)錯(cuò):Get http://<ip>:5000/v2/: dial tcp <ip>:5000: connect: connection refused
矾克,可執(zhí)行:
docker start registry
再次重試上傳
6、編寫配置文件
rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: mynuxt
spec:
replicas: 1
selector:
app: mynuxt
template:
metadata:
labels:
app: mynuxt
spec:
containers:
- name: mynuxt
image: <標(biāo)記倉庫ip>:5000/mynuxt:v1.0
ports:
- containerPort: 3000
svc.yaml
憔足,nodePort
有要求在 30000-32767 以內(nèi)
apiVersion: v1
kind: Service
metadata:
name: mynuxt
spec:
type: NodePort
ports:
- port: 3000
nodePort: 30001
selector:
app: mynuxt
7胁附、部署鏡像
$ kubectl apply -f rc.yaml
$ kubectl apply -f svc.yaml
# 查看 rc、svc
$ kubectl get rc,svc
NAME DESIRED CURRENT READY AGE
replicationcontroller/mynuxt 1 1 0 16s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 56d
service/mynuxt NodePort 10.1.156.151 <none> 3000:30001/TCP 11s
# 查看 pod 狀態(tài)
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
mynuxt-wpbns 1/1 Running 0 38m
部署成功后四瘫,可使用瀏覽器訪問:http://<ip>:30001
查看效果。