k8s的yaml 文件配置详解

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

发表评论

表情:
评论列表 (有 0 条评论,934人围观)

还没有评论,来说两句吧...

相关阅读