不同namespace的pod反亲和配置

简介: 不同namespace的pod反亲和配置

业务需求 两pod互斥,增加系统健壮性

pod1:

-name:prometheus-dep
-namespace:prometheus


pod2:

-name:prometheus-server
-namespace:prometheus-server-dep

测试结论

查看两个pod的label 备用

kubectl -n <ns> describe pods  <pods-name> |grep Labels

pod1.yaml

配置模块均配置对方pod的信息

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mynginx-1 
  namespace: dev-1
spec:
  replicas: 2
  selector:
    matchLabels:
      app: mynginx-1 
  template:
    metadata:
      labels:
        app: mynginx-1 
      containers:
      - name: mycontainer-1
        image: nginx
        imagePullPolicy: IfNotPresent
        ports:
        - name: nginx
          containerPort: 80
        volumeMounts:
        - mountPath: "/usr/share/nginx/html/"
          name: nginx-vol
      affinity: ##调度策略配置模块
        podAntiAffinity:   ##类型pod反亲和
          requiredDuringSchedulingIgnoredDuringExecution: ##硬需求
          - labelSelector: ##标签匹配
              matchExpressions:
              - key: app  ##刚刚查到另一个pod的标签 key值
                operator: In  ##匹配规则
                values: [mynginx-test] ##对应的value值
            topologyKey: kubernetes.io/hostname ##固定字段控制域
            namespaces: [dev-2] ##互斥pod的名存空间


pod2.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mynginx-test 
  namespace: dev-2
spec:
  replicas: 2
  selector:
    matchLabels:
      app: mynginx-test 
  template:
    metadata:
      labels:
        app: mynginx-test 
    spec:
      containers:
      - name: mycontainer-2
        image: nginx
        imagePullPolicy: IfNotPresent
        ports:
        - name: nginx
          containerPort: 80
        volumeMounts:
        - mountPath: "/usr/share/nginx/html/"
          name: nginx-vol
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector: 
              matchExpressions:
              - key: app ##对应标签的key
                operator: In
                values: [mynginx-1] ##对应标签的value
            topologyKey: kubernetes.io/hostname 
            namespaces: [dev-1] ##对方pod的名称空间
      volumes:
      - name: nginx-vol
        hostPath:
          path: /data/svc/web1-html


这样两个pod都配置互斥的好处是:不会因为启动顺序而失效,无论谁先启动都会检测 分配到合适的node


注意:唯一缺陷


当dep启动的pod 副本数大于或等于 集群 node数量时,可能会出现每个pod分布在每个node节点上的情况,导致另一个pod 不能分配工作节点,一直处于pending状态

目录
相关文章
|
云计算
中国云计算厂商营收排名:阿里云完虐微软
基于一些公开数据或者其他机构的调研数据,下面是“科技拾点见”专门整理的一份中国专业云计算厂商的营收排行榜单。 根据榜单显示,阿里云以55.6亿元全年营收位居第一,是第二名微软Azure的3倍,包括腾讯云、金山云、亚马逊在内的第三阵营,收入均在6亿元左右。
3338 0
|
Kubernetes 算法 调度
k8s群集调度之 pod亲和 node亲和 标签指定
k8s群集调度之 pod亲和 node亲和 标签指定
1001 152
|
安全 Java Linux
docker:docker prune命令 可定时清理不常用数据
docker:docker prune命令 可定时清理不常用数据
1991 0
docker:docker prune命令 可定时清理不常用数据
|
JSON Java fastjson
Maven精选系列--classifier元素妙用
首先来看这么一个依赖 <dependency>
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch 2.2 中文官方教程(十五)(3)
PyTorch 2.2 中文官方教程(十五)
606 2
PyTorch 2.2 中文官方教程(十五)(3)
|
关系型数据库 应用服务中间件 数据库
使用 Nginx 实现四层代理配置
平时我们在配置 Nginx 代理时,一般配置的都是基于 http 或是 https 协议的代理,也就是应用层。但是有些时候,我们并不想配置这种基于应用层的代理。比如说:我们要代理到数据库上,但是数据库是不支持应用层代理的。
3684 0
使用 Nginx 实现四层代理配置
|
固态存储 Java 弹性计算
【最佳实践】简单配置,实现Filebeat多行日志传送
在解决应用程序问题时,多行日志为开发人员提供了宝贵的信息。 堆栈跟踪就是一个例子。 堆栈跟踪是引发异常时应用程序处于中间的一系列方法调用。 堆栈跟踪包括遇到错误的相关行以及错误本身。
10532 0
【最佳实践】简单配置,实现Filebeat多行日志传送
|
iOS开发
iOS中 高仿Tumblr热度-滚动条数-JQScrollNumberLabel 韩俊强的博客
上一篇:高仿Tumblr点赞心破碎动画  最近Tumblr轻博客无论是web端还是移动端,都非常受欢迎,简单调研了一下,此篇是关于滚动热点条数的动画; JQScrollNumberLabel 简介: JQScrollNumberLabel 仿tumblr热度滚动数字条数,一个显示数字的控件,当你改变其数字时,能够有滚动的动画,同时动画和位数可以限制,动态创建和实例化可选,字体样式自定义等等。
1818 0
Dart之函数(递归、匿名、自执行、可选参数、默认参数、命名参数)
Dart之函数(递归、匿名、自执行、可选参数、默认参数、命名参数)
280 0
如何关闭智能键盘IQKeyboardManager
如何关闭智能键盘IQKeyboardManager
478 1

热门文章

最新文章

下一篇
开通oss服务