Docker(二十六)k8s大流量容器,的應用方法(利用親和性和反親和性,做pod 定點)

k8s 在有些應用場景下需要把某些應用容器,固定在相應的節點上,比如主流量入口,會有大量的流量進來,那麼如果固定在node 節點上,那麼根據k8s 調度pod 規則,會把這個大流量的pod 漂移到其他node節點上,但是問題很容易,影響這個node節點上的其他pod 容器的網絡通信,

比如,我司,有個服務主入口,那麼這個容器只能固定在4個,4核16g 的高性能node 節點上,這樣,因爲網卡最多就是100m,那麼即使是跑滿了,也不會影響其他節點上的pod

下面說下方法:

1,獲取某個節點的labels

如果修改labels 在命令行最後加上 --overwrite

kubectl label node 172.17.122.109 as-rank=node1
kubectl describe node 172.17.122.109
##然後查詢Labels 這個字段或看到一下信息
Labels:             as-rank=node
                    beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/instance-type=QCLOUD
                    beta.kubernetes.io/os=linux
                    failure-domain.beta.kubernetes.io/region=sh
                    failure-domain.beta.kubernetes.io/zone=200003
                    kubernetes.io/hostname=172.17.122.109

  這個時候,編輯app應用的deployment文件,利用篩選器字段,將容器固定制定的node節點

.......
  spec:
    ...
    nodeSelector:
        as-rank: node
    ...

這時就會發現這個容器已經被k8s 調度到制定的節點上

這裏要注意下,因爲labels,可能多個節點是一樣的,這麼當用deployment部署的時候,只會往這幾個相同labels 節點部署


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章