三、Kubernetes YAML文件

Pod 是 Kubernetes 中最基本的资源对象之一,代表一组容器的单位。以下是几个重要的 Pod 字段的含义和用法:

 metadata:包含了 Pod 的元数据,例如名称、标签、命名空间等。

 spec:定义了 Pod 的行为和构建,例如容器镜像、资源限制、环境变量等。 

 status:存储了 Pod 的运行状态,例如 Pod IP 地址、容器状态、节点名称等。

 containers:定义了 Pod 中包含的容器,包括容器名称、镜像、端口映射等。

 restartPolicy:定义了在容器停止时的重启策略,可以设置为 "Always"、"OnFailure" 或 "Never"。

 dnsPolicy:定义了 Pod 的 DNS 策略,例如使用 Cluster DNS 还是自定义 DNS。 

 nodeSelector:指定 Pod 运行在哪个节点上,可以根据节点标签进行选择。

https://dandelioncloud.cn/article/details/1566670076827103234

apiVersion: apps/v1 # 指定api版本,此值必须在kubectl api-versions中

kind: Deployment  # 指定创建资源的角色/类型,如 pod、deployment、statefulset、job、cronjob

metadata:  # 资源的元数据/属性

  name: demo  # 资源的名字,在同一个namespace中必须唯一

  namespace: default # 部署在哪个namespace中

  labels:  # 设定资源的标签

    app: demo

    version: stable

spec: # 资源规范字段

  replicas: 1 # 声明副本数目

  revisionHistoryLimit: 3 # 保留历史版本

  selector: # 选择器

    matchLabels: # 匹配标签

      app: demo

      version: stable

  strategy: # 策略

    rollingUpdate: # 滚动更新

      maxSurge: 30% # 最大额外可以存在的副本数,可以为百分比,也可以为整数

      maxUnavailable: 30% # 示在更新过程中能够进入不可用状态的 Pod 的最大值,可以为百分比,也可以为整数

    type: RollingUpdate # 滚动更新策略

  template: # 模版

    metadata: # 资源的元数据/属性

      annotations: # 自定义注解列表

        sidecar.istio.io/inject: "false" # 自定义注解名字

      labels: # 设定资源的标签

        app: demo

        version: stable

    spec: # 资源规范字段

      containers:

      - name: demo # 容器的名字

        image: demo:v1 # 容器使用的镜像地址

        imagePullPolicy: IfNotPresent # 每次Pod启动拉取镜像策略,三个选择 Always、Never、IfNotPresent

                                      # Always,每次都检查;Never,每次都不检查(不管本地是否有);IfNotPresent,如果本地有就不检查,如果没有就拉取(手动测试时,

                                      # 已经打好镜像存在docker容器中时,使用存在不检查级别,

                                      # 默认为每次都检查,然后会进行拉取新镜像,因镜像仓库不存在,导致部署失败)

        resources: # 资源管理

          limits: # 最大使用

            cpu: 300m # CPU,1核心 = 1000m

            memory: 500Mi # 内存,1G = 1000Mi

          requests:  # 容器运行时,最低资源需求,也就是说最少需要多少资源容器才能正常运行

            cpu: 100m

            memory: 100Mi

        livenessProbe: # pod 内部健康检查的设置

          httpGet: # 通过httpget检查健康,返回200-399之间,则认为容器正常

            path: /healthCheck # URI地址

            port: 8080 # 端口

            scheme: HTTP # 协议

            # host: 127.0.0.1 # 主机地址

          initialDelaySeconds: 30 # 表明第一次检测在容器启动后多长时间后开始

          timeoutSeconds: 5 # 检测的超时时间

          periodSeconds: 30 # 检查间隔时间

          successThreshold: 1 # 成功门槛

          failureThreshold: 5 # 失败门槛,连接失败5次,pod杀掉,重启一个新的pod

        readinessProbe: # Pod 准备服务健康检查设置

          httpGet:

            path: /healthCheck

            port: 8080

            scheme: HTTP

          initialDelaySeconds: 30

          timeoutSeconds: 5

          periodSeconds: 10

          successThreshold: 1

          failureThreshold: 5

          #也可以用这种方法

          #exec: 执行命令的方法进行监测,如果其退出码不为0,则认为容器正常

          # command:

          # - cat

          # - /tmp/health

          #也可以用这种方法

          #tcpSocket: # 通过tcpSocket检查健康

          # port: number

        ports:

          - name: http # 名称

            containerPort: 8080 # 容器开发对外的端口

            protocol: TCP # 协议

      imagePullSecrets: # 镜像仓库拉取密钥

        - name: harbor-certification

      affinity: # 亲和性调试

        nodeAffinity: # 节点亲和力

          requiredDuringSchedulingIgnoredDuringExecution: # pod 必须部署到满足条件的节点上

            nodeSelectorTerms: # 节点满足任何一个条件就可以

            - matchExpressions: # 有多个选项,则只有同时满足这些逻辑选项的节点才能运行 pod

              - key: beta.kubernetes.io/arch

                operator: In

                values:

                - amd64

