kubernetes创建资源对象yaml文件例子--pod

本文详细介绍了如何使用YAML文件来配置Kubernetes中的Pod,包括各种参数的意义及使用场景,如容器重启策略、资源限制、健康检查等,并提供了丰富的示例。

kubernetes创建pod的yaml文件,参数说明

apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中  
kind: Pod #指定创建资源的角色/类型  
metadata: #资源的元数据/属性  
  name: web04-pod #资源的名字,在同一个namespace中必须唯一  
  labels: #设定资源的标签,详情请见http://blog.csdn.net/liyingke112/article/details/77482384
    k8s-app: apache  
    version: v1  
    kubernetes.io/cluster-service: "true"  
  annotations:            #自定义注解列表  
    - name: String        #自定义注解名字  
spec:#specification of the resource content 指定该资源的内容  
  restartPolicy: Always #表明该容器一直运行,默认k8s的策略,在此容器退出后,会立即创建一个相同的容器  
  nodeSelector:     #节点选择,先给主机打标签kubectl label nodes kube-node1 zone=node1  
    zone: node1  
  containers:  
  - name: web04-pod #容器的名字  
    image: web:apache #容器使用的镜像地址  
    imagePullPolicy: Never #三个选择Always、Never、IfNotPresent,每次启动时检查和更新(从registery)images的策略,
                           # Always,每次都检查
                           # Never,每次都不检查(不管本地是否有)
                           # IfNotPresent,如果本地有就不检查,如果没有就拉取
    command: ['sh'] #启动容器的运行命令,将覆盖容器中的Entrypoint,对应Dockefile中的ENTRYPOINT  
    args: ["$(str)"] #启动容器的命令参数,对应Dockerfile中CMD参数  
    env: #指定容器中的环境变量  
    - name: str #变量的名字  
      value: "/etc/run.sh" #变量的值  
    resources: #资源管理,请求请见http://blog.csdn.net/liyingke112/article/details/77452630
      requests: #容器运行时,最低资源需求,也就是说最少需要多少资源容器才能正常运行  
        cpu: 0.1 #CPU资源(核数),两种方式,浮点数或者是整数+m,0.1=100m,最少值为0.001核(1m)
        memory: 32Mi #内存使用量  
      limits: #资源限制  
        cpu: 0.5  
        memory: 32Mi  
    ports:  
    - containerPort: 80 #容器开发对外的端口
      name: httpd  #名称
      protocol: TCP  
    livenessProbe: #pod内容器健康检查的设置,详情请见http://blog.csdn.net/liyingke112/article/details/77531584
      httpGet: #通过httpget检查健康,返回200-399之间,则认为容器正常  
        path: / #URI地址  
        port: 80  
        #host: 127.0.0.1 #主机地址  
        scheme: HTTP  
      initialDelaySeconds: 180 #表明第一次检测在容器启动后多长时间后开始  
      timeoutSeconds: 5 #检测的超时时间  
      periodSeconds: 15  #检查间隔时间  
      #也可以用这种方法  
      #exec: 执行命令的方法进行监测,如果其退出码不为0,则认为容器正常  
      #  command:  
      #    - cat  
      #    - /tmp/health  
      #也可以用这种方法  
      #tcpSocket: //通过tcpSocket检查健康   
      #  port: number   
    lifecycle: #生命周期管理  
      postStart: #容器运行之前运行的任务  
        exec:  
          command:  
            - 'sh'  
            - 'yum upgrade -y'  
      preStop:#容器关闭之前运行的任务  
        exec:  
          command: ['service httpd stop']  
    volumeMounts:  #详情请见http://blog.csdn.net/liyingke112/article/details/76577520
    - name: volume #挂载设备的名字,与volumes[*].name 需要对应    
      mountPath: /data #挂载到容器的某个路径下  
      readOnly: True  
  volumes: #定义一组挂载设备  
  - name: volume #定义一个挂载设备的名字  
    #meptyDir: {}  
    hostPath:  
      path: /opt #挂载设备类型为hostPath,路径为宿主机下的/opt,这里设备类型支持很多种  

