K8S 常用资源 YAML 详解

DevOps技术栈

共 10593字,需浏览 22分钟

 · 2023-05-15

原文链接:https://blog.51cto.com/qiangsh/5017886


Pod资源对象yaml详解

    apiVersion: v1     #必选,版本号,例如v1
kind: Pod       #必选,指定创建资源的角色/类型  
metadata:        #必选,资源的元数据/属性
 name: string       #必选,资源的名字,在同一个namespace中必须唯一  
 namespace: string     #必选,Pod所属的命名空间
 labels:      #自定义标签,使这个标签在service网络中备案,以便被获知
   - name: string   #自定义标签名字
 annotations:       #设置自定义注解列表  
   - name: string   #设置自定义注解名字  
spec:         #必选,设置该资源的详细定义
 containers:    #必选,Pod中容器列表
 - name: string     #必选,容器名称
   image: string    #必选,容器的镜像名称
   imagePullPolicy: [Always | Never | IfNotPresent] #获取镜像的策略 Alawys表示下载镜像 IfnotPresent表示优先使用本地镜像,否则下载镜像,Nerver表示仅使用本地镜像
   command: [string]    #容器的启动命令列表,如不指定,使用打包时使用的启动命令
   args: [string]     #容器的启动命令参数列表
   workingDir: string   #容器的工作目录
   volumeMounts:        #挂载到容器内部的存储卷配置
   - name: string     #引用pod定义的共享存储卷的名称,需用volumes[]部分定义的的卷名
     mountPath: string    #存储卷在容器内mount的绝对路径,应少于512字符
     readOnly: boolean    #是否为只读模式
   ports:       #需要暴露的端口库号列表
   - name: string     #端口号名称
     containerPort: int  #容器需要监听的端口号
     hostPort: int    #容器所在主机需要监听的端口号,默认与Container相同
     protocol: string     #端口协议,支持TCP和UDP,默认TCP
   env:       #容器运行前需设置的环境变量列表
   - name: string     #环境变量名称
     value: string    #环境变量的值
   resources:       #资源限制和请求的设置
     limits:      #资源限制的设置
       cpu: string    #Cpu的限制,单位为core数,将用于docker run --cpu-shares参数
       memory: string   #内存限制,单位可以为Mib/Gib,将用于docker run --memory参数
     requests:         #资源请求的设置
       cpu: string    #Cpu请求,容器启动的初始可用数量
       memory: string   #内存清楚,容器启动的初始可用数量
   livenessProbe:     #对Pod内个容器健康检查的设置,当探测无响应几次后将自动重启该容器,检查方法有exec、httpGet和tcpSocket,对一个容器只需设置其中一种方法即可
     exec:      #对Pod容器内检查方式设置为exec方式
       command: [string]  #exec方式需要制定的命令或脚本
     httpGet:       #对Pod内个容器健康检查方法设置为HttpGet,需要制定Path、port
       path: string
       port: number
       host: string
       scheme: string
       HttpHeaders:
       - name: string
         value: string
     tcpSocket:     #对Pod内个容器健康检查方式设置为tcpSocket方式
        port: number
      initialDelaySeconds: 0  #容器启动完成后首次探测的时间,单位为秒
      timeoutSeconds: 0   #对容器健康检查探测等待响应的超时时间,单位秒,默认1秒
      periodSeconds: 0    #对容器监控检查的定期探测时间设置,单位秒,默认10秒一次
      successThreshold: 0
      failureThreshold: 0
      securityContext:
        privileged:false
   restartPolicy: [Always | Never | OnFailure]#Pod的重启策略,Always表示一旦不管以何种方式终止运行,kubelet都将重启,OnFailure表示只有Pod以非0退出码退出才重启,Nerver表示不再重启该Pod
  nodeSelector: obeject  #设置NodeSelector表示将该Pod调度到包含这个label的node上,以key:value的格式指定
  imagePullSecrets:    #Pull镜像时使用的secret名称,以key:secretkey格式指定
   - name: string
   hostNetwork:false      #是否使用主机网络模式,默认为false,如果设置为true,表示使用宿主机网络
   volumes:       #在该pod上定义共享存储卷列表
   - name: string     #共享存储卷名称 (volumes类型有很多种)
    emptyDir: {}     #类型为emtyDir的存储卷,与Pod同生命周期的一个临时目录。为空值
     hostPath: string     #类型为hostPath的存储卷,表示挂载Pod所在宿主机的目录
       path: string     #Pod所在宿主机的目录,将被用于同期中mount的目录
     secret:      #类型为secret的存储卷,挂载集群与定义的secre对象到容器内部
       scretname: string  
       items:    
       - key: string
         path: string
     configMap:     #类型为configMap的存储卷,挂载预定义的configMap对象到容器内部
       name: string
       items:
       - key: string
         path: string

Deployment资源对象yaml详解

    apiVersion: extensions/v1beta1
kind: Deployment
metadata: ----------------------------------------#元数据
 annotations: -------------------------------------#注释信息
   deployment.kubernetes.io/revision: '1'
   k8s.kuboard.cn/ingress: 'false'
   k8s.kuboard.cn/service: NodePort
   k8s.kuboard.cn/workload: nextcloud
 labels:-------------------------------------------#标签信息
   k8s.kuboard.cn/layer: ''            
   k8s.kuboard.cn/name: nextcloud
 name: nextcloud-----------------------------------#名称
 namespace: nextcloud------------------------------#命名空间