---

apiVersion: v1 # 指定api版本,此值必须在kubectl api-versions中

kind: Service # 指定创建资源的角色/类型

metadata: # 资源的元数据/属性

  name: demo # 资源的名字,在同一个namespace中必须唯一

  namespace: default # 部署在哪个namespace中

  labels: # 设定资源的标签

    app: demo

spec: # 资源规范字段

  type: ClusterIP # ClusterIP 类型

  ports:

    - port: 8080 # service 端口

      targetPort: http # pod端口容器暴露的端口

      protocol: TCP # 协议

      name: http # 端口名称

      nodePort: 31319  # 对外访问端口

  selector: # 选择器

    app: demo


1、k8s的yaml文件中kind类型详解

在Kubernetes(k8s)的YAML语法中,kind是一种重要的关键字,它用于指定Kubernetes资源的类型。根据Kubernetes官方文档,以下是kind可能的取值:

Deployment:用于定义应用程序的声明式更新。

StatefulSet:用于有状态应用程序的声明式更新和管理。

DaemonSet:用于在集群中运行一个pod的声明式更新和管理。

Job:用于在集群上运行一次性任务的声明式更新和管理。

CronJob:用于在集群上运行定期作业的声明式更新和管理。

Service:用于定义一组pod的逻辑集合,以及访问这些pod的方式。

Pod:一个Kubernetes中最基本的资源类型,它用于定义一个或多个容器的共同运行环境。

ReplicaSet:用于确保在集群中运行指定数量的pod的声明式更新和管理。

ConfigMap:用于存储非敏感数据(如配置文件)的声明式更新和管理。

Secret:用于存储敏感数据(如密码和密钥)的声明式更新和管理。

ServiceAccount:用于定义一个pod的身份验证信息,以及与Kubernetes API Server进行交互的权限。

Ingress:用于定义从外部访问Kubernetes集群中服务的方式。

PersistentVolume:用于定义持久化存储卷,并使它们在Kubernetes集群中可用。

StorageClass:用于定义不同类型的存储,例如云存储、本地存储等,并为这些存储类型指定默认的参数和策略。

Namespace:用于在Kubernetes集群中创建逻辑分区,从而将资源隔离开来,以提高安全性和可维护性。

ServiceMonitor:用于自动发现和监控在Kubernetes集群中运行的服务。

HorizontalPodAutoscaler:用于自动调整Kubernetes集群中的pod副本数量,以根据当前负载需求实现自动扩展或收缩。

NetworkPolicy:用于定义网络访问策略,以控制pod之间的网络流量。

CustomResourceDefinition:用于定义自定义资源,以扩展Kubernetes API和CRD操作。

PodDisruptionBudget:用于定义维护期间可以安全中断的pod的最小数量,以确保Kubernetes集群的高可用性。

Role:用于定义对Kubernetes资源的操作权限,例如读、写、更新、删除等。

ClusterRole:与Role类似,但是可以在整个Kubernetes集群中使用。





1、ownerReferences:表示资源之间的从属关系。 在 kubernetes 垃圾收集器还没出来之前,所有的级联操作都需要依靠客户端自己去实现,例如删除 ReplicaSet 时会删除它依赖的 Pod。垃圾收集器通过 metadata.ownerReferences 字段标识资源的 属主、附属关系,如果属主资源没了,附属资源会自动被回收。https://zhuanlan.zhihu.com/p/577185348

apiVersion: xxx

kind: xxx

metadata: name: xxx 

     ownerReferences: 

         -apiVersion: xxx 

         kind: xxx 

         blockOwnerDeletion: true 

         controller: true 

         name: xxx

         uid: xxx

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容