一、Pod亲和力和反亲和力概述
### --- pod亲和力说明~~~     Pod亲和力:尽量将Pod部署在一起
~~~     Pod反亲和力:不尽量将Pod部署在一起

### --- 官方地址:~~~     https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/

二、Pod亲和力

### --- 将busybox和demo-nginx部署在一块;查看资源文件
~~~     导出yaml文件[root@k8s-master01 ~]# kubectl get deploy demo-nginx -oyaml > pod-Affinity-demo-nginx.yaml

### --- 准备yaml文件参数;查看node节点的主机名
~~~     topologykey的值改为主机名:kubernetes.io/hostname[root@k8s-master01 ~]# kubectl get node --show-labels
NAME           STATUS   ROLES    AGE   VERSION   LABELS
k8s-master01   Ready    <none>   21d   v1.20.0   another-node-label-key=another-node-label-value,beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master01,kubernetes.io/os=linux,node.kubernetes.io/node=
k8s-master02   Ready    <none>   21d   v1.20.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master02,kubernetes.io/os=linux,node.kubernetes.io/node=
k8s-master03   Ready    <none>   21d   v1.20.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,ds=true,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master03,kubernetes.io/os=linux,node.kubernetes.io/node=
k8s-node01     Ready    <none>   21d   v1.20.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,ds=true,ingress=true,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node01,kubernetes.io/os=linux,node.kubernetes.io/node=,test.gt=20
k8s-node02     Ready    <none>   21d   v1.20.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,ds=true,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node02,kubernetes.io/os=linux,node.kubernetes.io/node=,region=subnet7,test.gt=10

### --- 为busybox打标签region=beijing[root@k8s-master01 ~]# kubectl label pod busybox region=beijing
pod/busybox labeled

### --- 查看当前环境有什么容器[root@k8s-master01 ~]# kubectl get po --show-labels
NAME                          READY   STATUS    RESTARTS   AGE     LABELS
busybox                       1/1     Running   0          48s     region=beijing
demo-nginx-7fd59f5b5d-47jvk   2/2     Running   0          4m36s   app=demo-nginx,pod-template-hash=7fd59f5b5d
demo-nginx-7fd59f5b5d-mmtp8   2/2     Running   0          4m36s   app=demo-nginx,pod-template-hash=7fd59f5b5d//注:把busybox容器和nginx部署在一块

三、将busybox和demo-nginx部署在一块;创建pod亲和力yaml文件;同一namespace下
### --- 编辑pod亲和力yaml文件:把busybox和nginx部署在一块[root@k8s-master01 ~]# vim pod-Affinity-demo-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: demo-nginxname: demo-nginxnamespace: default
spec:progressDeadlineSeconds: 600replicas: 2revisionHistoryLimit: 10selector:matchLabels:app: demo-nginxstrategy:rollingUpdate:maxSurge: 25%maxUnavailable: 1type: RollingUpdatetemplate:metadata:creationTimestamp: nulllabels:app: demo-nginxspec:affinity:podAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- key: regionoperator: Invalues:- beijingtopologyKey: kubernetes.io/hostnamecontainers:- command:- sh- -c- sleep 36000000000image: nginximagePullPolicy: IfNotPresentname: nginx2resources: {}terminationMessagePath: /dev/termination-logterminationMessagePolicy: FilevolumeMounts:- mountPath: /mntname: cache-volume- mountPath: /tmp/nfsname: nfs-test- command:- sh- -c- sleep 36000000000image: nginximagePullPolicy: IfNotPresentname: nginxports:- containerPort: 80name: webprotocol: TCPresources:limits:cpu: 100mmemory: 270Mirequests:cpu: 100mmemory: 70MiterminationMessagePath: /dev/termination-logterminationMessagePolicy: FilevolumeMounts:- mountPath: /etc/nginx/nginx.confname: config-volumesubPath: etc/nginx/nginx.conf- mountPath: /mnt/name: config-volume-non-subpath- mountPath: /tmp/1name: test-hostpath- mountPath: /tmp/2name: cache-volume- mountPath: /tmp/pvcname: pvc-testdnsPolicy: ClusterFirstrestartPolicy: AlwaysschedulerName: default-schedulersecurityContext: {}shareProcessNamespace: trueterminationGracePeriodSeconds: 30volumes:- hostPath:path: /etc/hoststype: Filename: test-hostpath- configMap:defaultMode: 420items:- key: nginx.confpath: etc/nginx/nginx.confname: nginx-confname: config-volume- configMap:defaultMode: 420name: nginx-confname: config-volume-non-subpath- emptyDir:medium: Memoryname: cache-volume- name: nfs-testnfs:path: /data/k8s-data/testDirserver: 192.168.1.14- name: pvc-testpersistentVolumeClaim:claimName: myclaim

### --- 配置文件注释
~~~     把busybox和pod的容器部署在一块
~~~     加入数据库和应用pod都是有节点的,若是你想要把前端应用和后端应用和数据库部署在同一个节点上
~~~     可以通过容器亲和力将它们部署在一块spec:affinity:podAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- key: regionoperator: Invalues:- beijingtopologyKey: kubernetes.io/hostname

四、pod亲和力同一namespace下部署
### --- 重新触发容器[root@k8s-master01 ~]# kubectl replace -f pod-Affinity-demo-nginx.yaml
deployment.apps/demo-nginx replaced

