在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 运行

 

posted @ 2022-01-20 17:31  不敲代码  阅读(1217)  评论(0)    收藏  举报