k8s pod配置文件ymal详解

举报
IT 叶新东老师 发表于 2021/12/21 22:13:45 2021/12/21
【摘要】 yaml 常用配置模板 一般来说,常用的配置也不算多,如果是涉及到其他一些高级特性,这里倒是没有体现出来,博主举例了一些常用的配置,如下 apiVersion: v1 # 版本号 kind: Pod...

yaml 常用配置模板

一般来说,常用的配置也不算多,如果是涉及到其他一些高级特性,这里倒是没有体现出来,博主举例了一些常用的配置,如下

apiVersion: v1  # 版本号
kind: Pod  # 资源类型
metadata: 
  name: pod-name
  namespace: dev
spec: 
  containers: 
    - image: nginx:1.17.1
      name: nginx-container
      imagePullPolicy: Always
      command: ["/bin/sh","-c","while true;do echo hello;sleep 1;done"]
      args: ["",""]
      ports: 
      - name: "port-name"
        containerPort: 8080
        hostPort: 80
        hostIP: "192.168.1.101"
        protocol: TCP
      env: 
      - name: "key-1"
        value: "value-1"
      - name: "key-2"
        value: "value-2"
      ports: 
      - name: nginx-port
        containerPort: 80
        protocol: TCP
      resources: 
        limits: 
          cpu: "2"
          memory: "10Gi"
        requests: 
          cpu: "1"
          memory: "10Mi"
  initContainers:
  - name: init-mysql
    image: busybox:1.3.0
    command: ["/bin/sh","-c","while true;do echo hello;sleep 1;done"]
    

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

kind

资源类型,一种有以下几种类型

  • pod
  • namespace :命名空间
  • deployment:pod控制器
  • service :网络访问

spec

spec.containers.image

指定容器镜像,包含镜像名称:版本号

spec.containers.command 和 spec.containers.args

启动命令,在启动容器时会执行command的命令,也可以配合args一起使用

command: ["/bin/sh","-c","while true;do echo hello;sleep 1;done"]
 
# 也可以这样
command: ["/bin/sh"]
args: ["-c","while true;do echo hello;sleep 1;done"]

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

特别说明

要知道,linux的指令是分为命令 和参数的,比如ls -lls 是命令,-l是参数,command是命令,args是参数,k8s的command和args其实是为了覆盖Fockerfile的ENTERPOINT功能

  • 如果command和args都没写,使用Dockerfile配置
  • 如果command写了, 那么Dockerfile的默认ENTRYPOINT配置会被忽略,执行command
  • 如果command没写,args写了, 那么Dockerfile的默认ENTRYPOINT配置会执行,使用k8s的args参数
  • 如果command和args都写了, 那么Dockerfile的默认ENTRYPOINT配置会被忽略,执行command并追加上args参数

spec.containers.imagePullPolicy

镜像拉取策略

  • Always:总是去远程仓库拉取镜像
  • Never :不去远程 仓库拉取镜像, 只用本地镜像,本地镜像不存在则报错
  • IfNotPresent:(默认值)如果本地存在则使用本地镜像,不存在则去远程仓库拉取,

注意点

  • 如果镜像的tag为具体的版本号,就像这样nginx:1.17.1,则使用IfNotPresent作为默认策略
  • 如果镜像tag为latest(最新版本),就像这样nginx:latest,则使用Always作为默认策略

spec.containers.env

配置容器的环境变量列表,每一个环境变量其实就是一对键值对,name是key,值为value

spec.containers.ports

端口配置,支持多个端口,访问时的IP和端口是:podIp:containerPort,每个端口以下几个属性

  • name: 端口名称,必须保证唯一
  • containerPort: 容器内要监听的端口
  • hostPort: 容器要在宿主机上公开的端口,如果设置,主机上只能运行容器的一个副本(一般省略)
  • hostIP: 要将外部端口绑定到的主机IP(一般省略)
  • protocol: 端口协议,有以下几个种类
    • TCP(默认)
    • UDP
    • SCTP

spec.containers.resources

resources是资源配额配置,容器中的程序要运行,肯定是要占用资源的,比如cpu和内存,如果不做资源限制,就可能会吃掉大量资源,导致其他 容器无法运行;资源配额有2个子选项“

  • limits: 用于限制运行时容器的最大占用资源,当容器占用资源超过limits时会被终止,并且进行重启;
  • requests:用于设置容器需要的最小资源,如果环境资源不够,容器将无法启动;

每个子选项也有2个属性,,他们分别是

  • cpu: cpu核心数,单位(core)
  • memory: 内存限制

spec.initContainers

initContainers是初始化容器,因为一个pod中可以有多个容器运行,只不过初始化容器和主容器不同,初始化容器必须先启动成功之后才能运行主容器;spec.initContainers下的属性和spec.containers一致;

文章来源: yexindong.blog.csdn.net,作者:java叶新东老师,版权归原作者所有,如需转载,请联系作者。

原文链接:yexindong.blog.csdn.net/article/details/121765649

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。