k8s的Deployment.yaml配置文件字段详解

 1apiVersion: extensions/v1beta1  # 指定api版本,此值必须在kubectl api-versions中  
 2kind: Deployment  # 指定创建资源的角色/类型   
 3metadata:  # 资源的元数据/属性 
 4  name: demo  # 资源的名字,在同一个namespace中必须唯一
 5  namespace: default # 部署在哪个namespace中
 6  labels:  # 设定资源的标签
 7    app: nginx
 8    version: v1
 9spec: # 资源规范字段
10  replicas: 1 # 声明副本数目
11  revisionHistoryLimit: 3 # 保留历史版本
12  selector: # 选择器
13    matchLabels: # 匹配标签
14      app: nginx
15      version: v1
16  minReadySeconds: 30 #定义新建的 Pod 经过多少秒后才被视为可用
17  terminationGracePeriodSeconds: 30 #30秒内 (默认 30s) 还未完全停止,就发送 SIGKILL 信号强制杀死进程。
18  progressDeadlineSeconds: 600 #升级过程中的最大时间(如果升级过程被暂停了,该时间也会同步暂停,时间不会一直增长)
19  strategy: # 策略
20    rollingUpdate: # 滚动更新
21      maxSurge: 30% # 最大额外可以存在的副本数,可以为百分比,也可以为整数
22      maxUnavailable: 30% # 示在更新过程中能够进入不可用状态的 Pod 的最大值,可以为百分比,也可以为整数
23    type: RollingUpdate # 滚动更新策略
24  template: # 模版
25    metadata: # 资源的元数据/属性 
26      annotations: # 自定义注解列表
27        sidecar.istio.io/inject: "false" # 自定义注解名字
28      labels: # 设定资源的标签
29        app: nginx
30        version: v1
31    spec: # 资源规范字段
32      containers:
33      - name: nginx# 容器的名字   
34        image: nginx:1.17.0 # 容器使用的镜像地址   
35        imagePullPolicy: IfNotPresent # 每次Pod启动拉取镜像策略,三个选择 Always、Never、IfNotPresent
36                                      # Always,每次都检查;
37                                      # Never,每次都不检查(不管本地是否有);
38                                      # IfNotPresent,如果本地有就不检查,如果没有就拉取(手动测试时,已经打好镜像存在docker容器中时,
39                                      #    使用存在不检查级别, 默认为每次都检查,然后会进行拉取新镜像,因镜像仓库不存在,导致部署失败)
40        volumeMounts:		#文件挂载目录,容器内配置
41        - mountPath: /data/		#容器内要挂载的目录
42          name: share	    #定义的名字,需要与下面vloume对应
43        resources: # 资源管理
44          limits: # 最大使用
45            cpu: 300m # CPU,1核心 = 1000m
46            memory: 500Mi # 内存,1G = 1000Mi
47          requests:  # 容器运行时,最低资源需求,也就是说最少需要多少资源容器才能正常运行
48            cpu: 100m
49            memory: 100Mi
50        livenessProbe: # pod 内部健康检查的设置
51          httpGet: # 通过httpget检查健康,返回200-399之间,则认为容器正常
52            path: /healthCheck # URI地址
53            port: 8080 # 端口
54            scheme: HTTP # 协议
55            # host: 127.0.0.1 # 主机地址
56          initialDelaySeconds: 30 # 表明第一次检测在容器启动后多长时间后开始
57          timeoutSeconds: 5 # 检测的超时时间
58          periodSeconds: 30 # 检查间隔时间
59          successThreshold: 1 # 成功门槛
60          failureThreshold: 5 # 失败门槛,连接失败5次,pod杀掉,重启一个新的pod
61        readinessProbe: # Pod 准备服务健康检查设置
62          httpGet:
63            path: /healthCheck
64            port: 8080
65            scheme: HTTP
66          initialDelaySeconds: 30
67          timeoutSeconds: 5
68          periodSeconds: 10
69          successThreshold: 1
70          failureThreshold: 5
71      	#也可以用这种方法   
72      	#exec: 执行命令的方法进行监测,如果其退出码不为0,则认为容器正常   
73      	#  command:   
74      	#    - cat   
75      	#    - /tmp/health   
76      	#也可以用这种方法   
77      	#tcpSocket: # 通过tcpSocket检查健康  
78      	#  port: number 
79        ports:
80          - name: http # 名称
81            containerPort: 8080 # 容器开发对外的端口 
82            protocol: TCP # 协议
83      imagePullSecrets: # 镜像仓库拉取密钥
84        - name: harbor-certification
85      volumes:		#挂载目录在本机的路径
86      - name: share	#对应上面的名字
87        hostPath:
88          path: /data	#挂载本机的路径
89      affinity: # 亲和性调试
90        nodeAffinity: # 节点亲和力
91          requiredDuringSchedulingIgnoredDuringExecution: # pod 必须部署到满足条件的节点上
92            nodeSelectorTerms: # 节点满足任何一个条件就可以
93            - matchExpressions: # 有多个选项,则只有同时满足这些逻辑选项的节点才能运行 pod
94              - key: beta.kubernetes.io/arch
95                operator: In
96                values:
97                - amd64

发布日期:2023-03-07 23:55 字数:396 用时 2分钟
tags:K8s 云原生