k8s之yaml详解

k8s之yaml详解

apiVersion: v1             #指定api版本,此值必须在kubectl apiversion中
kind: Pod                  #指定创建资源的角色/类型
metadata:                  #资源的元数据/属性
  name: web04-pod          #资源的名字,在同一个namespace中必须唯一
  labels:                  #设定资源的标签
    k8s-app: apache
    version: v1
    kubernetes.io/cluster-service: "true"
  annotations:             #自定义注解列表
    - name: String         #自定义注解名字
spec:            #specification of the resource content 指定该资源的内容
  restartPolicy: Always    #表明该容器一直运行,默认k8s的策略,在此容器退出后,会立即创建一个相同的容器
  nodeSelector:            #节点选择,先给主机打标签kubectl label nodes kube-node1 zone=node1
    zone: node1
  containers:
  - name: web04-pod        #容器的名字
    image: web:apache      #容器使用的镜像地址
    imagePullPolicy: Never #三个选择Always、Never、IfNotPresent,每次启动时检查和更新(从registery)images的策略,
                           # Always,每次都检查
                           # Never,每次都不检查(不管本地是否有)
                           # IfNotPresent,如果本地有就不检查,如果没有就拉取
    command: [‘sh‘]        #启动容器的运行命令,将覆盖容器中的Entrypoint,对应Dockefile中的ENTRYPOINT
    args: ["$(str)"]       #启动容器的命令参数,对应Dockerfile中CMD参数
    env:                   #指定容器中的环境变量
    - name: str            #变量的名字
      value: "/etc/run.sh" #变量的值
    resources:             #资源管理
      requests:            #容器运行时,最低资源需求,也就是说最少需要多少资源容器才能正常运行
        cpu: 0.1           #CPU资源(核数),两种方式,浮点数或者是整数+m,0.1=100m,最少值为0.001核(1m)
        memory: 32Mi       #内存使用量
      limits:              #资源限制
        cpu: 0.5
        memory: 32Mi
    ports:
    - containerPort: 80    #容器开发对外的端口
      name: httpd          #名称
      protocol: TCP
    livenessProbe:         #pod内容器健康检查的设置
      httpGet:             #通过httpget检查健康,返回200-399之间,则认为容器正常
        path: /            #URI地址
        port: 80
        #host: 127.0.0.1   #主机地址
        scheme: HTTP
      initialDelaySeconds: 180 #表明第一次检测在容器启动后多长时间后开始
      timeoutSeconds: 5    #检测的超时时间
      periodSeconds: 15    #检查间隔时间
      #也可以用这种方法
      #exec: 执行命令的方法进行监测,如果其退出码不为0,则认为容器正常
      #  command:
      #    - cat
      #    - /tmp/health
      #也可以用这种方法
      #tcpSocket: //通过tcpSocket检查健康
      #  port: number
    lifecycle:             #生命周期管理
      postStart:           #容器运行之前运行的任务
        exec:
          command:
            - ‘sh‘
            - ‘yum upgrade -y‘
      preStop:             #容器关闭之前运行的任务
        exec:
          command: [‘service httpd stop‘]
    volumeMounts:          #详情请见http://blog.csdn.net/liyingke112/article/details/76577520
    - name: volume         #挂载设备的名字,与volumes[*].name 需要对应
      mountPath: /data     #挂载到容器的某个路径下
      readOnly: True
  volumes:                 #定义一组挂载设备
  - name: volume           #定义一个挂载设备的名字
    #meptyDir: {}
    hostPath:
      path: /opt           #挂载设备类型为hostPath,路径为宿主机下的/opt,这里设备类型支持很多种

原文地址:https://www.cnblogs.com/herui1991/p/12011223.html

时间: 2024-08-30 15:06:43

k8s之yaml详解的相关文章

k8s应用配置详解

1. 概述 k8s主要通过Object定义各种部署任务(例如:部署应用.部署Ingress路由规则.部署service等等),通过kubectl命令远程操作k8s集群. Object的定义通常以Yaml格式进行描述. Yaml是一种直观的数据序列化格式,主要通过缩进的方式组织数据. Yaml例子: # 注释 house: family: name: Doe parents: # - 开始,表示数组元素 - John - Jane children: - Paul - Mark - Simone

