chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

K8S之長(zhǎng)連接負(fù)載均衡不均如何解決

馬哥Linux運(yùn)維 ? 來(lái)源:馬哥Linux運(yùn)維 ? 2023-06-05 11:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、前言

本文針對(duì)我們生產(chǎn)上出現(xiàn)的流量不均的問(wèn)題,介紹一下解決方案。

k8s是一個(gè)特別復(fù)雜的系統(tǒng),而網(wǎng)絡(luò)相關(guān)的問(wèn)題是其中最復(fù)雜的問(wèn)題,要通過(guò)一兩篇文章介紹清楚是很難的。這個(gè)流量不均的問(wèn)題出現(xiàn)的原因并不復(fù)雜,就是因?yàn)閗ube-proxy使用了默認(rèn)的iptables做負(fù)載均衡,而它是以概率的方式轉(zhuǎn)發(fā),使用長(zhǎng)連接且連接數(shù)較少時(shí),偏差會(huì)比較大。下面介紹兩種場(chǎng)景。

二、場(chǎng)景

2.1滾動(dòng)更新負(fù)載不均

在連接數(shù)比較固定或波動(dòng)不大的情況下,滾動(dòng)更新時(shí),舊 Pod 上的連接逐漸斷掉,重連到新啟動(dòng)的 Pod 上,越先啟動(dòng)的 Pod 所接收到的連接數(shù)越多,造成負(fù)載不均:

1e3b4e60-034b-11ee-90ce-dac502259ad0.png

2.2rr 策略負(fù)載不均

假如長(zhǎng)連接服務(wù)的不同連接的保持時(shí)長(zhǎng)差異很大,而 ipvs 轉(zhuǎn)發(fā)時(shí)默認(rèn)是 rr 策略轉(zhuǎn)發(fā),如果某些后端 Pod "運(yùn)氣較差",它們上面的連接保持時(shí)間比較較長(zhǎng),而由于是 rr 轉(zhuǎn)發(fā),它們身上累計(jì)的連接數(shù)就可能較多,節(jié)點(diǎn)上通過(guò) ipvsadm -Ln -t CLUSTER-IP:PORT 查看某個(gè) service 的轉(zhuǎn)發(fā)情況:

1e42534a-034b-11ee-90ce-dac502259ad0.png

我們發(fā)現(xiàn)部分 Pod 連接數(shù)高,它們相比連接數(shù)低的 Pod 要同時(shí)處理更多的連接,消耗的資源也就相對(duì)更多從而造成負(fù)載不均。

將 kube-proxy 的 ipvs 轉(zhuǎn)發(fā)模式設(shè)置為 lc (Least-Connection) ,即傾向轉(zhuǎn)發(fā)給連接數(shù)少的 Pod,可能會(huì)有所緩解,但也不一定,因?yàn)?ipvs 的負(fù)載均衡狀態(tài)是分散在各個(gè)節(jié)點(diǎn)的,并沒(méi)有收斂到一個(gè)地方,也就無(wú)法在全局層面感知哪個(gè) Pod 上的連接數(shù)少,并不能真正做到 lc??梢試L試設(shè)置為 sh (Source Hashing),并且這樣可以保證即便負(fù)載均衡狀態(tài)沒(méi)有收斂到同一個(gè)地方,也能在全局盡量保持負(fù)載均衡。

這邊很多對(duì)kupe-proxy的ipvs模式可能不太了解,ipvs和iptables都是基于netfilter的,兩者差別如下:

ipvs 為大型集群提供了更好的可擴(kuò)展性和性能

ipvs 支持比 iptables 更復(fù)雜的負(fù)載均衡算法(最小負(fù)載、最少連接、加權(quán)等等)

ipvs 支持服務(wù)器健康檢查和連接重試等功能

2.3、擴(kuò)容失效問(wèn)題 在連接數(shù)比較固定或波動(dòng)不大的情況下,工作負(fù)載在 HPA 自動(dòng)擴(kuò)容時(shí),由于是長(zhǎng)鏈接,連接數(shù)又比較固定,所有連接都 "固化" 在之前的 Pod 上,新擴(kuò)出的 Pod 幾乎沒(méi)有連接,造成之前的 Pod 高負(fù)載,而擴(kuò)出來(lái)的 Pod 又無(wú)法分擔(dān)壓力,導(dǎo)致擴(kuò)容失效:

1e47feda-034b-11ee-90ce-dac502259ad0.png

