k8s yaml文件 学习

yaml学习

yaml基础元素

apiVersion指定api版本标签
kind定义资源的类型/角色;资源类型可以是Deployment、Job、Ingress、Service等
metadata定义资源的元数据信息
  -name资源名称
  -labels资源标签
  -namespace资源命名空间
spec定义资源需要的参数属性
 -containers容器属性
   -env环境变量
      -name变量名称
      -value变量值
   -image镜像地址
   -imagePullPolicy镜像拉取策略
   -lifecycle生命周期管理
   -livenessProbe健康检查设置
   -name容器名称
   -ports容器端口列表
      -name端口名称
      -containerPort容器开放对外的端口
      -protocol端口协议

yaml例子详解

通过下面这个测试yaml文件,理清yaml各对象中属性的含义

apiVersion: apps/v1   # 必选,指定Kubernetes API版本,apps/v1是StatefulSet的稳定版本
kind: StatefulSet     # 必选,指定创建的资源类型为StatefulSet(有状态应用控制器)
metadata:             # 必选,资源的元数据信息(描述资源的属性)
  annotations:        # 可选,自定义注解(键值对),用于附加额外信息(如工具配置)
    sidecar.istio.io/inject: 'true'  # 示例:指示Istio服务网格是否注入sidecar代理(此处为启用)
  labels:             # 可选,自定义标签(键值对),用于标识和筛选资源
    app: wooring-test  # 标签:应用名称为wooring-test
    k8s.kuboard.cn/name: wooring-test  # 标签:Kuboard管理工具的资源名称标识
  name: wooring-test-test  # 必选,资源的唯一名称(在命名空间内唯一)
  namespace: wooring-test # 可选,资源所属的命名空间(默认是default,此处指定为wooring-test)
  resourceVersion: '522274827'  # 由K8s自动生成,资源的版本号,每次更新会递增(用于冲突检测)
