成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

從service的externalTrafficPolicy到podAntiAffinity

JerryZou / 2650人閱讀

摘要:使用場(chǎng)景將一個(gè)服務(wù)的分散在不同的主機(jī)或者拓?fù)溆蛑?,提高服?wù)本身的穩(wěn)定性。示例解讀使用作為拓?fù)溆虿榭雌ヅ湟?guī)則,即同一打有同樣標(biāo)簽的會(huì)調(diào)度到不同的節(jié)點(diǎn)。

externalTrafficPolicy 簡(jiǎn)介

如果服務(wù)需要將外部流量路由到 本地節(jié)點(diǎn)或者集群級(jí)別的端點(diǎn),即service type 為L(zhǎng)oadBalancer或NodePort,那么需要指明該參數(shù)。存在兩種選項(xiàng):”Cluster”(默認(rèn))和 “Local”。 “Cluster” 隱藏源 IP 地址,可能會(huì)導(dǎo)致第二跳(second hop)到其他節(jié)點(diǎn),但是全局負(fù)載效果較好?!盠ocal” 保留客戶(hù)端源 IP 地址,避免 LoadBalancer 和 NodePort 類(lèi)型服務(wù)的第二跳,但是可能會(huì)導(dǎo)致負(fù)載不平衡。

在實(shí)際的業(yè)務(wù)中,諸多業(yè)務(wù)是需要保留客戶(hù)端源 IP,所以需要通過(guò)將服務(wù)的配置文件中的 externalTrafficPolicy 參數(shù)設(shè)置為 “Local” 來(lái)激活這個(gè)特性。

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

新功能中,外部的流量不會(huì)按照 pod 平均分配,而是在節(jié)點(diǎn)(node)層面平均分配(因?yàn)?GCE/AWS 和其他外部負(fù)載均衡實(shí)現(xiàn)沒(méi)有能力做節(jié)點(diǎn)權(quán)重, 而是平均地分配給所有目標(biāo)節(jié)點(diǎn),忽略每個(gè)節(jié)點(diǎn)上所擁有的 pod 數(shù)量)。

然而,在 pod 數(shù)量(NumServicePods) ? 節(jié)點(diǎn)數(shù)(NumNodes)或者 pod 數(shù)量(NumServicePods) ? 節(jié)點(diǎn)數(shù)(NumNodes)的情況下,即使沒(méi)有權(quán)重策略,我們也可以看到非常接近公平分發(fā)的場(chǎng)景。

內(nèi)部 pod 對(duì) pod 的流量應(yīng)該與 ClusterIP 服務(wù)類(lèi)似,流量對(duì)于所有 pod 是均分的。

ps

設(shè)置了externalTrafficPolicy:Local以后svc死活都不能訪(fǎng)問(wèn),后來(lái)經(jīng)過(guò)一系列排查iptables和kube-proxy終于發(fā)現(xiàn)了解決辦法。
在kube-proxy啟動(dòng)參數(shù)里面需要設(shè)置--hostname-override:

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

竟然外部的流量不會(huì)按照 pod 平均分配,而是在節(jié)點(diǎn)(node)層面平均分配 ,那么我們能做的只有保證同一業(yè)務(wù)的pod調(diào)度到不同的node節(jié)點(diǎn)上。

podAntiAffinity使用場(chǎng)景:

將一個(gè)服務(wù)的POD分散在不同的主機(jī)或者拓?fù)溆蛑校岣叻?wù)本身的穩(wěn)定性。

給POD對(duì)于一個(gè)節(jié)點(diǎn)的獨(dú)占訪(fǎng)問(wèn)權(quán)限來(lái)保證資源隔離,保證不會(huì)有其它pod來(lái)分享節(jié)點(diǎn)資源。

把可能會(huì)相互影響的服務(wù)的POD分散在不同的主機(jī)上

對(duì)于親和性和反親和性,每種都有三種規(guī)則可以設(shè)置:

RequiredDuringSchedulingRequiredDuringExecution :在調(diào)度期間要求滿(mǎn)足親和性或者反親和性規(guī)則,如果不能滿(mǎn)足規(guī)則,則POD不能被調(diào)度到對(duì)應(yīng)的主機(jī)上。在之后的運(yùn)行過(guò)程中,如果因?yàn)槟承┰颍ū热缧薷膌abel)導(dǎo)致規(guī)則不能滿(mǎn)足,系統(tǒng)會(huì)嘗試把POD從主機(jī)上刪除(現(xiàn)在版本還不支持)。

RequiredDuringSchedulingIgnoredDuringExecution :在調(diào)度期間要求滿(mǎn)足親和性或者反親和性規(guī)則,如果不能滿(mǎn)足規(guī)則,則POD不能被調(diào)度到對(duì)應(yīng)的主機(jī)上。在之后的運(yùn)行過(guò)程中,系統(tǒng)不會(huì)再檢查這些規(guī)則是否滿(mǎn)足。

PreferredDuringSchedulingIgnoredDuringExecution :在調(diào)度期間盡量滿(mǎn)足親和性或者反親和性規(guī)則,如果不能滿(mǎn)足規(guī)則,POD也有可能被調(diào)度到對(duì)應(yīng)的主機(jī)上。在之后的運(yùn)行過(guò)程中,系統(tǒng)不會(huì)再檢查這些規(guī)則是否滿(mǎn)足。

