国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

從service的externalTrafficPolicy到podAntiAffinity

JerryZou / 2642人閱讀

摘要:使用場景將一個服務的分散在不同的主機或者拓撲域中,提高服務本身的穩定性。示例解讀使用作為拓撲域查看匹配規則,即同一打有同樣標簽的會調度到不同的節點。

externalTrafficPolicy 簡介

如果服務需要將外部流量路由到 本地節點或者集群級別的端點,即service type 為LoadBalancer或NodePort,那么需要指明該參數。存在兩種選項:”Cluster”(默認)和 “Local”。 “Cluster” 隱藏源 IP 地址,可能會導致第二跳(second hop)到其他節點,但是全局負載效果較好。”Local” 保留客戶端源 IP 地址,避免 LoadBalancer 和 NodePort 類型服務的第二跳,但是可能會導致負載不平衡。

在實際的業務中,諸多業務是需要保留客戶端源 IP,所以需要通過將服務的配置文件中的 externalTrafficPolicy 參數設置為 “Local” 來激活這個特性。

    {
      "kind": "Service",
      "apiVersion": "v1",
      "metadata": {
        "name": "example-service",
      },
      "spec": {
        "ports": [{
          "port": 8765,
          "targetPort": 9376
        }],
        "selector": {
          "app": "example"
        },
        "type": "LoadBalancer",
        "externalTrafficPolicy": "Local"
      }
    }
使用保留源 IP 的警告和限制

新功能中,外部的流量不會按照 pod 平均分配,而是在節點(node)層面平均分配(因為 GCE/AWS 和其他外部負載均衡實現沒有能力做節點權重, 而是平均地分配給所有目標節點,忽略每個節點上所擁有的 pod 數量)。

然而,在 pod 數量(NumServicePods) ? 節點數(NumNodes)或者 pod 數量(NumServicePods) ? 節點數(NumNodes)的情況下,即使沒有權重策略,我們也可以看到非常接近公平分發的場景。

內部 pod 對 pod 的流量應該與 ClusterIP 服務類似,流量對于所有 pod 是均分的。

ps

設置了externalTrafficPolicy:Local以后svc死活都不能訪問,后來經過一系列排查iptables和kube-proxy終于發現了解決辦法。
在kube-proxy啟動參數里面需要設置--hostname-override:

- --hostname-override=$(NODE_NAME)
        env:
        - name: NODE_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.nodeName
通過podAntiAffinity 避免pod 流量不均衡

竟然外部的流量不會按照 pod 平均分配,而是在節點(node)層面平均分配 ,那么我們能做的只有保證同一業務的pod調度到不同的node節點上。

podAntiAffinity使用場景:

將一個服務的POD分散在不同的主機或者拓撲域中,提高服務本身的穩定性。

給POD對于一個節點的獨占訪問權限來保證資源隔離,保證不會有其它pod來分享節點資源。

把可能會相互影響的服務的POD分散在不同的主機上

對于親和性和反親和性,每種都有三種規則可以設置:

RequiredDuringSchedulingRequiredDuringExecution :在調度期間要求滿足親和性或者反親和性規則,如果不能滿足規則,則POD不能被調度到對應的主機上。在之后的運行過程中,如果因為某些原因(比如修改label)導致規則不能滿足,系統會嘗試把POD從主機上刪除(現在版本還不支持)。

RequiredDuringSchedulingIgnoredDuringExecution :在調度期間要求滿足親和性或者反親和性規則,如果不能滿足規則,則POD不能被調度到對應的主機上。在之后的運行過程中,系統不會再檢查這些規則是否滿足。

PreferredDuringSchedulingIgnoredDuringExecution :在調度期間盡量滿足親和性或者反親和性規則,如果不能滿足規則,POD也有可能被調度到對應的主機上。在之后的運行過程中,系統不會再檢查這些規則是否滿足。

那我們的使用場景只能使用RequiredDuringSchedulingIgnoredDuringExecution,要嚴格保證同一業務pod調度到不同的主機。當然這樣可能出現一種問題:不滿足條件的pod,會pending。這個時候我們運維會接受到通知,去增加node節點或是驅趕業務不重要的pod。

