kubernetes 1.12.1 Ingress-nginx 部署使用

參考文獻(xiàn):
https://github.com/kubernetes/ingress-nginx/blob/nginx-0.20.0/docs/deploy/index.md
http://www.reibang.com/p/0a58e61627c4
http://www.reibang.com/p/02845519b0e0
https://blog.csdn.net/bbwangj/article/details/82940419
http://www.reibang.com/p/121b58782865

測(cè)試環(huán)境:

組件 版本號(hào)
kubernetes v1.12.1
ingress-nginx 0.20.0
centos 7.5
docker 17.03.2-ce

一、Ingress 簡(jiǎn)介

在Kubernetes中,服務(wù)和Pod的IP地址僅可以在集群網(wǎng)絡(luò)內(nèi)部使用毅访,對(duì)于集群外的應(yīng)用是不可見(jiàn)的。
為了使外部的應(yīng)用能夠訪問(wèn)集群內(nèi)的服務(wù)适刀,
在Kubernetes 目前 提供了以下幾種方案:

  • NodePort
  • LoadBalancer
  • Ingress
  1. Ingress 組成衰粹?

    • ingress controller
      • 將新加入的Ingress轉(zhuǎn)化成Nginx的配置文件并使之生效
    • ingress服務(wù)
      • 將Nginx的配置抽象成一個(gè)Ingress對(duì)象,每添加一個(gè)新的服務(wù)只需寫(xiě)一個(gè)新的Ingress的yaml文件即可
  2. Ingress 工作原理?

    • ingress controller通過(guò)和kubernetes api交互揖铜,動(dòng)態(tài)的去感知集群中ingress規(guī)則變化喊熟,

    • 然后讀取它柏肪,按照自定義的規(guī)則,規(guī)則就是寫(xiě)明了哪個(gè)域名對(duì)應(yīng)哪個(gè)service芥牌,生成一段nginx配置烦味,

    • 再寫(xiě)到nginx-ingress-control的pod里,這個(gè)Ingress controller的pod里運(yùn)行著一個(gè)Nginx服務(wù),控制器會(huì)把生成的nginx配置寫(xiě)入/etc/nginx.conf文件中谬俄,

    • 然后reload一下使配置生效柏靶。
      以此達(dá)到域名分配置和動(dòng)態(tài)更新的問(wèn)題。

  3. Ingress 可以解決什么問(wèn)題溃论?

    • 動(dòng)態(tài)配置服務(wù)
      如果按照傳統(tǒng)方式, 當(dāng)新增加一個(gè)服務(wù)時(shí), 我們可能需要在流量入口加一個(gè)反向代理指向我們新的k8s服務(wù). 而如果用了Ingress, 只需要配置好這個(gè)服務(wù), 當(dāng)服務(wù)啟動(dòng)時(shí), 會(huì)自動(dòng)注冊(cè)到Ingress的中, 不需要而外的操作.
    • 減少不必要的端口暴露
      配置過(guò)k8s的都清楚, 第一步是要關(guān)閉防火墻的, 主要原因是k8s的很多服務(wù)會(huì)以NodePort方式映射出去, 這樣就相當(dāng)于給宿主機(jī)打了很多孔, 既不安全也不優(yōu)雅. 而Ingress可以避免這個(gè)問(wèn)題, 除了Ingress自身服務(wù)可能需要映射出去, 其他服務(wù)都不要用NodePort方式
  4. Ingress當(dāng)前的實(shí)現(xiàn)方式屎蜓?

    image

本文使用的是基于nginx的ingress

二、部署配置Ingress

2.1 部署文件介紹钥勋、準(zhǔn)備

第一步: 獲取配置文件位置

https://github.com/kubernetes/ingress-nginx/tree/nginx-0.20.0/deploy

image

第二步: 下載部署文件

提供了兩種方式 :

  • 默認(rèn)下載最新的yaml
  • 指定版本號(hào)下載對(duì)應(yīng)的yaml
  1. 默認(rèn)下載最新的yaml
    wget  https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml
    
    image
  2. 指定版本號(hào)下載對(duì)應(yīng)的yaml
    如下載ingress-nginx 0.17.0對(duì)應(yīng)的yaml
    wget  https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.17.0/deploy/mandatory.yaml
    
    image

部署文件介紹

  1. namespace.yaml
    創(chuàng)建一個(gè)獨(dú)立的命名空間 ingress-nginx
  2. configmap.yaml
    ConfigMap是存儲(chǔ)通用的配置變量的炬转,類似于配置文件,使用戶可以將分布式系統(tǒng)中用于不同模塊的環(huán)境變量統(tǒng)一到一個(gè)對(duì)象中管理算灸;而它與配置文件的區(qū)別在于它是存在集群的“環(huán)境”中的扼劈,并且支持K8S集群中所有通用的操作調(diào)用方式。
    從數(shù)據(jù)角度來(lái)看菲驴,ConfigMap的類型只是鍵值組荐吵,用于存儲(chǔ)被Pod或者其他資源對(duì)象(如RC)訪問(wèn)的信息。這與secret的設(shè)計(jì)理念有異曲同工之妙赊瞬,主要區(qū)別在于ConfigMap通常不用于存儲(chǔ)敏感信息先煎,而只存儲(chǔ)簡(jiǎn)單的文本信息。
    ConfigMap可以保存環(huán)境變量的屬性巧涧,也可以保存配置文件薯蝎。
    創(chuàng)建pod時(shí),對(duì)configmap進(jìn)行綁定褒侧,pod內(nèi)的應(yīng)用可以直接引用ConfigMap的配置良风。相當(dāng)于configmap為應(yīng)用/運(yùn)行環(huán)境封裝配置。

