服务器区域隔离
解决问题
在资源冗余不足情况下,有些批量服务导致节点内存和CPU间歇性暴增,从而导致节点拓机影响客户服务稳定性。
解决方案
将服务进行分离分为计算区和稳定区。
稳定区服务通过pods资源限制使得总资源使用量低于80%,以此保障服务的稳定性。
计算区服务总资源使用量达到120%,允许节点拓机,但需要报警并及时响应,对部署在计算区服务不提供99.9%可用性保障。
如何进行区域隔离
通过k8s的节点亲和性和污点功能来进行区域隔离。
隔离稳定区
稳定区节点添加标签
添加容忍部署会尽可能部署到有污点节点但是不必须,所以为了可以部署到指定的节点,要做节点亲和性配置(节点亲和性配置是通过节点label来做的)。
kubectl label node izuf684p7jmyrzfr3oq2fxz yb-scope=stable 移除标签
kubectl label node izuf684p7jmyrzfr3oq2fxz yb-scope-稳定区节点添加污点
添加污点的节点如果部署配置中没有配置容忍将不会将pod部署到节点中。
kubectl taint nodes izuf684p7jmyrzfr3oq2fxz stable=whoami:NoSchedule移除节点污点
kubectl taint nodes izuf684p7jmyrzfr3oq2fxz stable=whoami:NoSchedule部署文件添加节点亲和性
"affinity": {
"nodeAffinity": {
"requiredDuringSchedulingIgnoredDuringExecution": {
"nodeSelectorTerms": [
{
"matchExpressions": [
{
"key": "yb-scope",
"operator": "In",
"values": [
"stable"
]
}
]
}
]
}
}
}部署配置添加容忍
"tolerations": [
{
"key": "stable",
"operator": "Equal",
"value": "whoami",
"effect": "NoSchedule"
}
]计算区服务部署
默认不添加亲和性配置部署到计算区域
添加标签
kubectl label node izuf684p7jmyrzfr3oq2fxz yb-scope=computing 部署配置添加节点亲和性配置
"affinity": {
"nodeAffinity": {
"requiredDuringSchedulingIgnoredDuringExecution": {
"nodeSelectorTerms": [
{
"matchExpressions": [
{
"key": "yb-scope",
"operator": "In",
"values": [
"computing"
]
}
]
}
]
}
}
}最后编辑: 马运宝 文档更新时间: 2021-01-08 14:32 作者:马运宝