在K8s中部署FLASK项目
最近开发写了个python项目,基于flask.简单写下思路
1、找到公司环境中类似的python语言程序镜像
2、用docker单独跑这个镜像程序
3、查看开发写的代码中需要用到的模块,在pipfile中查找是否齐全,这里我装了6个模块
pipenv install 即可
4、编写一个shell脚本拉取gitlab代码。代码拉取的位置也需要规划好,由于在K8S环境中使用PVC,所以在nfs目录创建/nfs/data/test/app/maintenance-item-match/
[root@master01 registry_server]# showmount -e
Export list for master01:
/opt/upload/file *
/opt/file *
/nfs/data *
改目录可以正常供给
5、找到开发人员要到启动命令端口这些,拉取代码,更新到nfs目录
6 、重新运行docker
docker run -d -p 5000:5000 \
--name xxxxx \
-v /nfs/data/test/app/maintenance-item-match:/home/www/htdocs \
xxxxxx:8082/crm-test/dms-appwingspre:v6.0
7、测试启动命令,没报错就OK,commit一下镜像就制作完毕
8、编写yaml文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: maintenance-item-match
namespace: dms-test
labels:
name: maintenance-item-match
spec:
replicas: 2
selector:
matchLabels:
app: maintenance-item-match
template:
metadata:
labels:
app: maintenance-item-match
spec:
containers:
- name: maintenance-item-match
image: 10.0.15.131:8082/crm-test/dms-appwingspre:yangjian
env:
- name: TZ
value: Asia/Shanghai
- name: LANG
value: en_US.utf8
- name: LC_ALL
value: en_US.UTF-8
- name: LC_LANG
value: en_US.UTF-8
- name: FLASK_ENV
value: testing
- name: RABBIT_ENV
value: testing
command: [ "/bin/bash", "-ce", "cd /home/www/htdocs/dms-appwings && pipenv run gunicorn --log-config configs/gunicorn-logging.ini -w 2 -b 0.0.0.0:6100 CarMaintenance_2:app" ]
volumeMounts:
- mountPath: /home/www/htdocs
name: maintenance-item-match
ports:
- containerPort: 8001
resources:
requests:
memory: "1Gi"
limits:
memory: "4Gi"
- name: maintenance-item-match-sidecar
image: xxxxxxx:8082/crm-test/java:dmsv2.0
workingDir: /home/www/htdocs/sidecar/bin/
env:
- name: TZ
value: Asia/Shanghai
command: [ "/bin/bash", "-ce", "sh start.sh test"]
volumeMounts:
- mountPath: /home/www/htdocs
name: maintenance-item-match
volumes:
- name: maintenance-item-match
persistentVolumeClaim:
claimName: maintenance-item-match
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: maintenance-item-match
namespace: dms-test
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
storageClassName: managed-nfs-storage
selector:
matchLabels:
pv: maintenance-item-match
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: maintenance-item-match
labels:
pv: maintenance-item-match
spec:
capacity:
storage: 100Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: managed-nfs-storage
nfs:
path: /nfs/data/test/app/maintenance-item-match
server: 172.20.69.31
---
apiVersion: v1
kind: Service
metadata:
name: maintenance-item-match
namespace: dms-test
labels:
app: maintenance-item-match
spec:
ports:
- port: 6100
targetPort: 6100
protocol: TCP
selector:
app: maintenance-item-match
---
apiVersion: v1
kind: Service
metadata:
namespace: dms-test
name: maintenance-item-match-ssh
labels:
app: maintenance-item-match-ssh
spec:
ports:
- name: ssh
port: 22
targetPort: 22
nodePort: 30612
- name: web
port: 6100
targetPort: 6100
nodePort: 30712
selector:
app: maintenance-item-match
type: NodePort
nfs所在目录对应代码所在目录
下面的端口对应启动时暴露的6100
9直接apply 运行
浙公网安备 33010602011771号