自用 K8S 资源对象清单 YAML 配置模板手册-1


  • 管理多个资源对象清单文件常用方法:
  1. 使用 sed 流式编辑器批量修改脚本键值进行资源清单的创建,有助于日常测试工作:
for i in {
   1..5}
do
	sed 's,web,&$i,' app.yaml | kubectl apply -f -   # - 为标准输入占位符,表示上一个命令的输出
done
  1. -f 指定应用多个资源对象清单创建,有启动顺序:kubectl apply -f 清单1 -f 清单2 -f 清单3
  2. -f 还可以应用文件夹内所有 yaml 清单: kubectl apply -f yaml/ # 无法保证 Pod 启动的顺序
  3. 合并多个资源对象管理文件,用于多个资源清单文件测试完毕后,统一合并使用:
cat app/*  > app.yaml     # 先读取目录下所有文件后再重定向进行合并
  • 资源对象清单配置模板获取方式:
  1. 常用模板使用创建命令获取: kubectl create service --dry-run=client -o yaml > template.yaml
  2. 官方文档获取:https://kubernetes.io/zh-cn/docs/reference/kubernetes-api/
  3. 使用“解释”命令查询每一个子字段的解释与应用: kubectl explain Pod.spec.containers.ports.
  4. 使用 AI 编写资源清单模板,再修改。

1、Pod 容器集合

   Pod 的主要特点:

  • 共享网络:Pod 中的所有容器共享同一个网络命名空间,这意味着它们能够访问相同的IP地址和端口范围,并且能够相互通信。

  • 共享存储:Pod 中的容器能够访问相同的存储卷(Volumes),这使得它们可以共享数据和文件。

  • 协同工作:Pod 中的容器设计为协同工作,它们可能是一个应用的不同组件,例如,一个容器处理用户请求,而另一个容器处理数据存储。

  • 生命周期管理:Pods 拥有自己的生命周期,它们可以被创建、启动、停止和删除。Kubernetes 会保证 Pod 按照声明的状态运行。

  • 重启策略:Pods 可以配置重启策略,以确定在容器崩溃时是否需要重启。

  • 易于部署:通过定义Pod 的配置,可以很容易地部署和管理容器化应用。

  • 不可变性:Pods 是短暂的,它们不应该被修改。如果需要更新 Pod ,应该创建一个新的 Pod ,并通过更新控制器(如Deployment)替换旧的Pod。

  • 扩展性:虽然 Pods 可以包含多个容器,但它们通常用于运行单个应用程序或服务。对于需要水平扩展的应用,通常会使用多个 Pod 副本,并通过 Kubernetes 的控制器(如Deployment、StatefulSet或DaemonSet)来管理。

  • 健康检查: Kubernetes 可以对Pod执行健康检查,以确保它们正常运行,并在检测到问题时进行适当的响应。

---
kind: Pod                 # 资源对象类型
apiVersion: v1            # api 版本,通过 kubectl api-resources 查看
metadata:                 # 元数据信息
  name: web               # 资源对象命名
  namespace: work         # 所属名称空间
  labels:                 # <map> go 语言的 map 无序键值对集合数据类型
    app: apache           
    type: web        
spec:    
  activeDeadlineSeconds: 30  
# Pod 最大生命周期,即使容器重启也不会重置,从 kubelet 通过 API-server 
# 收到 scheduler 调度时,为 Pod 拉取容器镜像之前计时。到达时间 Pod 不会重启
  terminationGracePeriodSeconds: 0
# 宽限期,Pod 停止前进行清理工作,比如保存状态、完成本地事务、结束服务的预留时间。
# nodeName: node-0002     # Pod 调度方式 1: 指定节点进行调度 
  nodeSelector:          
    kubernetes.io/hostname: node-0001
                          # <map> Pod 调度方式 2: 标签选择运算符,指定标签节点过滤进行调度
  restartPolicy: OnFailure   
# 
# initContainers:         # 在主容器之前运行,可进行依赖检查、资源准备、执行脚本
  hostname: myweb         # 指定 Pod 的主机名
  hostAliases:            # 写入 Pod 内容器的 hosts 文件映射,Pod 设置 hostNetwork 后不生效
  - ip: 192.168.1.100     # IP 列表
    hostnames:            # IP 映射的主机名列表
    - web
    - nginx
  containers:            
  - name: nginx          
    image: myos:nginx    
    imagePullPolicy: IfNotPresent
# Always 只拉取镜像仓库镜像,Nerver 只使用本地镜像,IfNotPresent 优先拉取本地镜像,无则拉取镜像仓库
    env:                        # 传入一个环境变量列表
    - name: TZ
      value: "Asia/Shanghai"    # 方式 1:指定传入单个确定值
    # valueFrom:
      # configMapKeyRef:        # 方式 2: 通过配置映射的方式引用单个键值
        # name: timezone        # 可传入加密的键值对象,使用 secretKeyRef
        # key: timezone
  # envFrom:                    # 方式 3: 使用 configMap 或 secret 方式引入一组环境变量
  # - configMapRef:
      # name: timezone   
    command: ["/bin/sh"] 
    args:
    - -c 
    - |  
      sleep 3            
      exit $((RANDOM%10))    
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值