如何讓Kubernetes集群內(nèi)的應(yīng)用訪(fǎng)問(wèn)集群外的服務(wù)

關(guān)鍵詞:

  • kubernetes
  • docker
  • Service Catalog
  • Service Broker
  • Helm

一、背景介紹

????本文主要介紹如何讓Kubernetes集群內(nèi)的應(yīng)用訪(fǎng)問(wèn)集群外的服務(wù)资昧;從而實(shí)現(xiàn)應(yīng)用與服務(wù)的分離旺嬉,解耦,使得應(yīng)用開(kāi)發(fā)人員只關(guān)注自己的核心業(yè)務(wù)邏輯本冲;而不用關(guān)心服務(wù)的生命周期准脂。
????采取的主要方案是使用Service Catalog與Service Broker技術(shù)。
????至于Service Catalog與Service Broker的原理檬洞,可以參考一下的鏈接:
????https://blog.csdn.net/dkfajsldfsdfsd/article/details/81062077
????https://github.com/kubernetes-incubator/service-catalog
????https://github.com/openservicebrokerapi/servicebroker

二狸膏、測(cè)試環(huán)境介紹

2.1 虛擬機(jī)環(huán)境介紹

系統(tǒng)類(lèi)型 IP role cpu memory hostname
CentOS 7.4.1708 172.16.91.215 master 4 4G master
CentOS 7.4.1708 172.16.91.216 worker 4 4G slave1
CentOS 7.4.1708 172.16.91.217 worker 2 1G slave2

注意:
最好將內(nèi)存和cpu分配的多些,不然添怔,很有可能導(dǎo)致catalog-apiserver中的etcd服務(wù)不能正常提供服務(wù)湾戳;
或者部署catalog時(shí)贤旷,修改etcd中的資源屬性配置

2.2 現(xiàn)有服務(wù)介紹

  1. Kubernetes 服務(wù)

  2. docker 服務(wù)

    • docker版本
      docker版本
  3. helm 服務(wù)
    helm的部署幼驶,可以參考下面的鏈接
    http://www.reibang.com/p/200020e7a843
    注意:
    Tiller的權(quán)限設(shè)置,不要參考上面鏈接的韧衣,可以使用下面的方式:

    Tiller權(quán)限設(shè)置

    https://github.com/kubernetes-incubator/service-catalog/blob/master/docs/install.md

三盅藻、主要步驟說(shuō)明

3.1 部署方式說(shuō)明

使用Helm來(lái)部署Service Catalog 和 Service Borker

3.2 主要分為以下步驟:

四、部署Service Catalog

4.1 下載catalog-0.1.27.tgz

helm fetch svc-cat/catalog --version 0.1.27 

4.2 部署Service Catalog

  • 方式一:可以直接安裝部署畅铭,
  • 方式二:根據(jù)自己的需求氏淑,做一些修改

4.2.1 本文采用方式二

  1. 解壓catalog-0.1.27.tgz
    tar -zxvf catalog-0.1.27.tgz
    cd catalog
    解壓catalog
  2. 編輯values.yaml文件
    • 修改鏡像的拉取策略:

      • 將imagePullPolicy: Always修改為imagePullPolicy: IfNotPresent
    • 將健康校驗(yàn)禁止掉(可能是docker版本的問(wèn)題,導(dǎo)致健康校驗(yàn)總是報(bào)錯(cuò)硕噩,從而導(dǎo)致pod服務(wù)異常)

      • 將enabled: true修改為enabled: false
    • 或者直接使用下面的命令來(lái)替換(下面的命令有問(wèn)題假残,還在排查中)
      sed -i 's#imagePullPolicy:?Always#imagePullPolicy:? IfNotPresent#g'?values.yaml
      sed -i 's#enabled:?true#enabled:?false#g'?values.yaml
      sed -i 's#image:?quay.io/kubernetes-service-catalog/service-catalog:v0.1.27#image:?registry.cn-qingdao.aliyuncs.com/kubernetes_xingej/catalog:v0.1.27#g'?values.yaml

      values.yaml

  3. cd templates
    下面的命令,有問(wèn)題炉擅,建議手動(dòng)修改
    sed -i 's#imagePullPolicy: Always#imagePullPolicy: IfNotPresent#g'?apiserver-deployment.yaml
    sed -i 's#image:?quay.io/coreos/etcd:latest#image:?registry.cn-qingdao.aliyuncs.com/kubernetes_xingej/etcd:3.2.24#g'?apiserver-deployment.yaml
    注意
    etcd版本守问,不一定非得是3.2.24
  1. 部署Service Catalog
    • helm install /root/catalog --name catalog --namespace catalog
    • 如何安裝失敗的話(huà),就刪除
      • helm del --purge catalog
        install catalog
  2. 查看部署情況
    kubectl get pod -n catalog
    查看catalog部署情況

