Hi 你好,欢迎访问!登录
当前位置:首页 - k8s - 正文 君子好学,自强不息!

k8s 亲和度

2022-07-22k8skinghu581°c
A+ A-

Affinity

全局的调度策略

要在启动调度器时配置,包括kubernetes调度器自带的各种predicates和priorities算法。

运行时调度策略

  • nodeAffinity(NODE亲和性)

  • podAffinity(POD亲和性)

  • podAntiAffinity(POD反亲和性)

nodeAffinity 主要解决POD要部署在哪些主机,以及POD不能部署在哪些主机上的问题,处理的是POD和主机之间的关系。

podAffinity 主要解决POD可以和哪些POD部署在同一个拓扑域中的问题。

podAntiAffinity主要解决POD不能和哪些POD部署在同一个拓扑域中的问题。它们处理的是Kubernetes集群内部POD和POD之间的关系。

总结:

node亲和度:pod跑在指定标签的节点上,专款专用

pod亲和度:所有pod在同一个节点上,提高通信效率

pod反亲和度:所有pod不在同一个节点上,高可用

node亲和度示例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-cache
spec:
  selector:
    matchLabels:
      app: data
  replicas: 3
  template:
    metadata:
      labels:
        app: data
    spec:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          -  matchExpressions:
              -  key: worker
                 operator: In
                 values:
                 - true
                 #-  hard
      containers:
      - name: redis-server
        image: redis:3.2-alpine

pod亲和度示例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-cache
spec:
  selector:
    matchLabels:
      app: data
  replicas: 3
  template:
    metadata:
      labels:
        app: data
    spec:
      affinity:
        podAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - data
            topologyKey: "kubernetes.io/hostname"
      containers:
      - name: redis-server
        image: redis:3.2-alpine

pod反亲和度示例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-cache
spec:
  selector:
    matchLabels:
      app: store
  replicas: 3
  template:
    metadata:
      labels:
        app: store
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - store
            topologyKey: "kubernetes.io/hostname"
      containers:
      - name: redis-server
        image: redis:3.2-alpine

node亲和度和pod反亲和度,高可用示例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: king-whoami
  namespace: default
spec:
  replicas: 3
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
  selector:
    matchLabels:
      app: king-whoami-deploy
  template:
    metadata:
      labels:
        app: king-whoami-deploy
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            -  matchExpressions:
                -  key: worker
                   operator: In
                   values:
                   - "true"
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - "king-whoami-deploy"
            topologyKey: "kubernetes.io/hostname"
      containers:
        - name:  whoami
          image: containous/whoami:latest
          imagePullPolicy: IfNotPresent
          ports:
            - name: http
              containerPort: 80


  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
k8s 亲和度

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签:
上一篇 k8s local-path
下一篇 kubeedge安装

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>


  用户登录