安装Kubernetes、Docker

Kubernetes、Docker安装教程

项目地址

Github

Flask

  • flask

    run.py

    from flask import Flask
    import os app = Flask(__name__) @app.route("/index/")
    def index():
    user = os.environ.get("USER")
    password = os.environ.get("PASS")
    return f"{user}_{password}" @app.route("/version/")
    def version():
    env = os.environ.get("ENV")
    version = os.environ.get("WEBVERSION")
    return f"{env}_{version}" if __name__ == '__main__':
    app.run(host="0.0.0.0", port=5000, debug=True)

    requirements.txt

    Flask
    gunicorn
    gevent
    greenlet

Docker

  • 编写dockerfile

    Dockerfile

    FROM python:3.6.8
    RUN mkdir simpleweb
    COPY . /simpleweb
    WORKDIR /simpleweb
    # 升级pip
    RUN pip3 install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple # pip读取requirements.txt内容安装所需的库
    RUN pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple
    CMD ["gunicorn", "-b", ":5000", "-k", "gevent", "run:app"]
  • 构建docker 镜像

    docker build -t zhengquantao/simpleweb:latest .
    # 可选命令
    # docker run 执行容器
    # docker exec 进入容器
    # docker tag 重命名
    # docker login 登录
    # docker push 推送到远程仓库

Kubernetes

  • ConfigMap

    存放配置文件

    simpleweb-configmap.yaml #

    apiVersion: v1
    kind: ConfigMap
    metadata:
    name: simpleweb-configmap
    data:
    env: "dev"
    webVersion: "v1"
  • Secret

    存放敏感信息,通过base64编码

    simpleweb-configmap.yaml

    apiVersion: v1
    kind: Secret
    metadata:
    name: db-user-pass
    type: Opaque
    data:
    username: YWRtaW4=
    password: MWYyZDFlMmU2N2Rm
  • Deployment

    编写pod

    simpleweb.yaml

    apiVersion: apps/v1
    kind: Deployment # 采用deployment部署
    metadata:
    name: simpleweb
    namespace: default # 默认命名空间
    labels:
    app: simpleweb
    spec:
    replicas: 2 # 副本设置1个
    selector:
    matchLabels:
    app: simpleweb
    strategy: # 升级策略,这里副本是一个
    rollingUpdate:
    maxSurge: 1
    maxUnavailable: 0
    type: RollingUpdate
    template:
    metadata:
    labels:
    app: simpleweb
    spec:
    containers: #容器相关配置
    - args: # 启动命令
    - gunicorn
    - -b
    - :5000
    - -k
    - gevent
    - run:app
    env: # 这里通过变量注入的方式配置相关参数,你也可以通过数据挂载的方式将配置挂载到容器指定目录下
    - name: USER
    valueFrom:
    secretKeyRef:
    name: db-user-pass
    key: username
    - name: PASS
    valueFrom:
    secretKeyRef:
    name: db-user-pass
    key: password
    - name: ENV
    valueFrom:
    configMapKeyRef:
    name: simpleweb-configmap
    key: env
    - name: WEBVERSION
    valueFrom:
    configMapKeyRef:
    name: simpleweb-configmap
    key: webVersion
    image: zhengquantao/simpleweb:lastest # 镜像地址
    imagePullPolicy: IfNotPresent # (IfNotPresent、Never)本地模式有坑,有远程仓库不建议使用
    name: simpleweb
    ports: # 暴漏端口
    - containerPort: 5000
    name: tcp5000
    protocol: TCP
    workingDir: /simpleweb
    restartPolicy: Always
    terminationGracePeriodSeconds: 5
  • Service

    编写service

    simplewebsvc.yaml

    apiVersion: v1
    kind: Service
    metadata:
    name: simplewebsvc
    namespace: default
    labels:
    app: simplewebsvc
    spec:
    ports:
    - name: tcp5000
    port: 5000
    protocol: TCP
    targetPort: 5000 # 容器端口
    nodePort: 31111 # 对外暴露端口
    selector:
    app: simpleweb # 指向pod
    type: NodePort
  • 执行部署

    kubectl apply -f simpleweb-secret.yaml
    kubectl apply -f simpleweb-configmap.yaml
    kubectl apply -f simpleweb.yaml
    kubectl apply -f simplewebsvc.yaml # kubectl get pods|svc 查看pod
    # kubectl create -f 构建pod
    # kubectl delete -f 删除pod
    # kubectl apply -f 存在更新pod,不存在构建pod
    # kubectl describe 查看详情pod
    # kubectl logs 查看pod日志
    # kubectl port-forward pod端口转发
    # kubectl exec 进入pod
  • 验证

    curl http://127.0.0.1:31111/index/

