kube-router之負(fù)載均衡器

Kube-router是基于Kubernetes網(wǎng)絡(luò)設(shè)計(jì)的一個(gè)集負(fù)載均衡器们豌、防火墻和容器網(wǎng)絡(luò)的綜合方案。

主要功能

1. 基于IPVS/LVS的負(fù)載均衡器 | --run-service-proxy

kube-router采用Linux內(nèi)核的IPVS模塊為K8s提供Service的代理伙狐。

更多的詳情可以參考:

2. 容器網(wǎng)絡(luò) | --run-router

kube-router利用BGP協(xié)議和Go的GoBGP庫(kù)和為容器網(wǎng)絡(luò)提供直連的方案。因?yàn)橛昧嗽腒ubernetes API去構(gòu)建容器網(wǎng)絡(luò),意味著在使用kube-router時(shí)典蜕,不需要在你的集群里面引入其他依賴(lài)畦韭。

同樣的疼蛾,kube-router在引入容器CNI時(shí)也沒(méi)有其它的依賴(lài),官方的“bridge”插件就能滿(mǎn)足kube-rouetr的需求艺配。

更多關(guān)于BGP協(xié)議在Kubernetes中的使用可以參考:

3. 網(wǎng)絡(luò)策略管理 | --run-firewall

采用了kube-router的Kubernetes很容易通過(guò)添加標(biāo)簽到kube-router的方式使用網(wǎng)路策略功能察郁。kube-router使用了ipset操作iptables衍慎,以保證防火墻的規(guī)則對(duì)系統(tǒng)性能有較低的影響。

Kube-router支持networking.k8s.io/NetworkPolicy的API或者其他基于網(wǎng)絡(luò)策略的V1/GA語(yǔ)義皮钠。

更多關(guān)于kube-router防火墻的功能可以參考:

負(fù)載均衡器

kube-router的負(fù)載均衡器功能稳捆,會(huì)在物理機(jī)上創(chuàng)建一個(gè)虛擬的kube-dummy-if網(wǎng)卡,然后利用k8s的watch APi實(shí)時(shí)更新svc和ep的信息麦轰。svc的cluster_ip會(huì)綁定在kube-dummy-if網(wǎng)卡上乔夯,作為lvs的virtual server的地址。realserver的ip則通過(guò)ep獲取到容器的IP地址款侵。

一個(gè)單純的負(fù)載均衡器部署如下:

kubw-router.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: kube-router-cfg
  namespace: kube-system
  labels:
    tier: node
    k8s-app: kube-router
data:
  cni-conf.json: |
    {
      "name":"kubernetes",
      "type":"bridge",
      "bridge":"kube-bridge",
      "isDefaultGateway":true,
      "ipam": {
        "type":"host-local"
      }
    }
---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: kube-router
  namespace: kube-system
  labels:
    k8s-app: kube-router
spec:
  template:
    metadata:
      labels:
        k8s-app: kube-router
      annotations:
        scheduler.alpha.kubernetes.io/critical-pod: ''
    spec:
      containers:
      - name: kube-router
        image: cloudnativelabs/kube-router
        args: ["--run-router=false", "--run-firewall=false", "--run-service-proxy=true", "--kubeconfig=/var/lib/kube-router/kubeconfig", "--masquerade-all", "--ipvs-sync-period=5s", "--iptables-sync-period=10s"]
        securityContext:
          privileged: true
        imagePullPolicy: Always
        env:
        - name: NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        volumeMounts:
        - name: lib-modules
          mountPath: /lib/modules
          readOnly: true
        - name: cni-conf-dir
          mountPath: /etc/kubernetes/cni/net.d
        - name: kubeconfig
          mountPath: /var/lib/kube-router/kubeconfig
          readOnly: true
        - name: cert
          mountPath: /etc/kubernetes/ssl
      initContainers:
      - name: install-cni
        image: busybox
        imagePullPolicy: Always
        command:
        - /bin/sh
        - -c
        - set -e -x;
          if [ ! -f /etc/kubernetes/cni/net.d/10-kuberouter.conf ]; then
            TMP=/etc/kubernetes/cni/net.d/.tmp-kuberouter-cfg;
            cp /etc/kube-router/cni-conf.json ${TMP};
            mv ${TMP} /etc/kubernetes/cni/net.d/10-kuberouter.conf;
          fi
        volumeMounts:
        - name: cni-conf-dir
          mountPath: /etc/kubernetes/cni/net.d
        - name: kube-router-cfg
          mountPath: /etc/kube-router
      hostNetwork: true
      nodeSelector:
        kube: router
      volumes:
      - name: lib-modules
        hostPath:
          path: /lib/modules
      - name: cni-conf-dir
        hostPath:
          path: /etc/kubernetes/cni/net.d
      - name: kube-router-cfg
        configMap:
          name: kube-router-cfg
      - name: kubeconfig
        hostPath:
          path: /var/lib/kube-router/kubeconfig
      - name: cert
        hostPath:
          path: /etc/kubernetes/ssl

