一、制作docker镜像

参考往期文章:

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

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

二、构建pod

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

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

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

详细参数说明:

必要参数:

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

主要参数:

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

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

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

其他属性:

参数名称 数据类型 注释
spec.restartPolicy string

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

spec.nodeSelector object 指定Node节点去运行pod,格式为key:value
spec.imagePullSecrets object 定义pull镜像时使用secret名称,以name:secretkey格式指定
spec.hostNetwork bool 定义是否使用主机网络模式,默认值为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创建的详细信息,以及事件 

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