Prometheus+Grafan监控k8s集群详解

一,Prometheus概述 1,什么是Prometheus?Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包,自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人员和用户社区.现在,它是一个独立的开源项目,并且独立与任何公司维护.为了强调这一点并阐明项目的治理结构,Prometheus在2016年加入了 Cloud Native Computing Foundation(云原生计算基金会(CNCF)),这是继kuberne

YAML详解

1   YAML简介 YAML,即YAML Ain't Markup Language的缩写,YAML 是一种简洁的非标记语言.YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读. 2   YAML语法 大小写敏感 使用缩进表示层级关系 禁止使用tab缩进,只能使用空格键 缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级. 使用#表示注释 字符串可以不用引号标注 3   YAML 组织结构 YAML 文件可以由一或多个文档组成(也即相对独立的组织结构组成),文档

K8S 之 kubectl详解

一.kubectl陈述式管理方法 kubectl小洁: kubectl是官方的CLI命令行工具,用于apiserver进行通信,将用户在命令行输入的命令,组织并转化为apiserver能识别的信息,进而实现管理k8s各种资源的一种有效途径. 1.查看当前集群所有命名空间 [[email protected] ~]# kubectl get namespace NAME STATUS AGE default Active 42h kube-node-lease Active 42h kube-pu

k8s认证授权详解

理解认证授权 1.1 为什么要认证 想理解认证,我们得从认证解决什么问题.防止什么问题的发生入手. 防止什么问题呢?是防止有人入侵你的集群,root你的机器后让我们集群依然安全吗?不是吧,root都到手了,那就为所欲为,防不胜防了. 其实网络安全本身就是为了解决在某些假设成立的条件下如何防范的问题.比如一个非常重要的假设就是两个节点或者ip之间的通讯网络是不可信任的,可能会被第三方窃取,也可能会被第三方篡改.就像我们上学时候给心仪的女孩传纸条,传送的过程可能会被别的同学偷看,甚至内容可能会从我喜

spring boot 配置文件properties和YAML详解

properties中配置信息并获取值. 1:在application.properties配置文件中添加: 根据提示创建直接创建. 怎么在程序中引用这个值呢? 浏览器访问: 我们可以看到输出的值. 说明: Application属性配置文件的优先顺序 2:端口修改 在application.properties中直接使用: server.port=8888 保存后,spring boot会自动帮我们重启. 我们可以看到重启后的端口就为8888了. 3:日期格式: 在上一节课中我们访问saveu

Kubernetes之yaml文件详解-v1.15.x

Kubernetes之yaml文件详解 K8S 创建资源的方式 K8S有两种创建资源的方式:kubectl 命令和 yaml 配置文件. kubectl命令行:最为简单,一条命令就OK,但缺点也很明显,你并不知道这条命令背后到底做了哪些事!yaml配置文件:提供了一种让你知其然更知其所以然的方式.优势如下: 完整性:配置文件描述了一个资源的完整状态,可以很清楚地知道一个资源的创建背后究竟做了哪些事:灵活性:配置文件可以创建比命令行更复杂的结构:可维护性:配置文件提供了创建资源对象的模板,能够重复

从零开始入门 K8s| 详解 Pod 及容器设计模式

作者|张磊 阿里云容器平台高级技术专家,CNCF 官方大使 一.为什么需要 Pod 容器的基本概念 我们知道 Pod 是 Kubernetes 项目里面一个非常重要的概念,也是非常重要的一个原子调度单位,但是为什么我们会需要这样一个概念呢?在使用容器 Docker 的时候,也没有这个说法.其实,如果想要理解 Pod,首先要理解容器,所以来回顾一下容器的概念: 容器的本质实际上是一个进程,是一个视图被隔离,资源受限的进程. 容器里面 PID=1 的进程就是应用本身,这意味着管理虚拟机等于管理基础设

Kubernetes YAML 文件全字段详解

Kubernetes YAML 文件全字段详解 Deployment yaml 其中主要参数都在podTemplate 中,DaemonSet StatefulSet 中的pod部分一样. apiVersion: v1 kind: Deployment metadata: name: <deploy-name> namespace: <ns-name> labels: <key>: <value> spec: replicas: 2 selector: ma