k8s pod常用资源清单

本文详细介绍了Kubernetes(K8S)中的资源清单,包括API版本、资源类型、元数据、容器配置(如镜像、端口、环境变量和资源限制)、重启策略以及节点选择等关键要素。

K8S 的资源清单

参数名类型字段说明
apiVersionStringK8S APl 的版本,可以用 kubectl api versions 命令查询
kindStringyam 文件定义的资源类型和角色
metadataObject元数据对象,下面是它的属性
metadata.nameString元数据对象的名字,比如 pod 的名字
metadata.namespaceString元数据对象的命名空间
SpecObject详细定义对象
spec.containers[]list定义 Spec 对象的容器列表
spec.containers[].nameString为列表中的某个容器定义名称
spec.containers[].imageString为列表中的某个容器定义需要的镜像名称
spec.containers[].imagePullPolicystring定义镜像拉取策略,有 Always、Never、IfNotPresent 三个值可选
- Always(默认):意思是每次都尝试重新拉取镜像
- Never:表示仅适用本地镜像
- IfNotPresent:如果本地有镜像就使用本地镜像,没有就拉取在线镜像。
spec.containers[].command[]list指定容器启动命令,因为是数组可以指定多个,不指定则使用镜像打包时使用的启动命令。
spec.containers[].args[]list指定容器启动命令参数,因为是数组可以指定多个。
spec.containers[].workingDirstring指定容器的工作目录
spec.containers[].volumeMounts[]list指定容器内部的存储卷配置
spec.containers[].volumeMounts[].namestring指定可以被容器挂载的存储卷的名称
spec.containers[].volumeMounts[].mountPathstring指定可以被容器挂载的存储卷的路径
spec.containers[].volumeMounts[].readOnlystring设置存储卷路径的读写模式,ture 或者 false,默认是读写模式
spec.containers[].ports[]list指定容器需要用到的端口列表
spec.containers[].ports[].namestring指定端口的名称
spec.containers[].ports[].containerPortstring指定容器需要监听的端口号
spec.containers[].ports[].hostPortstring指定容器所在主机需要监听的端口号,默认跟上面 containerPort 相同,注意设置了 hostPort 同一台主机无法启动该容器的相同副本(因为主机的端口号不能相同,这样会冲突)
spec.containers[].ports[].protocolstring指定端口协议,支持 TCP 和 UDP,默认值为 TCP
spec.containers[].env[]list指定容器运行前需设置的环境变量列表
spec.containers[].env[].namestring指定环境变量名称
spec.containers[].env[].valuestring指定环境变量值
spec.containers[].resourcesObject指定资源限制和资源请求的值(这里开始就是设置容器的资源上限)
spec.containers[].resources.limitsObject指定设置容器运行时资源的运行上限
spec.containers[].resources.limits.cpustring指定 CPU 的限制,单位为 Core 数,将用于 docker run –cpu-shares 参数
spec.containers[].resources.limits.memorystring指定 mem 内存的限制,单位为 MIB、GiB
spec.containers[].resources.requestsObject指定容器启动和调度时的限制设置
spec.containers[].resources.requests.cpustringCPU请求,单位为core数,容器启动时初始化可用数量
spec.containers[].resources.requests.memorystring内存请求,单位为MIB、GiB,容器启动的初始化可用数量
spec.restartPolicystring定义 pod 的重启策略,可选值为 Always、OnFailure、Never,默认值为 Always。
- Always:pod 一旦终止运行,则无论容器是如何终止的,kubelet 服务都将重启它。
- OnFailure:只有 pod 以非零退出码终止时,kubelet 才会重启该容器。如果容器正常结束(退出码为0),则 kubectl 将不会重启它。
- Never:Pod 终止后,kubelet 将退出码报告给 master,不会重启该 pod
spec.nodeSelectorObject定义 Node 的 label 过滤标签,以 key:value 格式指定
spec.imagePullSecretsObject定义 pull 镜像时使用 secret 名称,以 name:secretkey 格式指定
spec.hostNetworkBoolean定义是否使用主机网络模式,默认值为 false。设置 true 表示使用宿主机网络,不使用 docker 网桥,同时设置了 true将无法在同一台宿主机上启动第二个副本
### 如何编写 Kubernetes 资源清单 YAML 文件 #### 1. 基本结构 Kubernetes 资源清单文件通常由几个核心字段组成,这些字段定义了资源的元数据、规格以及行为。以下是基本结构: ```yaml apiVersion: <API版本> # 定义所使用的 Kubernetes API 版本[^3] kind: <资源类型> # 指定要创建的资源种类,例如 Pod, Service 等 metadata: name: <资源名称> # 设置资源的名字 spec: # 描述资源的具体配置细节 ... ``` #### 2. 实例演示 下面是一个简单的 Pod 配置示例,展示了如何使用上述结构来定义一个容器化的应用程序。 ```yaml apiVersion: v1 # 使用的核心 API 版本 kind: Pod # 创建的对象类型为 Pod metadata: name: my-first-pod # Pod 名称为 my-first-pod spec: containers: - name: nginx-container # 容器名为 nginx-container image: nginx:latest # 使用最新的 Nginx 镜像 ports: - containerPort: 80 # 映射容器端口到主机上的 80 端口 ``` 此示例中,`apiVersion`, `kind`, 和 `metadata.name` 是必需字段,而 `spec.containers` 列表则描述了一个运行 Nginx 的单个容器及其开放的端口号[^4]。 #### 3. 应用资源配置 一旦完成了 YAML 文件的编写,可以利用 kubectl 工具将其应用至集群环境之中。常用命令如下所示: ```bash kubectl apply -f pod.yaml # 将 pod.yaml 中的内容应用于当前上下文中指定的 Kubernetes 集群 ``` 如果希望仅验证而不实际提交更改,则可采用以下方式测试配置的有效性: ```bash helm template --validate . | kubectl api-resources --validate=true -f - ``` 这一步骤能够确保生成的 YAML 文件符合预期的标准并能被 Kubernetes 正确解析[^2]。 #### 4. 更复杂的例子:Deployment 类型 对于更复杂的应用场景,可能需要用到 Deployment 来管理多个副本集和服务扩展等功能。这里提供一段关于 Deployment 的样例代码供参考: ```yaml apiVersion: apps/v1 # 使用 applications API 组合下的 V1 版本 kind: Deployment # 对象类型设置为 Deployment metadata: name: example-deployment # deployment 名字设为例子部署 spec: replicas: 3 # 运行三个实例作为高可用保障 selector: matchLabels: app: webapp # 标签选择器匹配具有特定标签的服务 template: metadata: labels: app: webapp # 添加标签以便于服务发现机制识别 spec: containers: - name: demo-app # 主程序容器命名示范应用 image: nodejs-express-demo # 自定义镜像地址替换此处占位符 ports: - containerPort: 3000 # 开放内部监听端口给外部访问 ``` 以上展示了一种典型的多副本部署模式,其中包含了负载均衡自动恢复等特性支持。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值