五坑资、部署Service broker

5.1 在k8s集群外創(chuàng)建mysql服務(wù)

  1. 下載mysql:5.6鏡像(不建議使用8.0或者最新的版本耗帕,可能會(huì)存在驗(yàn)證問(wèn)題)
    docker pull mysql:5.6

  2. 編寫(xiě)啟動(dòng)腳本
    mkdir mysql
    cd mysql

    tee start-mysql.sh <<-'EOF'

    !/bin/bash

    cur_dir=`pwd`
    docker stop test-mysql
    docker rm test-mysql
    docker run --name test-mysql -v ${cur_dir}/data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
    EOF

  3. chmod +x start-mysql.sh && ./start-mysql.sh

    mysql服務(wù)容器化

  4. docker exec -it test-mysql bash

  5. 創(chuàng)建數(shù)據(jù)庫(kù)
    mysql -uroot -p123456
    create database mysql_service_broker;
    show databases;

    創(chuàng)建數(shù)據(jù)庫(kù)

5.2 部署mysql-broker

  1. 下載mysql-broker
    git clone https://github.com/xej520/shared-mysql-service-broker.git

  2. cd shared-mysql-service-broker

  3. kubectl apply -f k8s/namespace.yml

  4. cp k8s/secret.yml.sample k8s/secret.yml

  5. 需要根據(jù)自己的實(shí)際情況,來(lái)修改密鑰
    文件中袱贮,注釋的地方說(shuō)明了如何得到具體的值仿便。

    • 修改mysql的url地址
    • 修改用戶(hù)名和密碼
      修改secret.yaml
    • kubectl create -f k8s/secret.yaml
      create secret
  6. 修改k8s/deployment.yml文件中的鏡像拉取策略
    將imagePullPolicy: Always修改為imagePullPolicy: IfNotPresent

  7. 修改k8s/deployment.yml文件中的鏡像
    將image: making/shared-mysql-service-broker:0.0.3 修改為image: registry.cn-qingdao.aliyuncs.com/kubernetes_xingej/shared-mysql-service-broker:0.0.3

  8. kubectl apply -f k8s/deployment.yml

    • kubectl get pod -nosb #查看部署是否成功?
      create shared-mysql-service-broker
  9. kubectl apply -f k8s/cluster-service-broker.yml

    • 查看部署情況
      kubectl get clusterservicebrokers,clusterserviceclasses,clusterserviceplans,serviceinstances,servicebindings -oyaml
  10. 創(chuàng)建實(shí)例

    • kubectl apply -f k8s/sample/service-instance.yml
    • 查看實(shí)例對(duì)象是否創(chuàng)建成功攒巍?
      • kubectl get clusterservicebrokers,clusterserviceclasses,clusterserviceplans,serviceinstances,servicebindings -oyaml
    • 如果存在問(wèn)題嗽仪,就不要往下進(jìn)行了,先解決問(wèn)題柒莉。
      create instance
  11. binding

    • kubectl apply -f k8s/sample/service-binding.yml
    • 查看bingding對(duì)象是否創(chuàng)建成功闻坚?
      • kubectl get clusterservicebrokers,clusterserviceclasses,clusterserviceplans,serviceinstances,servicebindings -oyaml
    • 如果存在問(wèn)題,就不要往下進(jìn)行了兢孝,先解決問(wèn)題窿凤。
    • 如果創(chuàng)建成功的話(huà),會(huì)在默認(rèn)命名空間下跨蟹,會(huì)創(chuàng)建一個(gè)secret對(duì)象雳殊,名稱(chēng)是wp-db-secret
    • kubectl get secret wp-db-secret -oyaml
      查看是否綁定成功

      查看wp-db-secret對(duì)象

      k8s集群內(nèi)的應(yīng)用就是通過(guò)wp-db-secret這個(gè)密鑰,訪(fǎng)問(wèn)外面的mysql服務(wù)的窗轩。

