CC00210.CloudKubernetes——|KuberNetes高级调度.V13|——|Pod亲和力反亲和力.v01|pod亲和力_同namespace|
### --- pod亲和力说明~~~ Pod亲和力:尽量将Pod部署在一起
~~~ Pod反亲和力:不尽量将Pod部署在一起
### --- 官方地址:~~~ https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
![](/assets/blank.gif)
### --- 将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部署在一块
### --- 编辑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
### --- 重新触发容器[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|相关推荐
- CC00212.CloudKubernetes——|KuberNetes高级调度.V15|——|Pod亲和力反亲和力.v03|pod反亲和力|
一.Pod的反亲和力: ### --- 编辑yaml文件:编写pod的反亲和力的参数 ~~~ # 编辑yaml文件 ~~~ 就是尽量不和namespace下的kube-system,key:k8s-a ...
- CC00211.CloudKubernetes——|KuberNetes高级调度.V14|——|Pod亲和力反亲和力.v02|pod亲和力_跨namespace|
一.pod的亲和力:跨namespace: ### --- pod亲和力实验说明~~~ 与指定pod部署在一块,是可以块namespace的: ~~~ 把demo-nginx和kube-systemn ...
- CC00204.CloudKubernetes——|KuberNetes高级调度.V07|——|初始化容器|InitContainer操作|
一.InitContainer概述 ### --- InitContainer概述~~~ # InitContainer: ~~~ 初始化容器:预处理.预判断.与执行命令操作:在我应用容器启动之前做的 ...
- k8s 高级调度 亲和力和反亲和力、绑定标签、污点容忍污点
文章目录 1. 通过标签绑定 2. 通过node name绑定 3. node的亲和力 4. pod间亲和性和反亲和性 5. node的污点 6. 综合 – 1. 通过标签绑定 spec:nodeSe ...
- Kubernetes(k8s)常用资源的使用、Pod的常用操作
1.K8s是如何运行容器的. 答:k8s是通过定义一个Pod的资源,然后在Pod里面运行容器的.K8s最小的资源单位Pod. 2.如何创建一个Pod资源呢? 答:在K8s中,所有的资源单位都可以使用一 ...
- 运行支持kubernetes原生调度的Spark程序
全栈工程师开发手册 (作者:栾鹏) 架构系列文章 Spark 概念说明 Apache Spark 是一个围绕速度.易用性和复杂分析构建的大数据处理框架.最初在2009年由加州大学伯克利分校的AMPLa ...
- Kubernetes In Action 学习笔记 Chapter3,4,5 (一)Pod,副本机制,守护进程与Job
Pod background K8s的基本调度单位,一个Pod可以运行一个或者以上数量的容器. 我们知道Docker的一个container实际上是一个进程,那么每一个container只能运行一个进 ...
- 技术进阶:Kubernetes高级架构与应用状态部署
在了解Kubernetes应用状态部署前,我们先看看Kubernetes的高级架构,方便更好的理解Kubernetes的状态. Kubernetes 的高级架构 包括应用程序部署模型,服务发现和负载均 ...
- 最新 2022 年云原生Kubernetes 高级面试题大全(持续更新中)
前言 本篇模拟面试官提问的各种docker,k8s问题,意在提高面试通过率,欢迎在评论区探讨,同步进步. 目录 题1:Kubernetes Service 都有哪些类型? 题2:K8s 标签与标签选择 ...
最新文章
- Oracle将关闭Java.net和Kenai.com社区
- 【学习笔记1】CentOS 下载
- 对所写博客的几点说明
- Rain and Umbrellas(dp)
- php字符串赋值给变量,JavaScript-如何将一个PHP字符串安全赋值给Javascript变量(包含引号和换行符的)...
- 初见 IsolatedStorage
- struts2 redirect 获取参数null_社会化登录支持授权域以便于获取更大权限
- slf4j与logback的结合使用
- 基于Nodejs的前端灰度发布方案_20190228
- Js中去除数组中重复元素的4种方法
- Linux安装搜狗输入法
- Android 面(被)试(锤)现场还原~
- win10不能安装破解软件:提示系统资源不足,无法完成请求服务的解决方法
- Android图片轮播控件
- uni.showModal,uni.showToast使用
- 10种网站推广的常用方法
- 网络安全笔记--文件上传1(文件上传基础、常见后端验证、黑名单、白名单、后端绕过方式)
- cyclone iv 器件手册_GaN器件的直接驱动配置
- 西安电子科技大学光学工程/电子信息(专业课代码851)考研经验分享
- 【Verilog语法1】加载存储器$readmemh和$readmemb函数的使用