affinity

kubernetes每个节点创建一个服务的Pod

大城市里の小女人 提交于 2020-03-02 03:49:18
1. 问题场景 希望一个worker节点上仅部署同样的服务一个. 比如: kubernets有三个worker节点,三个节点部署N个副本的api服务, 为了提高服务效率希望加入缓存,需要为三个节点个部署一个redis服务, 这个时候我们定义这个redis服务副本为3, 但是如何设置一个节点仅部署一个redis服务呢? 2. 相关知识 亲和性 k8s设计了亲和性来配置pod和node, pod和pod的关系, 即: Node affinity Inter-pod affinity and anti-affinity 思路 pod和node关系解决的pod选择node的场景, 这里不是解决本问题的关键, pod和pod的关系才是解决的关键, 只要让服务副本设置为3, 且每个node上redis的pod是互斥或者排他的选择即可, 如何设置同一个node上的pod互斥呢? 通过 Inter-pod affinity and anti-affinity 可以知道需要指定: topologyKey 具体配置结果 apiVersion: apps/v1 kind: Deployment metadata: name: redis spec: nodeSelector: matchLabels: service: mirage selector: matchLabels: service:

k8s nodeSelector和affinity 调度亲和性

与世无争的帅哥 提交于 2020-03-02 03:23:57
nodeSelector 1.分配pod到node的方法 通过node label selector实现约束pod运行到指定节点,有两种方法 nodeSelector 以及affinity 2.nodeSelector 是k8s早起提供的节点选择器实现 1)首先为nodes打对应的label kubectl label nodes master disktype=ssd 2)创建yaml文件,nginx-pod.yaml apiVersion: v1 kind: Pod metadata: name: nginx labels: env: test spec: containers: - name: nginx image: nginx 创建pod kubectl create -f nginx-pod.yaml 节点默认的label kubectl get nodes -o yaml 可以看到默认节点的label,也可以使用这些label进行约束 alpha.kubernetes.io/fluentd-ds-ready: "true" beta.kubernetes.io/arch: amd64 beta.kubernetes.io/os: linux disktype: ssd kubeadm.alpha.kubernetes.io/role: master

影响K8S Pod分配和调度策略的两大关键特性

梦想与她 提交于 2020-02-27 12:09:24
在Kubernetes中有一个最复杂的调度器可以处理pod的分配策略。基于在pod规范中所提及的资源需求,Kubernetes调度器会自动选择最合适的节点来运行pod。 但在许多实际场景下,我们必须干预调度过程才能在pod和一个节点或两个特定pod之间进行匹配。因此,Kubernetes中有一种十分强大的机制来管理及控制pod的分配逻辑。 那么,本文将探索影响Kubernetes中默认调度决定的关键特性。 节点亲和性/反亲和性 Kubernetes一向以来都是依赖label和selector来对资源进行分组。例如,某服务使用selector来过滤具有特定label的pod,这些label可以选择性地接收流量。Label和selector可以使用简单的基于等式的条件(=and!=)来评估规则。通过nodeSelector的特性(即强制将pod调度到特定节点上),可以将这一技术扩展到节点中。 此外,label和selector开始支持基于集合的query,它带来了基于in、notin和exist运算符的高级过滤技术。与基于等式的需求相结合,基于集合的需求提供了复杂的技术来过滤Kubernetes中的资源。 节点亲和性/反亲和性使用label和annotation的基于表达集的过滤技术来定义特定节点上的pod的分配逻辑。Annotation可以提供不会暴露到selector的其他元数据

# IT明星不是梦 #分布式负载均衡算法之亲和性轮询

北城以北 提交于 2020-02-25 22:05:15
无论是在早期的负载均衡器中,还是当前微服务基于客户端的负载均衡中,都有一个最基础的轮询算法,即将请求平均分布给多台机器,今天聊聊在此基础上, kube proxy是如何实现亲和性轮询的核心数据结构. 了解亲和性策略实现,失败重试等机制 1. 基础筑基 1.1 Service与Endpoints Service和Endpoint是kubernetes中的概念,其中Service代表一个服务,后面通常会对应一堆pod,因为pod的ip并不是固定的,用Servicel来提供后端一组pod的统一访问入口, 而Endpoints则是一组后端提供相同服务的IP和端口集合 在这节内容中大家知道这些就可以来, 1.2 轮询算法 轮询算法可能是最简单的算法了,在go里面大多数实现都是通过一个slice存储当前可以访问的后端所有地址,而通过index来保存下一次请求分配的主机在slice中的索引 1.3 亲和性 亲和性实现上也相对简单,所谓亲和性其实就是当某个IP重复调用后端某个服务,则将其转发到之前转发的机器上即可 2. 核心数据结构实现 2.1 亲和性实现 2.1.1 亲和性之亲和性策略 亲和性策略设计上主要是分为三个部分实现: affinityPolicy:亲和性类型,即根据客户端的什么信息来做亲和性依据,现在是基于clientip affinityMap

