Kubernetes(K8s)亲和性介绍、示例

Kubernetes(K8s)亲和性

是指在调度Pod时,将它们调度到特定的节点上。这种调度策略有助于优化集群的性能和资源利用率。在K8s中,有两种亲和性类型:节点亲和性和Pod亲和性。

节点亲和性指定了Pod应该调度到哪个节点上,Pod亲和性指定了Pod应该与哪些节点亲和。以下是一些示例:

节点亲和性

nodeSelector:根据节点标签选择将Pod调度到哪个节点上。

preferredDuringSchedulingIgnoredDuringExecution:优先将Pod调度到符合条件的节点上,如果没有符合条件的,则选择其他节点。

requiredDuringSchedulingIgnoredDuringExecution:必须将Pod调度到符合条件的节点上,否则Pod将不会被调度。

节点亲和性允许你指定一个Pod应该被调度到哪个节点上。这可以通过标签选择器来实现,例如:

 在这个例子中,我们使用节点选择器将Pod调度到带有disk=ssd标签的节点上
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
  labels:
    app: my-app
spec:
  containers:
  - name: my-container
    image: my-image
    ...
  nodeSelector:
    disk: ssd

Pod亲和性

podAffinity:根据已经运行的Pod的标签将Pod调度到相同的节点上。

podAntiAffinity:根据已经运行的Pod的标签将Pod调度到不同的节点上。

Pod亲和性允许你指定一个Pod应该与哪些其他资源(节点或其他Pod)有更紧密的联系。这可以通过Pod亲和性规则来实现,例如:

在这个例子中,我们使用Pod亲和性规则来指定Pod只能被调度到与my-app标签匹配的其他Pod所在的节点上。
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
  labels:
    app: my-app
spec:
  containers:
  - name: my-container
    image: my-image
    ...
  affinity:
    podAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: app
            operator: In
            values:
            - my-app
        topologyKey: kubernetes.io/hostname

例如,如果我们有一个需要访问数据库的Web应用程序,我们可以使用节点亲和性将Web应用程序Pod调度到与数据库Pod在同一节点上的节点上。这样做可以减少网络延迟,并提高应用程序的性能。另外,我们可以使用Pod亲和性将一些需要高内存或高CPU资源的Pod调度到具有相应资源的节点上,以确保它们能够正常运行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仙女肖消乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值