IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Kubernetes Pod亲和与互斥调度策略 -> 正文阅读

[系统运维]Kubernetes Pod亲和与互斥调度策略

Pod 亲和与互斥的调度具体做法:

通过在Pod 的定义上增加topologyKey属性,来声明对应的目标拓扑区域内几种相关联的Pod 要“在一起或不在一起”,与节点亲和相同,Pod亲和与互斥的条件设置也是requiredDuringSchedulingIgnoredDuringExecution 和 preferredDuringSchedlingIgnoredDuringExecution。 Pod 的亲和性被定义于PodSpec的affinity字段的podAffinity 子字段中。Pod 间的互斥性则被定义于同一层次的podAntiAffinity 子字段中。

下面通过实例来说明Pod 间的亲和性和互斥策略设置。

1. 参考目标Pod

首先,创建一个名pod-flag 的Pod ,带有标签security = S1 和 app = nginx ,后面的例子将使用pod-flag 作为Pod 亲和与互斥的目标Pod:

apiVersion: v1
kind: Pod
metadata: 
  name: pod-flag
  labels: 
    security: "S1"
    app: "nginx"
spec: 
  containers: 
  - name: nginx
    image: nginx

创建运行该Pod

[root@k8s-master ~]# kubectl create -f pod-flag.yaml 
pod/pod-flag created

查看pods ,在标签栏显示我们设置的标签

[root@k8s-master ~]# kubectl get pods --show-labels
NAME                                READY   STATUS    RESTARTS       AGE    LABELS
pod-flag                            1/1     Running   0              109s   app=nginx,security=S1

2. Pod 的亲和性调度

下面创建第2个Pod 来说明Pod的亲和性调度,这里定义的亲和性标签是“security=S1” 对应上面的Pod “pod-flag” , topologyKey 的值 被设置为 “kubernetes.io/hostname”:

apiVersion: v1
kind: Pod
metadata: 
  name: pod-affinity
spec: 
  affinity: 
    podAffinity: 
      requiredDuringSchedulingIgnoredDuringExecution: 
      - labelSelector: 
          matchExpressions: 
          - key: security
            operator: In
            values: 
            - S1
        topologyKey: kubernetes.io/hostname
  containers:
  - name: with-pod-affinity
    image: gcr.io/google_containers/pause:2.0      

创建Pod 之后,使用kubectl get pods -o wide 命令可以看到这两个Pod 在同一个Node 上运行。

[root@k8s-master ~]# kubectl get pods -o wide
NAME                                READY   STATUS         RESTARTS       AGE     IP               NODE         NOMINATED NODE   READINESS GATES
pod-affinity                        0/1     ErrImagePull   0              25s     10.244.140.118   k8s-node-2   <none>           <none>
pod-flag                            1/1     Running        0              5m22s   10.244.140.117   k8s-node-2   <none>           <none>

注意的是这个status 字段是失败的,我通过如下命令查看日志,发现报错了,不过这里的报错不用管,因为我们这里讲不是这个内容,我们看到这两个Pod都在同一个Node 上。

[root@k8s-master ~]# kubectl logs pod-affinity
Error from server (BadRequest): container "with-pod-affinity" in pod "pod-affinity" is waiting to start: image can't be pulled

3. Pod 的互斥性调度

创建第3个Pod ,我们希望它不与目标Pod 运行在同一个Node 上:

apiVersion: v1
kind: Pod
metadata: 
  name: anti-affinity
spec: 
  affinity: 
    podAffinity: 
      requiredDuringSchedulingIgnoredDuringExecution: 
      - labelSelector: 
          matchExpressions: 
          - key: security
            operator: In
            values: 
            - S1
        topologyKey: topology.kubernetes.io/zone
    podAntiAffinity: 
      requiredDuringSchedulingIgnoredDuringExecution: 
      - labelSelector: 
          matchExpressions: 
          - key: app
            operator: In
            values: 
            - nginx
        topologyKey: topology.kubernetes.io/hostname
  containers:
  - name: anti-affinity
    image: gcr.io/google_containers/pause:2.0     

这里要求这个新Pod与security=S1 的Pod 为同一个zone , 但是不与app=nginx 的Pod 为同一个Node,创建Pod 之后,同样用kubectl get pods -o wide 来查看,会看到新的Pod被调度到了同一个 Zone 内的不同Node 上。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 12:11:44  更:2022-02-26 12:14:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 5:33:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码