Nginx配置文件参数优化

橙三吉。 提交于 2020-02-25 18:59:04
worker_processes worker_processes auto; 自动获取 worker_processes 4; 设置线程数,该线程数一般情况设置与cpu个数相等 worker_cpu_affinity 0001 0010 0100 1000; 表示开启两个进程,第一个进程对应着第一个CPU内核,第二个进程对应着第二个CPU内核。 worker_processes 8; 8核数设置 worker_cpu_affinity 00000001 0000001000000100 00001000 00010000 00100000 01000000 10000000; worker_rlimit_nofile 这个指令是指当一个nginx 进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx 进程数相除,但是nginx 分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致 events 来源: oschina 链接: https://my.oschina.net/u/4023534/blog/3166028

大数据技术涵盖简介

我与影子孤独终老i 提交于 2020-02-25 17:25:49
关于大数据的概念,指的是无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合。而大数据技术,是指从各种各样类型的数据中,快速获得有价值信息的能力。那么关于大数据的技术大致包含哪些内容? 一、数据采集 ETL工具负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。 二、数据存取 关系数据库、NOSQL、SQL等。 三、基础架构 云存储、分布式文件存储等。 四、数据处理 自然语言处理(NLP,Natural Language Processing)是研究人与计算机交互的语言问题的一门学科。处理自然语言的关键是要让计算机"理解"自然语言,所以自然语言处理又叫做自然语言理解(NLU,Natural Language Understanding),也称为计算语言学(Computational Linguistics。一方面它是语言信息处理的一个分支,另一方面它是人工智能(AI, Artificial Intelligence)的核心课题之一。 五、统计分析 假设检验、显著性检验、差异分析、相关分析、T检验、方差分析、卡方分析、偏相关分析、距离分析、回归分析、简单回归分析、多元回归分析、逐步回归、回归预测与残差分析、岭回归、logistic回归分析、曲线估计、因子分析

Activity的启动模式全解standard,singleTop,singleTask,singleInstance

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-30 09:23:49
在android中控制Activity的启动模式的属性主要控制两大功能: 1,控制activity 进入哪一个任务task 中, 有两种可能,进入启动task中,进入指定taskAffinity的task中,如果指定taskAffinity的task还不存在,则创建一个 2,控制activity 多次启动的处理模式, 有三种可能,每次都创建新的,如果在顶部不创建新的, 如果存在则清除之上所有的activity activity的taskAffinity属性值默认为application的taskAffinity属性值,application的taskAffinity属性值默认为包名 手动设置taskAffinity属性值时,可以设置任意字符串但是必须包含至少一个'.'点符号,否则apk会在安装时解析包错误 Activity的启动模式中多次启动的处理模式要先确定activity进入的task activity 的launchMode 静态设置时有四种模式,动态设置(intent flag)时常用的有三种 ,其中让taskAffinity属性起作用的有两种模式 singleTask , FLAG_ACTIVITY_NEW_TASK ,其他launchMode启动模式taskAffinity属性无效 launchMode standard 进入启动task

Exlusive client affinity

扶醉桌前 提交于 2020-01-25 02:18:30
问题 I am aware that client affinity is possible for a LoadBalancer type service in Kubernetes. The thing is that this affinity doesn't forbid that two different clientes access the same pod. Is it possible to associate a pod exclusively always to the same client? Thanks in advance and have a really nice day! 回答1: To only allow a specific external client/s to access a specific Pod/Deployment you can use whitelisting/source ranges. Restrictions can be applied to LoadBalancers as

Office 365 EWS does not return X-BackendOverrideCookie

假如想象 提交于 2020-01-23 10:51:27
问题 Office 365 does not return the X-BackendOverrideCookie in response headers. I set the X-AnchorMailbox and X-PreferServerAffinity in the request headers properly. This does not trigger X-BackendOverrideCookie to be returned, as it says in MSDN. Why is this happening? Meanwhile, I tried the same thing with an on-premise Exchange 2016. Here I don't even set the X-AnchorMailbox and X-PreferServerAffinity and I get back the X-BackendOverrideCookie in each response. This is not good either, since I

Office 365 EWS does not return X-BackendOverrideCookie

左心房为你撑大大i 提交于 2020-01-23 10:51:10
问题 Office 365 does not return the X-BackendOverrideCookie in response headers. I set the X-AnchorMailbox and X-PreferServerAffinity in the request headers properly. This does not trigger X-BackendOverrideCookie to be returned, as it says in MSDN. Why is this happening? Meanwhile, I tried the same thing with an on-premise Exchange 2016. Here I don't even set the X-AnchorMailbox and X-PreferServerAffinity and I get back the X-BackendOverrideCookie in each response. This is not good either, since I