容器云平臺No.4~kubernetes 服務(wù)暴露之Ingress

這是容器云平臺第四篇,接上一篇繼續(xù)鬼贱,
首先kubernetes服務(wù)暴露有如下幾種方式:

  • NodePort
  • Loadbalance
  • ClusterIP
  • Ingress

本文緊貼第一篇架構(gòu)圖,只介紹Ingress,其余的后續(xù)再詳細說香璃。这难。

Ingress是什么?

Ingress 是對集群中服務(wù)的外部訪問進行管理的 API 對象葡秒,典型的訪問方式是 HTTP姻乓,當然TCP也是可以管理滴。
Ingress 可以提供負載均衡眯牧、SSL 終結(jié)和基于域名的虛擬托管蹋岩。
大白話就是:把kubernetes集群生部署的服務(wù)暴露出來,讓集群外部的用戶或者服務(wù)能訪問到学少。

能為kubernetes提供ingress的控制器很多剪个,本文就用基于HAProxy的控制器:Haproxy Ingreess。
HAProxy是一個快速可靠的TCP和HTTP反向代理和負載均衡器版确。
當然扣囊,一個kubernetes集群也可以同時部署多種ingress控制器。

HAProxy Ingress

HAProxy Ingress 通過監(jiān)控Kubernetes API,獲取services后端的pod狀態(tài)绒疗,動態(tài)更新haproxy的配置文件侵歇,以實現(xiàn)負載均衡。
它允許每個代理每秒有數(shù)千個請求吓蘑,不管集群的大小惕虑,具有非常低的延遲。

簡單做個介紹,接下來開始實戰(zhàn)枷遂。

部署HAProxy Ingress到kubernetes集群

  1. 下載yaml部署文件:wget https://haproxy-ingress.github.io/resources/haproxy-ingress.yaml
  2. 修改haproxy-ingress.yaml樱衷,因為現(xiàn)在使用的是1.19版本,有的api版本已經(jīng)過期酒唉,需要修改下
    rbac.authorization.k8s.io/v1beta1 改為rbac.authorization.k8s.io/v1矩桂,如果不修改會有Warning,但是目前不影響
  3. 部署:kubectl apply -f haproxy-ingress.yaml
    [root@k8s-master001 opt]# kubectl  apply -f haproxy-ingress.yaml 
    namespace/ingress-controller created
    serviceaccount/ingress-controller created
    Warning: rbac.authorization.k8s.io/v1beta1 ClusterRole is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRole
    clusterrole.rbac.authorization.k8s.io/ingress-controller created
    Warning: rbac.authorization.k8s.io/v1beta1 Role is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 Role
    role.rbac.authorization.k8s.io/ingress-controller created
    Warning: rbac.authorization.k8s.io/v1beta1 ClusterRoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRoleBinding
    clusterrolebinding.rbac.authorization.k8s.io/ingress-controller created
    Warning: rbac.authorization.k8s.io/v1beta1 RoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 RoleBinding
    rolebinding.rbac.authorization.k8s.io/ingress-controller created
    configmap/haproxy-ingress created
    daemonset.apps/haproxy-ingress created
    
  4. 查看部署狀態(tài)
    [root@k8s-master001 opt]# kubectl  get all -n ingress-controller
    NAME                             DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR AGE
    daemonset.apps/haproxy-ingress   0         0         0       0            0           role=ingress-controller   6m2s
    

什么鬼痪伦,為什么沒有haproxy相關(guān)的pod呢侄榴?


image.png
  1. 現(xiàn)在再來看下 haproxy-ingress.yaml 這個文件,發(fā)現(xiàn)其中定義了nodeSelector節(jié)點標簽選擇器网沾,但是現(xiàn)在集群節(jié)點沒有任何機器有這個標簽癞蚕,因此需要給node設(shè)置合理的標簽,要不然不會創(chuàng)建pod
    現(xiàn)在手動給master003添加一個標簽role=ingress-controller
    [root@k8s-master001 opt]#  kubectl label node k8s-master003 role=ingress-controller
    node/k8s-master003 labeled
    
  2. 再來查看下辉哥,已經(jīng)有haproxy-ingress-6mfqr桦山,狀態(tài)為Running,表示已經(jīng)部署好了醋旦,是不是so easy~~~
    [root@k8s-master001 opt]# kubectl  get all -n ingress-controlle
    NAME                        READY   STATUS    RESTARTS   AGE
    pod/haproxy-ingress-6mfqr   1/1     Running   1          2m40s
    
    NAME                             DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR             AGE
    daemonset.apps/haproxy-ingress   1         1         1       1            1           role=ingress-controller   18m
    