調(diào)整負(fù)載均衡的策略支持以下4種方式:

  • 最少連接數(shù)
kubectl annotate service my-service "kube-router.io/service.scheduler=lc"
  • 輪詢(xún)
kubectl annotate service my-service "kube-router.io/service.scheduler=rr"
  • 源地址哈希
kubectl annotate service my-service "kube-router.io/service.scheduler=sh"
  • 目的地址哈希
kubectl annotate service my-service "kube-router.io/service.scheduler=dh"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末末荐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子新锈,更是在濱河造成了極大的恐慌甲脏,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妹笆,死亡現(xiàn)場(chǎng)離奇詭異块请,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)拳缠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)墩新,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人窟坐,你說(shuō)我怎么就攤上這事抖棘。” “怎么了狸涌?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵切省,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我帕胆,道長(zhǎng)朝捆,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任懒豹,我火速辦了婚禮芙盘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘脸秽。我一直安慰自己儒老,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布记餐。 她就那樣靜靜地躺著驮樊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上囚衔,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天挖腰,我揣著相機(jī)與錄音,去河邊找鬼练湿。 笑死猴仑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的肥哎。 我是一名探鬼主播辽俗,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼篡诽!你這毒婦竟也來(lái)了崖飘?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤霞捡,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后薄疚,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體碧信,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年街夭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了砰碴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡板丽,死狀恐怖呈枉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情埃碱,我是刑警寧澤猖辫,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站砚殿,受9級(jí)特大地震影響啃憎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜似炎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一辛萍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧羡藐,春花似錦贩毕、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春睛藻,著一層夾襖步出監(jiān)牢的瞬間启上,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工店印, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留冈在,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓按摘,卻偏偏與公主長(zhǎng)得像包券,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子炫贤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 安裝k8s Master高可用集群 主機(jī) 角色 組件 172.18.6.101 K8S Master Kubele...
    jony456123閱讀 8,053評(píng)論 0 9
  • kubernetes 簡(jiǎn)介 一個(gè)迅速過(guò)一遍kubernetes 非常不錯(cuò)的資源:基于Kubernetes構(gòu)建Doc...
    bradyjoestar閱讀 15,281評(píng)論 2 7
  • ?Kubernetes介紹1.背景介紹云計(jì)算飛速發(fā)展- IaaS- PaaS- SaaSDocker技術(shù)突飛猛進(jìn)-...
    Zero___閱讀 14,734評(píng)論 0 21
  • ** 內(nèi)容安排: ** 簡(jiǎn)介 區(qū)別 Nginx兰珍、LVS及HAProxy負(fù)載均衡軟件的優(yōu)缺點(diǎn) 一侍郭、簡(jiǎn)介 ** 所謂四...
    薛晨閱讀 67,289評(píng)論 12 159
  • 為了表示我的尊敬,我今天特意穿了一套中性帥氣的衣服來(lái)工作掠河。 我甘愿中“鐵骨柔情亮元、快恨情仇”的毒,我想唠摹,哪一輩子我該...
    佳穎心匠閱讀 261評(píng)論 0 0