<think>好的,我现在需要帮助用户理解kubectl.kubernetes.io/last-applied-configuration这个注解的作用以及相关的配置问题。首先,我得回忆一下Kubernetes中声明式资源管理的机制。用户提到的这个注解通常和kubectl apply命令相关,用于记录上次应用的配置,对吧? 根据引用[1],当用户使用kubectl apply时,如果资源缺少这个注解,系统会警告,并自动修补。这说明该注解是kubectl apply正常工作所必需的,尤其是在资源不是通过apply或create --save-config创建的情况下。用户可能遇到了因为缺失这个注解导致的警告,需要知道如何解决。 接下来,用户想了解这个注解的具体作用和解决方法。我需要解释这个注解存储了上次应用的配置,帮助Kubernetes进行差异比较,确定需要应用的更改。同时,要提到如何正确创建资源以避免这个问题,比如使用kubectl apply或create --save-config。引用[2]中的例子展示了通过kubectl apply应用配置,这应该会自动添加注解,而引用[3]则涉及到kubectl的配置文件,但可能与此问题关联不大。 用户可能的问题是如何修复现有资源缺少该注解的情况。根据引用[1],kubectl apply会自动修补,但可能需要手动触发。另外,如果资源最初是用kubectl create不带--save-config创建的,之后用apply就会有问题,需要重新应用配置或手动添加注解。 需要确保回答结构清晰,分点说明作用和解决方法,并给出相关命令示例。同时,生成的问题要围绕注解的作用、修复方法、命令区别以及配置管理机制展开。</think>### kubectl.kubernetes.io/last-applied-configuration 的作用与配置方法 #### 1. 注解的核心作用 `kubectl.kubernetes.io/last-applied-configuration` 是 Kubernetes 用于**声明式配置管理**的关键注解,其作用包括: - **记录上一次应用的完整配置**:存储通过 `kubectl apply` 提交的资源配置内容(JSON格式)[^1] - **支持差异比较(Three-Way Diff)**:结合当前配置、已存储配置和实时集群状态,精确计算变更操作[^1] - **保证配置连续性**:为后续 `kubectl apply` 提供基准配置版本,避免配置漂移 #### 2. 典型问题与解决方案 **问题现象**: ```bash Warning: missing kubectl.kubernetes.io/last-applied-configuration annotation ``` **原因分析**: - 资源未通过声明式命令(`kubectl apply` 或 `kubectl create --save-config`)创建[^1] - 直接使用 `kubectl edit` 或 `kubectl patch` 修改后未同步配置 **修复方法**: ```bash # 方法1:重新应用配置文件(自动修复注解) kubectl apply -f your-config.yaml # 方法2:手动触发注解更新 kubectl replace --save-config -f your-config.yaml # 方法3:对现有资源执行强制更新 kubectl apply --force-conflicts -f your-config.yaml ``` #### 3. 最佳实践建议 1. **统一使用声明式管理**: ```bash # 创建时即添加注解 kubectl create deployment nginx --image=nginx:alpine --save-config ``` 2. **避免混合使用命令式操作**: - 优先使用 `apply` 替代 `edit/patch` - 修改配置后需重新 `apply` 同步文件状态[^2] 3. **版本控制集成**: ```bash # 查看当前存储的配置 kubectl get deployment nginx -o jsonpath='{.metadata.annotations.kubectl\.kubernetes\.io/last-applied-configuration}' ``` #### 4. 工作流程示例 ```bash # 初始部署(自动添加注解) kubectl apply -f myweb.yaml # 如引用[2]中的Pod配置 # 修改配置后更新 sed -i 's/image: nginx/image: nginx:1.25/' myweb.yaml kubectl apply -f myweb.yaml # 基于注解的差异对比生效 # 查看变更历史 kubectl rollout history deployment/myweb ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值