spec:-----------------------------------------------#定义容器模板,该模板可以包含多个容器
 replicas: 3---------------------------------------#副本数量
 selector:-----------------------------------------#标签选择器
   matchLabels:
     k8s.kuboard.cn/layer: ''
     k8s.kuboard.cn/name: nextcloud
 strategy:-----------------------------------------#滚动升级策略
   type: RollingUpdate-----------------------------#类型
   rollingUpdate:----------------------------------#由于replicas为3,则整个升级,pod个数在2-4个之间    
     maxSurge: 25%---------------------------------#滚动升级时会先启动25%pod  
     maxUnavailable: 25%---------------------------#滚动升级时允许的最大Unavailable的pod个数
 template:                     #镜像模板                  
   metadata: ------------------------------------#元数据
     labels:---------------------------------------#标签
       k8s.kuboard.cn/layer: ''
       k8s.kuboard.cn/name: nextcloud
   spec: ------------------------------------------#定义容器模板,该模板可以包含多个容器
     containers: ----------------------------------#容器信息
   - name: nextcloud --------------------------#容器名称
         image: '172.16.20.100/library/nextcloud:yan' #镜像名称
         imagePullPolicy: Always ------------------#镜像下载策略
         ports:
           - name: http
             containerPort: 80
             protocol: TCP
         env
         resources: -------------------------------#CPU内存限制
       limits: --------------------------------#限制cpu内存                      
             cpu: 200m
             memory: 200m
           requests: ------------------------------#请求cpu内存
             cpu: 100m
             memory: 100m
         securityContext: -------------------------#安全设定
           privileged: true -----------------------#开启享有特权
         volumeMounts: ----------------------------#挂载volumes中定义的磁盘
       - name: html ---------------------------#挂载容器1
             mountPath: /var/www/html
           - name: session ------------------------#挂载容器1
             mountPath: /var/lib/php/session      
     volumes:  ------------------------------------#在该pod上定义共享存储卷列表
       - name: html -------------------------------#共享存储卷名称 (volumes类型有很多种)
         persistentVolumeClaim: -------------------#volumes类型为pvc
           claimName: html  -----------------------#关联pvc名称
       - name: session
         persistentVolumeClaim:
           claimName: session        
     restartPolicy: Always ------------------------#Pod的重启策略
                             #Always表示一旦不管以何种方式终止运行,kubelet都将重启,
                             #OnFailure表示只有Pod以非0退出码退出才重启,
                             #Nerver表示不再重启该Pod
     schedulerName: default-scheduler -------------#指定pod调度到节点

Service资源对象yaml详解

    
    apiVersion: v1
kind: Service
metadata:  ---------------------------------#元数据
annotations: -----------------------------#注释信息
  k8s.kuboard.cn/workload: nextcloud
labels: ----------------------------------#标签信息
  k8s.kuboard.cn/layer: ''
  k8s.kuboard.cn/name: nextcloud
name: nextcloud --------------------------#名称
namespace: nextcloud ---------------------#命名空间
spec: --------------------------------------#定义Service模板
clusterIP: 10.0.181.206 ------------------#指定svcip地址 不指定则随机
 
=================================================================================================
 #NodePort类型:集群外网络
type: NodePort ---------------------------#类型为NodePort  
ports:
   - name: mnwwwp
    nodePort: 30001 ----------------------#当type = NodePort时,指定映射到物理机的端口号
    port: 80 -----------------------------#服务监听的端口号
    protocol: TCP ------------------------#端口协议,支持TCP和UDP,默认TCP
    targetPort: 80 -----------------------#需要转发到后端Pod的端口号
 
 ==================================================================================================
 #ClusterIP类型:集群内网络
type: ClusterIP --------------------------#
ports:
   - name: mnwwwp
    port: 80
    protocol: TCP
    targetPort: 80
   - name: j5smwx
    port: 22
    protocol: TCP
    targetPort: 22
     
selector:  -------------------------------#label selector配置,将选择具有label标签的Pod作为管理
  k8s.kuboard.cn/layer: ''
  k8s.kuboard.cn/name: nextcloud
sessionAffinity: None --------------------#是否支持session


- END -

    
      
        
            
              
                  
                    
                      
                          
                            
                                 
                                推荐阅读 
                                
                                  





                        
                          31天拿下K8s含金量最高的CKA+CKS证书! 19 个 K8S集群常见问题总结,建议收藏
                            
Prometheus 高可用架构 Thanos
运维高可用架构的 6 大常规方案
运维监控指标全方面总结 我去,Linux 系统 CPU 100% 打满了! 解决 Linux 性能瓶颈的黄金 60 秒! 9 个实用 Shell 脚本,建议收藏!
详解 K8S Helm CI/CD发布流程
ES+Redis+MySQL,这套高可用架构设计太顶了! 一台服务器最大能支持多少条TCP连接? K8S运维必知必会的 Kubectl 命令总结
16 张图硬核讲解 Kubernetes 网络
史上最全 Jenkins Pipeline流水线详解 Jenkins 自动化部署实例讲解,另附安装教程! 主流监控系统 Prometheus 学习指南
                          
                              搭建一套完整的企业级 K8s 集群(二进制方式)
                            
                            
                            
                                40个 Nginx 常问面试题
                              
                            
                                Linux运维工程师 50个常见面试题
                              
                            
          
            
                
                    

点亮,服务器三年不宕机bd5f7d06b3aee315e7d07fcc0dd7720b.webp
浏览 28
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报