k8s flask

使用flask开发一个简单的应用,k8s进行部署这个应用。在这里只提供一个简单的框架结构。

整个项目的目录结构

/Dockerfile
/k8s
  /k8s/k8s_flask.server.yml
  /k8s/k8s_flask.yml
/src
  /src/app.py
  /src/requirements.txt

其中Dockerfile的内容:

WORKDIR /k8s_flask/src

# Installing python dependencies
COPY ./src/requirements.txt /k8s_flask/src
RUN pip install --no-cache-dir -r requirements.txt

# Copying src code to Container
COPY ./src/  /k8s_flask/src

# Application Environment variables
ENV APP_ENV development

# Exposing Ports
EXPOSE 5000

# Setting Persistent data
VOLUME ["/app-data"]

# Running Python Application
CMD python app.py
# ENTRYPOINT ["shell",  "as.sh"]
# ADD startup /k8s_python_code/src
# RUN chmod a+x /k8s_flask/src/as.sh
# ENTRYPOINT ["/k8s_python_code/src/as.sh"]

其中k8s_flask.yml为部署文件,deployment,能够显示pod的信息

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ksflask
  labels:
    app: ksflask
    serviceName: "ksflask"
    serviceVersion: "v1"
spec:
  selector:
    matchLabels:
      app: ksflask
  replicas: 1
  template:
    metadata:
      labels:
        app: ksflask
        serviceName: "ksflask"
        serviceVersion: "v1"
    spec:
      containers:
      - name: ksflask
        image: 172.27.233.13:35000/k8s_flask:0.4
        # command: [ "/bin/bash", "/k8s_python_code/src/as.sh" ]
        ports:
        - containerPort: 5000

其中k8s_flask.server.yml为暴漏服务的yml文件,部署后不会显示pod信息

apiVersion: v1
kind: Service
metadata:
  name: ksflask
spec:
  type: NodePort
  ports:
    - name: ksflask
      port: 5000
      targetPort: 5000
      nodePort: 32031
  selector:
    app: ksflask
    serviceName: "ksflask"

其中app.py是flask的简单服务

from flask import Flask

app = Flask(__name__)

@app.route('/')
def Project():
  return 'coming baby!'

@app.route('/pdf_jpg', methods=['post','get'])
def pdf_jpg():
    file_dir = request.args.get('file_dir')
    print(file_dir)
    return jsonify({'t': [file_dir]})

if __name__ == '__main__':
  app.run(host='0.0.0.0')

其中requirements.txt是运行所需的模块

flask
requests

运行过程:

在Dockerfile路径层,运行

docker build -t 172.27.233.13:35000/k8s_flask:0.1 .
docker tag k8s_flask:latest 172.27.233.13:35000/k8s_flask:0.1
docker push 172.27.233.13:35000/k8s_flask:0.1

进入k8s文件夹,运行

kubectl create -f k8s_flask.yml
kubectl create -f k8s_flask.server.yml

若需要删除

kubectl delete -f k8s_flask.server.yml

重新部署pod

如果需要pod内部和本地交互,那么设置同共享的文件目录:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ksflask
  labels:
    app: ksflask
    serviceName: "ksflask"
    serviceVersion: "v1"
spec:
  selector:
    matchLabels:
      app: ksflask
  replicas: 1
  template:
    metadata:
      labels:
        app: ksflask
        serviceName: "ksflask"
        serviceVersion: "v1"
    spec:
      containers:
      - name: ksflask
        image: ip:35000/k8s_flask:0.9
        # command: [ "/bin/bash", "/k8s_python_code/src/as.sh" ]
        ports:
        - containerPort: 5000
        volumeMounts:
        - name: ksflasks
          mountPath: '/k8s_flask/src/pdf'
      volumes:
      - name: ksflasks
        hostPath:
          path: "/root/wuhao/k8s_flask/src/pdf"

其中共享目录的地方

       volumeMounts:
        - name: ksflasks
          mountPath: '/k8s_flask/src/pdf'
      volumes:
      - name: ksflasks
        hostPath:
          path: "/root/wuhao/k8s_flask/src/pdf" 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值