六夯秃、測(cè)試:如何使得k8s集群內(nèi)的應(yīng)用訪(fǎng)問(wèn)集群外的服務(wù)?

  1. 使用k8s/sample/wordpress.yaml
    如果報(bào)掛載問(wèn)題的話(huà),可以做以下修改
    mkdir /usr/local/wd
    刪除PVC

    更新hostPath
  1. kubectl create -f k8s/sample/wordpress.yaml

  2. kubectl get pod -owide


    查看wordpress
  3. 通過(guò)curl命令來(lái)獲取catalog
    隨便創(chuàng)建一個(gè)pod,然后執(zhí)行下面的命令即可

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末仓洼,一起剝皮案震驚了整個(gè)濱河市介陶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌色建,老刑警劉巖哺呜,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異镀岛,居然都是意外死亡弦牡,警方通過(guò)查閱死者的電腦和手機(jī)友驮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)漂羊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人卸留,你說(shuō)我怎么就攤上這事走越。” “怎么了耻瑟?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵旨指,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我喳整,道長(zhǎng)谆构,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任框都,我火速辦了婚禮搬素,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘魏保。我一直安慰自己熬尺,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布谓罗。 她就那樣靜靜地躺著粱哼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪檩咱。 梳的紋絲不亂的頭發(fā)上揭措,一...
    開(kāi)封第一講書(shū)人閱讀 49,842評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音刻蚯,去河邊找鬼蜂筹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛芦倒,可吹牛的內(nèi)容都是我干的艺挪。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼麻裳!你這毒婦竟也來(lái)了口蝠?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤津坑,失蹤者是張志新(化名)和其女友劉穎妙蔗,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體疆瑰,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡眉反,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了穆役。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寸五。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖耿币,靈堂內(nèi)的尸體忽然破棺而出梳杏,到底是詐尸還是另有隱情,我是刑警寧澤淹接,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布十性,位于F島的核電站,受9級(jí)特大地震影響塑悼,放射性物質(zhì)發(fā)生泄漏劲适。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一厢蒜、第九天 我趴在偏房一處隱蔽的房頂上張望霞势。 院中可真熱鬧,春花似錦郭怪、人聲如沸支示。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)颂鸿。三九已至,卻和暖如春攒庵,著一層夾襖步出監(jiān)牢的瞬間嘴纺,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工浓冒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留栽渴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓稳懒,卻偏偏與公主長(zhǎng)得像闲擦,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

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

  • Service Catalog(服務(wù)目錄)是Kubernetes社區(qū)的孵化項(xiàng)目Kubernetes Service...
    小白_18M閱讀 9,417評(píng)論 0 14
  • 時(shí)隔大半年墅冷,我又回來(lái)了纯路,這回帶來(lái)的是最近非常火的容器編排工具——kubernetes 先附上docker 官網(wǎng)和k...
    我的橙子很甜閱讀 13,194評(píng)論 2 79
  • #啟發(fā)式提問(wèn)#開(kāi)發(fā)多維思考的法寶 近期發(fā)現(xiàn)娃子跟他爹狠習(xí)慣說(shuō)三個(gè)字:不知道寞忿,然后他爹也搞不定了驰唬,然后就沒(méi)有然后了。...
    A楊子閱讀 227評(píng)論 0 0
  • Hi Mr. Guo, Haven’t contacted you for a while. How are yo...
    zhefeng閱讀 145評(píng)論 0 0
  • 一直孜孜不倦想給自己取個(gè)好名字腔彰。小學(xué)的時(shí)候叫编,課本里有一首歌叫刨洋芋,和我的名字諧音霹抛,男同學(xué)們就跑來(lái)笑話(huà)我搓逾。我覺(jué)得特...
    芋頭姐閱讀 410評(píng)論 0 2