Flask简单部署至kubernetes的更多相关文章

  1. Flask应用部署

    1. 介绍 前面介绍了<Linux下Nginx使用>, 但是Nginx是一个提供静态文件访问的web服务 首先我们介绍一下Web服务器, 应用服务器和应用框架的关系 客户端: 浏览器或者a ...

  2. 使用Minikube部署本地Kubernetes集群(二十八)

    前言 使用Minikube部署本地k8s集群相对比较简单,非常推荐将其用于本地k8s开发环境,唯一麻烦点的仅仅是网络问题. 在本篇教程中,我们使用了国内的镜像来完成本地k8s集群的搭建.如果搭建过程中 ...

  3. Kubernetes 学习笔记(二):本地部署一个 kubernetes 集群

    前言 前面用到过的 minikube 只是一个单节点的 k8s 集群,这对于学习而言是不够的.我们需要有一个多节点集群,才能用到各种调度/监控功能.而且单节点只能是一个加引号的"集群&quo ...

  4. 吾八哥学k8s(二):golang服务部署到kubernetes

    本篇主要讲解如何将golang的服务部署到kubernetes集群里,附带相关的golang的demo和yml文件内容.纯新手入门方式,生产服务需要完整的CI/CD流程来支持. golang服务代码 ...

  5. 把Spring Cloud Data Flow部署在Kubernetes上,再跑个任务试试

    1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Spring Cloud Data Flow在本地跑得好好的,为什么要部署在Kubernetes上呢?主要是因为Kubern ...

  6. 把H2数据库从jar包部署到Kubernetes,并解决Ingress不支持TCP的问题

    1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! H2 Database是一个优秀的数据库,又小又方便,支持内存和文件形式,经常会在测试.POC(proof of conce ...

  7. 高并发Flask服务部署

    高并发Flask服务部署 AI模型持久化 OOP: 利用面向对象思想,实现算法在内存上的实例化及持久化.即一次模型加载,多次请求调用. class ocr_infer_class(threading. ...

  8. 使用 Kubeadm+Containerd 部署一个 Kubernetes 集群

    本文独立博客阅读地址:https://ryan4yin.space/posts/kubernetes-deployemnt-using-kubeadm/ 本文由个人笔记 ryan4yin/knowle ...

  9. ingress-nginx 的使用 =》 部署在 Kubernetes 集群中的应用暴露给外部的用户使用

    文章转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247488189&idx=1&sn=8175f067 ...

  10. XenApp简单部署

    作者:MR.Yangwj 目录 XenApp简单部署... 1 一.         XenApp安装... 1 (一)      服务器配置任务... 9 1)     许可证服务器配置... 9 ...

随机推荐

  1. 【FAQ】调用应用内支付SDK时报错,如何用tag对问题进行排查和分析

    华为应用内支付服务(In-App Purchases,IAP)为开发者提供便捷的应用内支付体验和简便的接入流程.开发者的应用集成IAP SDK后,调用IAP SDK接口,启动IAP收银台,即可实现应用 ...

  2. 知识图谱在RAG中的应用探讨

    在这篇文章中,我们来详细探讨知识图谱(KG)在RAG流程中的具体应用场景. 缘起 关于知识图谱在现在的RAG中能发挥出什么样的作用,之前看了360 刘焕勇的一个分享,简单的提了使用知识图谱增强大模型的 ...

  3. RestfulApi 学习笔记——分页和排序(六)

    前言 分页和排序时一些非常常规的操作,同样也有一些我们注意的点. 正文 分页 先来谈及分页. 看下前端传递的参数. public class EmployeeDtoParameters { priva ...

  4. c# semaphoreSlim限制线程数

    前言 我们在使用线程的时候,如果多个线程数去访问一个资源的时候,那么是非常影响程序的运行的,因为如果有写的操作,那么需要写锁,那么线程都会堵在同一个地方,那么我们可以限制一下访问一个资源的线程数. 正 ...

  5. Canvas图形编辑器-数据结构与History(undo/redo)

    Canvas图形编辑器-数据结构与History(undo/redo) 这是作为 社区老给我推Canvas,于是我也学习Canvas做了个简历编辑器 的后续内容,主要是介绍了对数据结构的设计以及His ...

  6. 深度解读《深度探索C++对象模型》之返回值优化

    接下来我将持续更新"深度解读<深度探索C++对象模型>"系列,敬请期待,欢迎关注!也可以关注公众号:iShare爱分享,自动获得推文和全部的文章列表. 没有启用返回值优 ...

  7. 关于mac使用figma以及企业微信3.1.18版本,CPU系统占用率飙升至70%

    问题描述 使用一段时间正常,不知道是修改了什么设置,还是有什么软件冲突,导致cpu使用率极高 系统进程中有一个 kernel_task 占用了大量的cpu 并且该占用并不会消失,只要figma打开就会 ...

  8. Apsara Stack 技术百科 | 浅谈阿里云混合云新一代运维平台演进与实践

    ​简介:随着企业业务规模扩大和复杂化及云计算.大数据等技术的不断发展,大量传统企业希望用上云来加速其数字化转型,以获得虚拟化.软件化.服务化.平台化的红利.在这个过程中,因为软件资产规模持续增大而导致 ...

  9. 使用MQTT与函数计算做热力图的实践

    简介: 在各类场景中,关于上报数据的处理无处不在,而以上提到的场景都可以通过本方案的MQTT+FC+API Gateway的方式参考优化来实现. 前言 最近几年,我们在一些商场.图书馆.机场或港口环境 ...

  10. 阿里云AHAS Chaos:应用及业务高可用提升工具平台之故障演练

    简介: 阿里云AHAS Chaos:应用及业务高可用提升工具平台之故障演练 应用高可用服务AHAS及故障演练AHAS Chaos 应用高可用服务(Application High Availabili ...