示例解讀
apiVersion: v1
kind: Pod
metadata:
  name: with-pod-affinity
spec:
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        podAffinityTerm:
          labelSelector:
            matchExpressions:
            - key: name
              operator: In
              values:
              - frontend
          topologyKey: kubernetes.io/hostname
  containers:
  - name: with-pod-affinity
    image: gcr.io/google_containers/pause:2.0

使用kubernetes.io/hostname作為拓撲域,查看匹配規則,即同一打有同樣標簽name=frontend的pod會調度到不同的節點。

親和性/反親和性調度策略比較
調度策略 匹配標簽 操作符 拓撲域支持 調度目標
nodeAffinity 主機 In, NotIn, Exists, DoesNotExist, Gt, Lt pod到指定主機
podAffinity Pod In, NotIn, Exists, DoesNotExist pod與指定pod同一拓撲域
PodAntiAffinity Pod In, NotIn, Exists, DoesNotExist pod與指定pod非同一拓撲域

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/33064.html

相關文章

  • serviceexternalTrafficPolicypodAntiAffinity

    摘要:使用場景將一個服務的分散在不同的主機或者拓撲域中,提高服務本身的穩定性。示例解讀使用作為拓撲域查看匹配規則,即同一打有同樣標簽的會調度到不同的節點。 externalTrafficPolicy 簡介 如果服務需要將外部流量路由到 本地節點或者集群級別的端點,即service type 為LoadBalancer或NodePort,那么需要指明該參數。存在兩種選項:Cluster(默認)...

    ztyzz 評論0 收藏0
  • k8s與aws--如何在cloud-provider=awsk8s中設置externalTraff

    摘要:如何在啟用的集群中設置的為關于的和兩個值,在之前的文章中,我們已經講過。首先保證啟動參數里加入設置然后需要設置的為。參考資料當您創建時,我們會自動創建選項集,并將它們與相關聯。 如何在啟用cloud-provider=aws的k8s集群中設置service 的externalTrafficPolicy為local 關于externalTrafficPolicy的local和cluste...

    chanjarster 評論0 收藏0
  • k8s與aws--如何在cloud-provider=awsk8s中設置externalTraff

    摘要:如何在啟用的集群中設置的為關于的和兩個值,在之前的文章中,我們已經講過。首先保證啟動參數里加入設置然后需要設置的為。參考資料當您創建時,我們會自動創建選項集,并將它們與相關聯。 如何在啟用cloud-provider=aws的k8s集群中設置service 的externalTrafficPolicy為local 關于externalTrafficPolicy的local和cluste...

    zhoutk 評論0 收藏0
  • 【容器云 UK8S】服務發現:ULB屬性修改處理方法和獲取真實客戶端IP

    摘要:原因解釋創建成功后,的將集群中的每個云主機節點作為自身的節點,端口為申明的值注意不是。如何獲取源對于需要明確知道客戶端來源地址的情況,我們需要顯示地將的設置成如下修改。重新部署服務后,再用瀏覽器訪問,可以發現正確獲取了瀏覽器的訪問。ULB屬性修改的處理方法如沒有實際需要,請避免修改ULB名稱及注釋根據cloudprovider插件使用提醒,由UK8S cloudprovider創建的ULB不...

    Tecode 評論0 收藏0
  • kubernetes調度機制

    摘要:的調度機制組件調度器會將調度到資源滿足要求并且評分最高的上。這個特性的設計初衷是為了替代,并擴展更強大的調度策略。和完全相同,以進行強制的約束。軟規則除了,,還有一條軟規則配置后,沒有相關污點策略的會盡量避免調度到該上。 k8s的調度機制 scheduler組件 k8s調度器會將pod調度到資源滿足要求并且評分最高的node上。我們可以使用多種規則比如:1.設置cpu、內存的使用要求;...

    selfimpr 評論0 收藏0

發表評論

0條評論

JerryZou

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<