pod使用ConfigMap闷供,通常用于:設(shè)置環(huán)境變量的值、設(shè)置命令行參數(shù)统诺、創(chuàng)建配置文件歪脏。

  1. default-backend.yaml
    如果外界訪問(wèn)的域名不存在的話,則默認(rèn)轉(zhuǎn)發(fā)到default-http-backend這個(gè)Service粮呢,其會(huì)直接返回404:

  2. rbac.yaml
    負(fù)責(zé)Ingress的RBAC授權(quán)的控制婿失,其創(chuàng)建了Ingress用到的ServiceAccount、ClusterRole啄寡、Role豪硅、RoleBinding、ClusterRoleBinding

  3. with-rbac.yaml
    是Ingress的核心挺物,用于創(chuàng)建ingress-controller懒浮。前面提到過(guò),ingress-controller的作用是將新加入的Ingress進(jìn)行轉(zhuǎn)化為Nginx的配置

2.2 部署ingress

第一步: 準(zhǔn)備鏡像,從這里mandatory.yaml查看需要哪些鏡像

已經(jīng)準(zhǔn)備好砚著, 可以直接點(diǎn)擊下載

鏡像名稱 版本 下載地址
k8s.gcr.io/defaultbackend-amd64 1.5 registry.cn-qingdao.aliyuncs.com/kubernetes_xingej/defaultbackend-amd64
quay.io/kubernetes-ingress-controller/nginx-ingress-controller 0.20.0 registry.cn-qingdao.aliyuncs.com/kubernetes_xingej/nginx-ingress-controller

如:
docker pull registry.cn-qingdao.aliyuncs.com/kubernetes_xingej/nginx-ingress-controller:0.20.0
將鏡像上傳到自己的私有倉(cāng)庫(kù)次伶,以供下面的步驟使用。

第二步: 更新mandatory.yaml中的鏡像地址

替換成自己的鏡像地址:

  1. 替換defaultbackend-amd64鏡像地址
    sed -i 's#k8s.gcr.io/defaultbackend-amd64#registry.cn-qingdao.aliyuncs.com/kubernetes_xingej/defaultbackend-amd64#g' mandatory.yaml
    
  2. 替換nginx-ingress-controller鏡像地址
    sed -i 's#quay.io/kubernetes-ingress-controller/nginx-ingress-controller#registry.cn-qingdao.aliyuncs.com/kubernetes_xingej/nginx-ingress-controller#g' mandatory.yaml
    

第三步: 部署nginx-ingress-controller

kubectl apply -f mandatory.yaml
image

第四步: 查看ingress-nginx組件狀態(tài)稽穆?

  1. 查看相關(guān)pod狀態(tài)

    kubectl get pods -n ingress-nginx -owide
    
    image
    [root@master ingress-nginx]# kubectl get pods -n ingress-nginx -owide
    NAME                                       READY   STATUS    RESTARTS   AGE     IP              NODE     NOMINATED NODE
    default-http-backend-7f594549df-nzthj      1/1     Running   0          3m59s   192.168.1.90    slave1   <none>
    nginx-ingress-controller-9fc7f4c5f-dr722   1/1     Running   0          3m59s   192.168.2.110   slave2   <none>
    [root@master ingress-nginx]# 
    
  2. 查看service狀態(tài)

    [root@master ingress-nginx]# kubectl get service -n ingress-nginx
    NAME                   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
    default-http-backend   ClusterIP   10.104.146.218   <none>        80/TCP    5m37s
    [root@master ingress-nginx]# 
    
    

三冠王、測(cè)試

3.1 測(cè)試default-http-backend 是否起作用?

系統(tǒng)自動(dòng)安裝了一個(gè)default-http-backend pod舌镶, 這是一個(gè)缺省的http后端服務(wù)柱彻, 用于返回404結(jié)果,如下所示:

image

接下會(huì)做一些關(guān)于ingress的詳細(xì)測(cè)試

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末餐胀,一起剝皮案震驚了整個(gè)濱河市哟楷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌骂澄,老刑警劉巖吓蘑,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異坟冲,居然都是意外死亡磨镶,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)健提,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)琳猫,“玉大人,你說(shuō)我怎么就攤上這事私痹∑晟” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵紊遵,是天一觀的道長(zhǎng)账千。 經(jīng)常有香客問(wèn)我,道長(zhǎng)暗膜,這世上最難降的妖魔是什么匀奏? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮学搜,結(jié)果婚禮上娃善,老公的妹妹穿的比我還像新娘。我一直安慰自己瑞佩,他們只是感情好聚磺,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著炬丸,像睡著了一般瘫寝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,155評(píng)論 1 299
  • 那天矢沿,我揣著相機(jī)與錄音滥搭,去河邊找鬼。 笑死捣鲸,一個(gè)胖子當(dāng)著我的面吹牛瑟匆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播栽惶,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼愁溜,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了外厂?” 一聲冷哼從身側(cè)響起冕象,我...
    開(kāi)封第一講書(shū)人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎汁蝶,沒(méi)想到半個(gè)月后渐扮,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡掖棉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年墓律,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幔亥。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡耻讽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出帕棉,到底是詐尸還是另有隱情针肥,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布香伴,位于F島的核電站慰枕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏即纲。R本人自食惡果不足惜捺僻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望崇裁。 院中可真熱鬧,春花似錦束昵、人聲如沸拔稳。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)巴比。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間轻绞,已是汗流浹背采记。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留政勃,地道東北人唧龄。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像奸远,于是被迫代替她去往敵國(guó)和親既棺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

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