Kubernetes部署Python项目

一、制作docker镜像

参考往期文章:

采用docker部署含有qt界面的Python项目教程_docker pyqt6-CSDN博客

docker部署含深度学习模型的python项目(gpu加速)_docker 部署python项目使用宿主机的显卡-CSDN博客

二、构建pod

1、编写自己的deployment.yaml文件

deployment.yaml文件参数主要分为四大部分:

  • apiVersion: 表示版本
  • kind: 表示资源
  • metadata: 表示元信息
  • spec: 资源规范字段

详细参数说明:

必要参数:

参数名称数据类型注释
versionstring指kubernetes api的版本,基本都是v1,所以默认v1就可以,也可以通过kubectl api-version命令查询到
kindstring指yaml文件定义的资源类型,比如pod,Deployment等
metadataobject元数据对象
metadata.namestring元数据对象的名字,自己定义,比如当你构建Pod的时候,这里就是你自定义Pod的名称
metadata.namespacestring元数据对象的命名空间,可以自定义,如果不自定义则默认default为命名空间
specobject详细定义对象,它的参数主要针对容器,镜像进行一些指定和说明
spec.containers[]list容器列表定义,自定义容器信息
spec.containers[].namestring自定义容器的名字
spec.containers[].imagestring指定要用到的镜像名称,注意这里不可以随意自定义,要保证你的镜像可以通过docker拉取到

主要参数:

参数名称数据类型注释
spec.containers[].namestring容器名称
spec.containers[].imagestring指定要用到的镜像名称,注意这里不可以随意自定义,要保证你的镜像可以通过docker拉取到
spec.containers[].imagePullPolicystring

定义拉取镜像策略,有三种选择,Always,Never,IfNotPresent
(1)Always:意思是每次都尝试重新拉取镜像
(2)Never:表示仅使用本地镜像
(3)lfNotPresent:如果本地有镜像就使用本地镜像,没有就拉取在线镜像。默认是Always。

spec.containers[].command[]list指定容器启动命令,因为是数组可以指定多个,不指定则使用镜像打包时使用的启动命令。
spec.containers[].args[]list
指定容器启动命令参数,因为是数组可以指定多个
spec.containers[].workingDirstring指定容器的工作目录,进入容器时默认所在的目录
spec.containers[].volumeMounts[]list指定容器内部的存储卷配置
spec.containers[].volumeMounts[].nameString容器挂载的存储卷的名字
spec.containers[].volumeMounts[].mountPathstring容器挂载的存储卷的路径
spec.containers[].volumeMounts[].readOnlystring存储卷路径的读写模式,值为true或false,默认为true
spec.containers[].ports[]list指定容器需要用到的端口列表
spec.containers[].ports[].namestring自定义端口名称
spec.containers[].ports[].containerPortstring指定要监听的端口号
spec.containers[].ports[].hostPortstring指定容器所在主机需要监听的端口号,默认跟上面containerPort相同,注意设置了hostPort同一台主机无法启动该容器的相同副本(因为主机的端口号不能相同,这样会冲突)所以一般不设置这个参数
spec.containers[].ports[].protocolstring指定通信协议,有        TCP和UDP两种选择,默认为TCP
spec.containers[].env[]list指定容器运行前需设置的环境变量列表
spec.containers[].env[].namestring环境名称
spec.containers[].env[].valuestring环境变量值
spec.containers[].resourcesobject设置容器的资源限制范围
spec.containers[].resources.limitsobject设置容器的资源上线
spec.containers[].resources.requestsobject指定设置容器运行时资源的运行下限
spec.containers[].resources.limits.cpustring指定CPU的限制,单位为core数,1000为一个核心
spec.containers[].resources.limits.memorystring指定运行内存限制,例如:100Mi(100兆)
spec.containers[].resources.requests.cpustring指定CPU的限制,单位为core数,1000为一个核心
spec.containers[].resources.requests.memorystring指定运行内存限制,例如:100Mi(100兆)

其他属性:

参数名称数据类型注释
spec.restartPolicystring

定义Pod的重启策略,可选值为Always、OnFailure和Never默认值为Always。
1.Always:Pod一旦终止运行,则无论容器是如何终止的,kubelet服务都将重启它。
2.OnFailure:只有Pod以非零退出码终止时,kubelet才会重启该容器。如果容器正常结束(退出码为0),则kubelet将不会重启它。
3.Never:Pod终止后,kubelet将退出码报告给Master,不会重启该Pod。

spec.nodeSelectorobject指定Node节点去运行pod,格式为key:value
spec.imagePullSecretsobject定义pull镜像时使用secret名称,以name:secretkey格式指定
spec.hostNetworkbool定义是否使用主机网络模式,默认值为false。设置true表示使用宿主机网络,不使用docker0网桥,同时设置了true将无法在同一台宿主机上启动第二个副本

deployment.yaml模板

apiVersion: v1
kind: Pod
metadata:
  name: deployment-pod3
  labels: 
    type: app
    version: 1.0.0
  namespace: 'default'

spec:
  containers:
  - name: deployment-pod1
    image: nextcloud
    imagePullPolicy: IfNotPresent
    ports:
    - name: http
      containerPort: 80
      protocol: TCP
    env:
    - name: JVM_OPTS
      value: '-Xms128m -Xmx128m'
    resources:
      requests: 
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 200m
        memory: 256Mi
  restartPolicy: OnFailure


 

2、创建并分配Pod

sudo kubectl create -f deployment.yaml

三、查看Pod状态

sudo kubectl get pod   #查看Pod运行状态

sudo kubectl get pod -owide   #查看pod详细信息

sudo kuebctl describe pod <pod名>   #查看pod创建的详细信息,以及事件 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值