使用Ingress暴露服務(wù)

這里使用上一篇部署的nginx作為示例恒水,部署上篇,現(xiàn)在查看下nginx狀態(tài)

[root@k8s-master001 ~]# kubectl  get po,svc
NAME          READY   STATUS    RESTARTS   AGE
pod/nginx-0   1/1     Running   0          32h

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        2d2h
service/nginx        NodePort    10.106.27.213   <none>        80:30774/TCP   32h

可以看到有一個名為nginx的service

[root@k8s-master001 ~]# cat ingress.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: nginx
  annotations:
    kubernetes.io/ingress.class: haproxy
spec:
  rules:
  - host: nginx.ieasou.cn
    http:
      paths:
       - path: /
         backend:
           serviceName: nginx
           servicePort: 80

執(zhí)行部署饲齐,會有個Warning钉凌,因為kubernetes apiVersion更新,以后會不在支持extensions/v1beta1捂人,這里不影響御雕,先忽略。

[root@k8s-master001 ~]# kubectl  apply -f ingress.yaml
Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
ingress.extensions/nginx configured

查看部署結(jié)果

[root@k8s-master001 ~]# kubectl  get ing 
NAME    CLASS    HOSTS             ADDRESS   PORTS   AGE
nginx   <none>   nginx.test.cn             80      21m

現(xiàn)在滥搭,需要自己把nginx.test.cn解析到haproxy-ingresss所在節(jié)點的IP酸纲,本文haproxy-ingresss部署到了master003(10.26.25.22)
測試的話,直接修改/etc/hosts文件论熙,然后可以訪問nginx.test.cn

[root@k8s-master001 ~]# curl -I nginx.text.cn
HTTP/1.1 200 OK
server: nginx/1.19.2
date: Sat, 12 Sep 2020 12:40:01 GMT
content-type: text/html
content-length: 612
last-modified: Tue, 11 Aug 2020 14:50:35 GMT
etag: "5f32b03b-264"
accept-ranges: bytes
strict-transport-security: max-age=15768000

從結(jié)果可以看到福青,返回狀態(tài)碼摄狱,說明可以訪問到部署的nginx服務(wù)了脓诡。


image.png

注:文中圖片來源于網(wǎng)絡(luò),如有侵權(quán)媒役,請聯(lián)系我及時刪除祝谚。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市酣衷,隨后出現(xiàn)的幾起案子交惯,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件席爽,死亡現(xiàn)場離奇詭異意荤,居然都是意外死亡,警方通過查閱死者的電腦和手機只锻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門玖像,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人齐饮,你說我怎么就攤上這事捐寥。” “怎么了祖驱?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵握恳,是天一觀的道長。 經(jīng)常有香客問我捺僻,道長乡洼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任匕坯,我火速辦了婚禮就珠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘醒颖。我一直安慰自己妻怎,他們只是感情好,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布泞歉。 她就那樣靜靜地躺著逼侦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪腰耙。 梳的紋絲不亂的頭發(fā)上榛丢,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機與錄音挺庞,去河邊找鬼晰赞。 笑死,一個胖子當著我的面吹牛选侨,可吹牛的內(nèi)容都是我干的掖鱼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼援制,長吁一口氣:“原來是場噩夢啊……” “哼戏挡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起晨仑,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤褐墅,失蹤者是張志新(化名)和其女友劉穎拆檬,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妥凳,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡竟贯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了逝钥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片澄耍。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖晌缘,靈堂內(nèi)的尸體忽然破棺而出齐莲,到底是詐尸還是另有隱情,我是刑警寧澤磷箕,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布选酗,位于F島的核電站,受9級特大地震影響岳枷,放射性物質(zhì)發(fā)生泄漏芒填。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一空繁、第九天 我趴在偏房一處隱蔽的房頂上張望殿衰。 院中可真熱鬧,春花似錦盛泡、人聲如沸闷祥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凯砍。三九已至,卻和暖如春拴竹,著一層夾襖步出監(jiān)牢的瞬間悟衩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工栓拜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留座泳,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓幕与,卻偏偏與公主長得像挑势,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子纽门,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

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