Kubernetes 中几种常见的调度方式以及对应的 YAML 示例

简介: 在 Kubernetes 中,使用 YAML 文件来定义和配置 Pod。以下是几种常见的调度方式以及对应的 YAML 示例:1. 基于资源需求与节点容量的调度:```yamlapiVersion: v1kind: Podmetadata: name: my-podspec: containers: - name: my-container image: nginx resources: requests: cpu: "0.5" memory: "512Mi" limits: cpu

在 Kubernetes 中,使用 YAML 文件来定义和配置 Pod。以下是几种常见的调度方式以及对应的 YAML 示例:

  1. 基于资源需求与节点容量的调度:

    apiVersion: v1
    kind: Pod
    metadata:
    name: my-pod
    spec:
    containers:
    - name: my-container
     image: nginx
     resources:
       requests:
         cpu: "0.5"
         memory: "512Mi"
       limits:
         cpu: "1"
         memory: "1Gi"
    

    上述示例中,通过在 Pod 的 spec 下的 resources 字段中定义 CPU 和内存的请求和限制,Kubernetes 将会根据这些资源需求与节点容量进行调度。

  2. 亲和性调度:

    apiVersion: v1
    kind: Pod
    metadata:
    name: my-pod
    spec:
    affinity:
     podAffinity:
       requiredDuringSchedulingIgnoredDuringExecution:
       - labelSelector:
           matchExpressions:
           - key: app
             operator: In
             values:
             - frontend
         topologyKey: kubernetes.io/hostname
    

    上述示例中,通过在 Pod 的 spec 下的 affinity 字段中定义 podAffinity 规则,将 Pod 调度到具有 app=frontend 标签的节点上。

  3. 反亲和性调度:

    apiVersion: v1
    kind: Pod
    metadata:
    name: my-pod
    spec:
    affinity:
     podAntiAffinity:
       requiredDuringSchedulingIgnoredDuringExecution:
       - labelSelector:
           matchExpressions:
           - key: app
             operator: In
             values:
             - backend
         topologyKey: kubernetes.io/hostname
    

    上述示例中,通过在 Pod 的 spec 下的 affinity 字段中定义 podAntiAffinity 规则,防止将 Pod 调度到具有 app=backend 标签的同一节点上。

  4. 亲和性和反亲和性的软限制:

    apiVersion: v1
    kind: Pod
    metadata:
    name: my-pod
    spec:
    affinity:
     podAffinity:
       preferredDuringSchedulingIgnoredDuringExecution:
       - weight: 100
         podAffinityTerm:
           labelSelector:
             matchExpressions:
             - key: app
               operator: In
               values:
               - frontend
           topologyKey: kubernetes.io/hostname
     podAntiAffinity:
       preferredDuringSchedulingIgnoredDuringExecution:
       - weight: 100
         podAffinityTerm:
           labelSelector:
             matchExpressions:
             - key: app
               operator: In
               values:
               - backend
           topologyKey: kubernetes.io/hostname
    

    上述示例中,通过在 Pod 的 spec 下的 affinity 字段中定义 podAffinitypodAntiAffinity 规则,并设置权重值,以软限制的方式进行调度。

这些是 Kubernetes 中常见的调度方式的 YAML 示例。根据实际需求,可以组合和配置不同的调度规则,并添加其他字段(如标签选择器)来进一步定制 Pod 的调度行为。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
6月前
|
Kubernetes Cloud Native 应用服务中间件
【云原生】使用k8s创建nginx服务—通过yaml文件svc类型暴露
【云原生】使用k8s创建nginx服务—通过yaml文件svc类型暴露
132 0
|
4月前
|
Kubernetes Cloud Native Docker
云原生|kubernetes|网络插件flannel二进制部署和calico的yaml清单部署总结版
云原生|kubernetes|网络插件flannel二进制部署和calico的yaml清单部署总结版
140 0
|
6月前
|
Kubernetes 应用服务中间件 nginx
kubernetes集群命令行工具kubectl介绍&yaml文件介绍-20230208
kubernetes集群命令行工具kubectl介绍&yaml文件介绍-20230208
|
15天前
|
JSON Kubernetes Go
IDEA使用Kubernetes插件编写YAML
IDEA使用Kubernetes插件编写YAML
30 0
IDEA使用Kubernetes插件编写YAML
|
6月前
|
Kubernetes Java 容器
k8s部署springboot项目yaml
k8s部署springboot项目yaml
124 0
|
6月前
|
Kubernetes NoSQL 关系型数据库
通过编写k8s的资源清单yaml文件部署gitlab服务
通过编写k8s的资源清单yaml文件部署gitlab服务
|
4月前
|
存储 Kubernetes Cloud Native
云原生|kubernetes|centos下安装部署kubeapps以及简单的使用示例
云原生|kubernetes|centos下安装部署kubeapps以及简单的使用示例
44 0
|
4月前
|
JSON Kubernetes API
k8s学习-k8s资源对象与yaml结构
k8s学习-k8s资源对象与yaml结构
53 0
|
4月前
|
存储 Kubernetes Perl
k8s(10)声明式对象配置--yaml文件
k8s(10)声明式对象配置--yaml文件
57 0
|
7月前
|
JSON Kubernetes 安全
Kubernetes Admission Controller 简介 - 注入 sidacar 示例
Kubernetes Admission Controller 简介 - 注入 sidacar 示例
70 0