### --- 查看部署结果
~~~     可以看到pod和busybox都部署在了k8s-master02节点上面
~~~     和指定的pod部署在一块,是可以跨namespace的    [root@k8s-master01 ~]# kubectl get po -owide
NAME                          READY   STATUS        RESTARTS   AGE     IP             NODE           NOMINATED NODE   READINESS GATES
busybox                       1/1     Running       0          2m30s   172.25.92.90   k8s-master02   <none>           <none>
demo-nginx-7fd59f5b5d-m9zx9   2/2     Running       0          29s     172.25.92.91   k8s-master02   <none>           <none>
demo-nginx-7fd59f5b5d-x4ckb   2/2     Running       0          28s     172.25.92.92   k8s-master02   <none>           <none>

CC00210.CloudKubernetes——|KuberNetes高级调度.V13|——|Pod亲和力反亲和力.v01|pod亲和力_同namespace|相关推荐

  1. CC00212.CloudKubernetes——|KuberNetes高级调度.V15|——|Pod亲和力反亲和力.v03|pod反亲和力|

    一.Pod的反亲和力: ### --- 编辑yaml文件:编写pod的反亲和力的参数 ~~~ # 编辑yaml文件 ~~~ 就是尽量不和namespace下的kube-system,key:k8s-a ...

  2. CC00211.CloudKubernetes——|KuberNetes高级调度.V14|——|Pod亲和力反亲和力.v02|pod亲和力_跨namespace|

    一.pod的亲和力:跨namespace: ### --- pod亲和力实验说明~~~ 与指定pod部署在一块,是可以块namespace的: ~~~ 把demo-nginx和kube-systemn ...

  3. CC00204.CloudKubernetes——|KuberNetes高级调度.V07|——|初始化容器|InitContainer操作|

    一.InitContainer概述 ### --- InitContainer概述~~~ # InitContainer: ~~~ 初始化容器:预处理.预判断.与执行命令操作:在我应用容器启动之前做的 ...

  4. k8s 高级调度 亲和力和反亲和力、绑定标签、污点容忍污点

    文章目录 1. 通过标签绑定 2. 通过node name绑定 3. node的亲和力 4. pod间亲和性和反亲和性 5. node的污点 6. 综合 – 1. 通过标签绑定 spec:nodeSe ...

  5. Kubernetes(k8s)常用资源的使用、Pod的常用操作

    1.K8s是如何运行容器的. 答:k8s是通过定义一个Pod的资源,然后在Pod里面运行容器的.K8s最小的资源单位Pod. 2.如何创建一个Pod资源呢? 答:在K8s中,所有的资源单位都可以使用一 ...

  6. 运行支持kubernetes原生调度的Spark程序

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 Spark 概念说明 Apache Spark 是一个围绕速度.易用性和复杂分析构建的大数据处理框架.最初在2009年由加州大学伯克利分校的AMPLa ...

  7. Kubernetes In Action 学习笔记 Chapter3,4,5 (一)Pod,副本机制,守护进程与Job

    Pod background K8s的基本调度单位,一个Pod可以运行一个或者以上数量的容器. 我们知道Docker的一个container实际上是一个进程,那么每一个container只能运行一个进 ...

  8. 技术进阶:Kubernetes高级架构与应用状态部署

    在了解Kubernetes应用状态部署前,我们先看看Kubernetes的高级架构,方便更好的理解Kubernetes的状态. Kubernetes 的高级架构 包括应用程序部署模型,服务发现和负载均 ...

  9. 最新 2022 年云原生Kubernetes 高级面试题大全(持续更新中)

    前言 本篇模拟面试官提问的各种docker,k8s问题,意在提高面试通过率,欢迎在评论区探讨,同步进步. 目录 题1:Kubernetes Service 都有哪些类型? 题2:K8s 标签与标签选择 ...

最新文章

  1. Oracle将关闭Java.net和Kenai.com社区
  2. 【学习笔记1】CentOS 下载
  3. 对所写博客的几点说明
  4. Rain and Umbrellas(dp)
  5. php字符串赋值给变量,JavaScript-如何将一个PHP字符串安全赋值给Javascript变量(包含引号和换行符的)...
  6. 初见 IsolatedStorage
  7. struts2 redirect 获取参数null_社会化登录支持授权域以便于获取更大权限
  8. slf4j与logback的结合使用
  9. 基于Nodejs的前端灰度发布方案_20190228
  10. Js中去除数组中重复元素的4种方法
  11. Linux安装搜狗输入法
  12. Android 面(被)试(锤)现场还原~
  13. win10不能安装破解软件:提示系统资源不足,无法完成请求服务的解决方法
  14. Android图片轮播控件
  15. uni.showModal,uni.showToast使用
  16. 10种网站推广的常用方法
  17. 网络安全笔记--文件上传1(文件上传基础、常见后端验证、黑名单、白名单、后端绕过方式)
  18. cyclone iv 器件手册_GaN器件的直接驱动配置
  19. 西安电子科技大学光学工程/电子信息(专业课代码851)考研经验分享
  20. 【Verilog语法1】加载存储器$readmemh和$readmemb函数的使用

热门文章

  1. html制作多媒体课件,如何制作多媒体课件制作
  2. 手机进水了怎么办,手机进水声音怎么变了怎么处理比较好
  3. Vb程序运行时出现找不到工程或库
  4. SSD2828 RGB转MIPI转换板制作(1)
  5. 微信公众平台开发教程(四)
  6. 限时分享:汇聚全平台资源,八个黑科技资源渠道
  7. 你见过代码里面的“龟派气功”吗?
  8. 设计模式解析---------迪米特原则
  9. Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结
  10. 毕业设计So Easy:Java MySQL智能报纸阅读器APP应用