三、最佳實(shí)踐

業(yè)務(wù)層面自動(dòng)重連,避免連接 "固化" 到某個(gè)后端 Pod 上。比如周期性定時(shí)重連,或者一個(gè)連接中處理的請(qǐng)求數(shù)達(dá)到閾值后自動(dòng)重連。

不直接請(qǐng)求后端,通過(guò)七層代理訪問(wèn)。比如 gRPC 協(xié)議,可以 使用 nginx ingress 轉(zhuǎn)發(fā) gRPC,也可以 使用 istio 轉(zhuǎn)發(fā) gRPC,這樣對(duì)于 gRPC 這樣多個(gè)請(qǐng)求復(fù)用同一個(gè)長(zhǎng)連接的場(chǎng)景,經(jīng)過(guò)七層代理后,可以自動(dòng)拆分請(qǐng)求,在請(qǐng)求級(jí)別負(fù)載均衡。

kube-proxy 的 ipvs 轉(zhuǎn)發(fā)策略設(shè)置為 sh (--ipvs-scheduler=sh)。

編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 負(fù)載均衡
    +關(guān)注

    關(guān)注

    0

    文章

    128

    瀏覽量

    12838

原文標(biāo)題:K8S之長(zhǎng)連接負(fù)載均衡問(wèn)題

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    什么是 K8S,如何使用 K8S

    Kubernetes(簡(jiǎn)稱(chēng)K8S)是一個(gè)用于管理容器化應(yīng)用程序的開(kāi)源平臺(tái)。以下是關(guān)于K8S及其使用方法的介紹: 一、什么是 K8S 核心特點(diǎn) 自動(dòng)化容器編排:自動(dòng)處理容器的部署、擴(kuò)展、負(fù)載
    發(fā)表于 06-25 06:45

    OpenStack與K8s結(jié)合的兩種方案的詳細(xì)介紹和比較

    OpenStack與K8S結(jié)合主要有兩種方案。一是K8S部署在OpenStack平臺(tái)之上,二是K8S和OpenStack組件集成。
    的頭像 發(fā)表于 10-14 09:38 ?2.8w次閱讀

    關(guān)于K8s最詳細(xì)的解析

    一個(gè)目標(biāo):容器操作;兩地三中心;四層服務(wù)發(fā)現(xiàn);五種Pod共享資源;六個(gè)CNI常用插件;七層負(fù)載均衡;八種隔離維度;九個(gè)網(wǎng)絡(luò)模型原則;十類(lèi)IP地址;百級(jí)產(chǎn)品線(xiàn);千級(jí)物理機(jī);萬(wàn)級(jí)容器;相如無(wú)億,K8s有億:億級(jí)日服務(wù)人次。
    的頭像 發(fā)表于 04-08 13:55 ?8086次閱讀
    關(guān)于<b class='flag-5'>K8s</b>最詳細(xì)的解析

    Docker不香嗎為什么還要用K8s

    Docker 雖好用,但面對(duì)強(qiáng)大的集群,成千上萬(wàn)的容器,突然感覺(jué)不香了。 這時(shí)候就需要我們的主角 Kubernetes 上場(chǎng)了,先來(lái)了解一下 K8s 的基本概念,后面再介紹實(shí)踐,由淺入深步步為營(yíng)
    的頭像 發(fā)表于 06-02 11:56 ?4003次閱讀

    簡(jiǎn)單說(shuō)明k8s和Docker之間的關(guān)系

    這篇文章主要介紹了k8s和Docker關(guān)系簡(jiǎn)單說(shuō)明,本文利用圖文講解的很透徹,有需要的同學(xué)可以研究下 最近項(xiàng)目用到kubernetes(以下簡(jiǎn)稱(chēng)k8sks之間有
    的頭像 發(fā)表于 06-24 15:48 ?4125次閱讀

    K8S集群服務(wù)訪問(wèn)失敗怎么辦 K8S故障處理集錦

    問(wèn)題1:K8S集群服務(wù)訪問(wèn)失?。?? ? 原因分析:證書(shū)不能被識(shí)別,其原因?yàn)椋鹤远x證書(shū),過(guò)期等。 解決方法:更新證書(shū)即可。 問(wèn)題2:K8S集群服務(wù)訪問(wèn)失敗? curl: (7) Failed
    的頭像 發(fā)表于 09-01 11:11 ?1.7w次閱讀
    <b class='flag-5'>K8S</b>集群服務(wù)訪問(wèn)失敗怎么辦 <b class='flag-5'>K8S</b>故障處理集錦

    K8S(kubernetes)學(xué)習(xí)指南

    K8S(kubernetes)學(xué)習(xí)指南
    發(fā)表于 06-29 14:14 ?0次下載

    k8s是什么意思?kubeadm部署k8s集群(k8s部署)|PetaExpres

    ),Kubernetes提供了應(yīng)用部署,規(guī)劃,更新,維護(hù)的一種機(jī)制。 在Kubernetes中,我們可以創(chuàng)建多個(gè)容器,每個(gè)容器里面運(yùn)行一個(gè)應(yīng)用實(shí)例,然后通過(guò)內(nèi)置的負(fù)載均衡策略,實(shí)現(xiàn)對(duì)這一組應(yīng)用實(shí)例的管理、發(fā)現(xiàn)、訪問(wèn),而這些細(xì)節(jié)都不需要運(yùn)維人員去進(jìn)行復(fù)雜的手工配置和處理。
    發(fā)表于 07-19 13:14 ?1622次閱讀

    什么是K3sK8s?K3sK8s有什么區(qū)別?

    Kubernetes,通常縮寫(xiě)為 K8s,是領(lǐng)先的容器編排工具。該開(kāi)源項(xiàng)目最初由 Google 開(kāi)發(fā),幫助塑造了現(xiàn)代編排的定義。該系統(tǒng)包括了部署和運(yùn)行容器化系統(tǒng)所需的一切。
    的頭像 發(fā)表于 08-03 10:53 ?9255次閱讀

    k8s生態(tài)鏈包含哪些技術(shù)

    1. Apache APISIX Ingress 定義 ? 在 K8s 生態(tài)中,Ingress 作為表示 K8s 流量入口的一種資源,想要讓其生效,就需要有一個(gè) Ingress Controller
    的頭像 發(fā)表于 08-07 10:56 ?2050次閱讀
    <b class='flag-5'>k8s</b>生態(tài)鏈包含哪些技術(shù)

    k8s云原生開(kāi)發(fā)要求

    Kubernetes(K8s)云原生開(kāi)發(fā)對(duì)硬件有一定要求。CPU方面,建議至少配備2個(gè)邏輯核心,高性能CPU更佳。內(nèi)存至少4GB,但8GB或更高更推薦。存儲(chǔ)需至少20-30GB可用空間,SSD提升
    的頭像 發(fā)表于 10-24 10:03 ?1166次閱讀
    <b class='flag-5'>k8s</b>云原生開(kāi)發(fā)要求

    混合云部署k8s集群方法有哪些?

    混合云部署k8s集群方法是首先需在本地與公有云分別建立K8s集群,并確保網(wǎng)絡(luò)連接。接著,配置kubeconfig文件連接兩集群,并安裝云服務(wù)插件以實(shí)現(xiàn)資源互通。然后,編寫(xiě)Deploym
    的頭像 發(fā)表于 11-07 09:37 ?842次閱讀

    k8s和docker區(qū)別對(duì)比,哪個(gè)更強(qiáng)?

    Docker和Kubernetes(K8s)是容器化技術(shù)的兩大流行工具。Docker關(guān)注構(gòu)建和打包容器,適用于本地開(kāi)發(fā)和單主機(jī)管理;而K8s則提供容器編排和管理平臺(tái),適用于多主機(jī)或云環(huán)境,具備自動(dòng)化
    的頭像 發(fā)表于 12-11 13:55 ?1271次閱讀

    搭建k8s需要買(mǎi)幾臺(tái)云主機(jī)?

    至少3臺(tái)。搭建Kubernetes(K8s)集群所需的云主機(jī)數(shù)量因?qū)嶋H需求而異。一個(gè)基本的K8s集群通常需要至少3臺(tái)云主機(jī),包括1個(gè)Master節(jié)點(diǎn)和2個(gè)Worker節(jié)點(diǎn)。如果考慮高可用性和容錯(cuò)能力
    的頭像 發(fā)表于 02-20 10:40 ?1029次閱讀

    解析K8S實(shí)用命令

    前言: 作為運(yùn)維工程師,掌握 Kubernetes 命令行工具是日常工作的核心技能。本文將深入解析 K8S 最實(shí)用的命令,從基礎(chǔ)操作到高級(jí)技巧,助你成為容器化集群管理專(zhuān)家。
    的頭像 發(fā)表于 07-24 14:07 ?705次閱讀