spec:                  # 必选,资源的规格定义(描述资源的期望状态)
  podManagementPolicy: OrderedReady  # StatefulSet管理Pod的策略:OrderedReady表示按顺序创建/更新Pod(前一个就绪后再处理下一个);可选Parallel(并行处理)
  replicas: 1          # 必选,期望的Pod副本数量(此处为1个)
  revisionHistoryLimit: 10 # 可选,保留的历史版本数量(用于回滚),超过10个旧版本会被清理
  selector:   # 必选,标签选择器,用于匹配要管理的Pod(需与template.metadata.labels对应)
    matchLabels: # 匹配的标签键值对
      app: wooring-test  # 匹配标签app=wooring-test的Pod
      env: prod          # 匹配标签env=prod的Pod
  serviceName: ''       # 可选,指定关联的Headless Service名称(StatefulSet为Pod提供稳定网络标识时需配置,此处为空表示暂不关联)
  template:    # 必选,Pod模板,定义StatefulSet创建的Pod的规格
    metadata:  # 必选,Pod的元数据(同上面的metadata结构,描述Pod的属性)
      annotations:  # 可选,Pod级别的自定义注解
        kubectl.kubernetes.io/restartedAt: '2024-10-28T14:37:30+08:00'  # 示例:记录kubectl重启Pod的时间
        sidecar.istio.io/inject: 'false'  # 示例:Pod级别的Istio sidecar注入配置(此处为禁用,覆盖metadata.annotations的全局配置)
      creationTimestamp: null  # 由K8s自动生成,Pod创建时间(模板中无需手动设置,为null)
      labels:   # 必选,Pod的标签(需被上面的selector.matchLabels匹配)
        app: cpaas-forwarder  # 标签:Pod所属应用为cpaas-forwarder
        env: prod  # 标签:环境为生产环境(prod)
    spec: # 必选,Pod的规格定义(描述Pod的运行状态)
      containers: # 必选,容器列表(Pod中至少有一个容器)
        - env: # 可选,容器的环境变量列表(键值对或引用外部配置)
            - name: TZ  # 环境变量名:时区
              value: Asia/Shanghai  # 取值:亚洲/上海时区
            - name: PROFILES_ACTIVE  # 环境变量名:激活的配置文件
              value: dev  # 取值:开发环境(dev)配置
            - name: NACOS_SERVER  # 环境变量名:Nacos服务地址
              valueFrom:  # 从外部资源获取值(而非硬编码)
                configMapKeyRef:  # 引用ConfigMap中的键
                  key: NACOS_SERVER  # 引用ConfigMap中键为NACOS_SERVER的值
                  name: cpaas-nacos  # 引用的ConfigMap名称为cpaas-nacos
            - name: NACOS_GROUP  # 环境变量名:Nacos配置分组
              value: DEFAULT_GROUP  # 取值:默认分组
            - name: JAVA_TOOL_OPTIONS  # 环境变量名:Java工具参数
              value: >-  # 取值:Java虚拟机参数(内存、日志、代理等配置)
                -Xmx2g -Xms2g -javaagent:/wooring.cn/agent/test.jar
                -XX:+HeapDumpOnOutOfMemoryError -XX:MaxMetaspaceSize=256m
                -XX:+UseG1GC -verbose:gc -XX:+PrintGCDetails
                -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime
                -XX:+PrintAdaptiveSizePolicy -XX:+UseGCLogFileRotation
                -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m
                -Xloggc:./logs/gc.%p.log
          image: 'wooring.cn/test/test:v1.7.3.2-b7831669c6a' # 必选,容器使用的镜像地址(仓库+镜像名+标签)
          imagePullPolicy: Always # 镜像拉取策略:Always表示每次启动Pod都拉取最新镜像;可选IfNotPresent(本地有则不拉)、Never(只使用本地镜像)
          lifecycle: # 可选,容器的生命周期钩子(在特定阶段执行命令)
            postStart: # 容器启动后执行的操作
              exec: # 执行命令
                command:
                  - /bin/sh
                  - '-c'
                  - 'export INDEX=${HOSTNAME##*-}'  # 示例:从Pod主机名中提取索引(StatefulSet的Pod主机名格式为{name}-{序号})
          livenessProbe: # 可选,存活探针(检测容器是否运行正常,失败会重启容器)
            failureThreshold: 5  # 探测失败5次后判定为容器不健康
            httpGet:   # 通过HTTP请求检测健康状态
              path: /actuator/health  # 检测的URL路径(示例:Spring Boot的健康检查端点)
              port: 8090 # 检测的容器端口
              scheme: HTTP # 协议(HTTP/HTTPS)
            initialDelaySeconds: 60   # 容器启动后,首次探测的延迟时间(60秒后开始检测)
            periodSeconds: 60  # 探测间隔时间(每60秒检测一次)
            successThreshold: 1  # 连续1次探测成功即判定为健康
            timeoutSeconds: 30  # 探测超时时间(30秒内无响应则判定失败)
          name: cpaas-forwarder  # 必选,容器的名称(在Pod内唯一)
          ports: # 可选,容器需要暴露的端口列表
            - containerPort: 8098 # 容器内的端口号
              name: rpc-port # 端口名称(用于标识,如服务发现)
              protocol: TCP # 端口协议(TCP/UDP)
            - containerPort: 8090
              name: health-port # 标识为健康检查端口
              protocol: TCP
          resources:  # 可选,容器的资源限制与请求(控制资源分配)
            limits:  # 资源上限(容器最多能使用的资源)
              cpu: '3' # CPU限制为3核
              memory: 3096Mi # 内存限制为3096MiB(约3GB)
            requests: # 资源请求(容器启动时至少需要的资源,调度时参考)
              cpu: 100m # 请求100毫核(0.1核)CPU
              memory: 3096Mi # 请求3096MiB内存
          startupProbe: # 可选,启动探针(检测容器是否启动完成,失败会重启容器)
            failureThreshold: 12  # 最多允许12次探测失败(超过则判定启动失败)
            httpGet:   # 通过HTTP请求检测启动状态
              path: /actuator/health  # 检测路径(同存活探针,可自定义)
              port: 8090 # 检测端口
              scheme: HTTP
            initialDelaySeconds: 30  # 容器启动30秒后开始首次探测
            periodSeconds: 10  # 每10秒探测一次
            successThreshold: 1  # 1次成功即判定启动完成
            timeoutSeconds: 10  # 超时时间10秒
          terminationMessagePath: /dev/termination-log  # 容器终止时输出日志的路径(默认值)
          terminationMessagePolicy: File  # 终止日志的获取策略:File表示从上述路径读取;可选FallbackToLogsOnError(日志中获取)
          volumeMounts:     # 可选,容器的存储卷挂载配置(将外部存储挂载到容器内)
            - mountPath: /home/cpaas/logs   # 容器内的挂载路径(日志存储目录)
              name: cpaas-forwarder-log   # 引用的存储卷名称(需与spec.volumes中的名称对应)
            - mountPath: /etc/localtime  # 挂载主机的时区配置文件
              name: date-config  # 引用的存储卷名称
      volumes:  # 可选,Pod的存储卷列表(供容器挂载使用)
        - name: cpaas-forwarder-log  # 存储卷名称(与volumeMounts.name对应)
          persistentVolumeClaim:  # 引用PersistentVolumeClaim(持久化存储声明)
            claimName: cpaas-forwarder-log  # 引用的PVC名称(需提前创建)
        - name: date-config  # 存储卷名称
          hostPath:  # 挂载主机的文件/目录
            path: /etc/localtime  # 主机上的时区配置文件路径
            type: File  # 挂载类型为文件
          
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