那我們的使用場(chǎng)景只能使用RequiredDuringSchedulingIgnoredDuringExecution,要嚴(yán)格保證同一業(yè)務(wù)pod調(diào)度到不同的主機(jī)。當(dāng)然這樣可能出現(xiàn)一種問(wèn)題:不滿(mǎn)足條件的pod,會(huì)pending。這個(gè)時(shí)候我們運(yùn)維會(huì)接受到通知,去增加node節(jié)點(diǎn)或是驅(qū)趕業(yè)務(wù)不重要的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作為拓?fù)溆?查看匹配規(guī)則,即同一打有同樣標(biāo)簽name=frontend的pod會(huì)調(diào)度到不同的節(jié)點(diǎn)。

親和性/反親和性調(diào)度策略比較
調(diào)度策略 匹配標(biāo)簽 操作符 拓?fù)溆蛑С?/th> 調(diào)度目標(biāo)
nodeAffinity 主機(jī) In, NotIn, Exists, DoesNotExist, Gt, Lt pod到指定主機(jī)
podAffinity Pod In, NotIn, Exists, DoesNotExist pod與指定pod同一拓?fù)溆?/td>
PodAntiAffinity Pod In, NotIn, Exists, DoesNotExist pod與指定pod非同一拓?fù)溆?/td>

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/33064.html

相關(guān)文章

  • serviceexternalTrafficPolicypodAntiAffinity

    摘要:使用場(chǎng)景將一個(gè)服務(wù)的分散在不同的主機(jī)或者拓?fù)溆蛑?,提高服?wù)本身的穩(wěn)定性。示例解讀使用作為拓?fù)溆虿榭雌ヅ湟?guī)則,即同一打有同樣標(biāo)簽的會(huì)調(diào)度到不同的節(jié)點(diǎn)。 externalTrafficPolicy 簡(jiǎn)介 如果服務(wù)需要將外部流量路由到 本地節(jié)點(diǎn)或者集群級(jí)別的端點(diǎn),即service type 為L(zhǎng)oadBalancer或NodePort,那么需要指明該參數(shù)。存在兩種選項(xiàng):Cluster(默認(rèn))...

    ztyzz 評(píng)論0 收藏0
  • k8s與aws--如何在cloud-provider=awsk8s中設(shè)置externalTraff

    摘要:如何在啟用的集群中設(shè)置的為關(guān)于的和兩個(gè)值,在之前的文章中,我們已經(jīng)講過(guò)。首先保證啟動(dòng)參數(shù)里加入設(shè)置然后需要設(shè)置的為。參考資料當(dāng)您創(chuàng)建時(shí),我們會(huì)自動(dòng)創(chuàng)建選項(xiàng)集,并將它們與相關(guān)聯(lián)。 如何在啟用cloud-provider=aws的k8s集群中設(shè)置service 的externalTrafficPolicy為local 關(guān)于externalTrafficPolicy的local和cluste...

    chanjarster 評(píng)論0 收藏0
  • k8s與aws--如何在cloud-provider=awsk8s中設(shè)置externalTraff

    摘要:如何在啟用的集群中設(shè)置的為關(guān)于的和兩個(gè)值,在之前的文章中,我們已經(jīng)講過(guò)。首先保證啟動(dòng)參數(shù)里加入設(shè)置然后需要設(shè)置的為。參考資料當(dāng)您創(chuàng)建時(shí),我們會(huì)自動(dòng)創(chuàng)建選項(xiàng)集,并將它們與相關(guān)聯(lián)。 如何在啟用cloud-provider=aws的k8s集群中設(shè)置service 的externalTrafficPolicy為local 關(guān)于externalTrafficPolicy的local和cluste...

    zhoutk 評(píng)論0 收藏0
  • 【容器云 UK8S】服務(wù)發(fā)現(xiàn):ULB屬性修改處理方法和獲取真實(shí)客戶(hù)端IP

    摘要:原因解釋創(chuàng)建成功后,的將集群中的每個(gè)云主機(jī)節(jié)點(diǎn)作為自身的節(jié)點(diǎn),端口為申明的值注意不是。如何獲取源對(duì)于需要明確知道客戶(hù)端來(lái)源地址的情況,我們需要顯示地將的設(shè)置成如下修改。重新部署服務(wù)后,再用瀏覽器訪(fǎng)問(wèn),可以發(fā)現(xiàn)正確獲取了瀏覽器的訪(fǎng)問(wèn)。ULB屬性修改的處理方法如沒(méi)有實(shí)際需要,請(qǐng)避免修改ULB名稱(chēng)及注釋根據(jù)cloudprovider插件使用提醒,由UK8S cloudprovider創(chuàng)建的ULB不...

    Tecode 評(píng)論0 收藏0
  • kubernetes調(diào)度機(jī)制

    摘要:的調(diào)度機(jī)制組件調(diào)度器會(huì)將調(diào)度到資源滿(mǎn)足要求并且評(píng)分最高的上。這個(gè)特性的設(shè)計(jì)初衷是為了替代,并擴(kuò)展更強(qiáng)大的調(diào)度策略。和完全相同,以進(jìn)行強(qiáng)制的約束。軟規(guī)則除了,,還有一條軟規(guī)則配置后,沒(méi)有相關(guān)污點(diǎn)策略的會(huì)盡量避免調(diào)度到該上。 k8s的調(diào)度機(jī)制 scheduler組件 k8s調(diào)度器會(huì)將pod調(diào)度到資源滿(mǎn)足要求并且評(píng)分最高的node上。我們可以使用多種規(guī)則比如:1.設(shè)置cpu、內(nèi)存的使用要求;...

    selfimpr 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<