服務(wù)網(wǎng)格Istio入門-詳細(xì)記錄Kubernetes安裝Istio并使用

我最新最全的文章都在 南瓜慢說 www.pkslow.com 串远,文章更新也只在官網(wǎng),歡迎大家來喝茶~~

1 服務(wù)網(wǎng)格Istio

Istio是開源的Service Mesh實(shí)現(xiàn)寺枉,一般用于Kubernetes集群容器中的連接抑淫、監(jiān)控和保護(hù)。它的核心特性有:

  • 流量管理
    • 通過簡(jiǎn)單配置實(shí)現(xiàn)服務(wù)之間的流量姥闪;
    • 簡(jiǎn)化服務(wù)級(jí)屬性如熔斷始苇、超時(shí)、重試筐喳;
    • 支持A/B測(cè)試函喉、金絲雀發(fā)布等。
  • 安全
    • 通信層面的安全控制荣月;
    • 開發(fā)人員只需要專注于應(yīng)用程序開發(fā)。
  • 可觀察性
    • Metrics;
    • Logging抱婉;
    • Tracing档叔。
  • 平臺(tái)支持
    • Kubernetes;
    • 各種云平臺(tái)蒸绩。

Istio的架構(gòu)分為數(shù)據(jù)平臺(tái)和控制平面衙四,數(shù)據(jù)平面通過Sidecar代理工作,如下:

2 Kubernetes安裝istio

2.1 創(chuàng)建服務(wù)器

為了避免出現(xiàn)鏡像下載慢或無法下載的問題患亿,我們使用阿里云香港的服務(wù)器來做示例届搁。為了省錢,我使用的是搶占式實(shí)例窍育,8CPU 16GB內(nèi)存卡睦,大概是0.28/小時(shí),用完即刪就可以了漱抓。

  • CPU:8核

  • 內(nèi)存:16GB

  • 系統(tǒng):Ubuntu 20.04 64位

  • 價(jià)格:0.28/時(shí)

  • 分配公網(wǎng)IP:是

  • 帶寬計(jì)費(fèi)模式:按使用流量

  • 帶寬峰值:最大

測(cè)試登陸如下:

ssh root@xx.xxx.xxx.xxx

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi       153Mi        15Gi       2.0Mi       325Mi        15Gi

正常連接表锻,可以開始使用了。

2.2 安裝Kubernetes

我這里不打算創(chuàng)建一個(gè)Kubernetes集群乞娄,所以只用了一臺(tái)機(jī)瞬逊,如果有興趣的可查看之間的文章《詳細(xì)記錄用kubeadm在Ubuntu上安裝Kubernetes集群》。

這里通過minikube來啟動(dòng)kubernetes仪或,我們一步一步來安裝吧:

# 必要的更新
$ apt-get update -y
$ apt-get upgrade -y

# 下載kubectl命令行工具
$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

# 執(zhí)行權(quán)限
$ chmod a+x kubectl
$ mv ./kubectl /usr/local/bin/kubectl

# 安裝Docker
$ apt-get install -y docker.io

# 檢測(cè)Docker安裝情況
$ docker --version
Docker version 20.10.7, build 20.10.7-0ubuntu1~20.04.1

# 下載minikube
$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

# 執(zhí)行權(quán)限
$ chmod +x minikube
$ mv minikube /usr/local/bin

# 安裝conntrack依賴
$ apt-get install -y conntrack

# 啟動(dòng)kubernetes确镊,需要等待一小段時(shí)間,因?yàn)橐螺d鏡像范删,啟動(dòng)kubernetes
$ minikube start --driver=none

# 檢測(cè)啟動(dòng)成功
kubectl version
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.0", GitCommit:"c2b5237ccd9c0f1d600d3072634ca66cefdf272f", GitTreeState:"clean", BuildDate:"2021-08-04T18:03:20Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.2", GitCommit:"092fbfbf53427de67cac1e9fa54aaa09a28371d7", GitTreeState:"clean", BuildDate:"2021-06-16T12:53:14Z", GoVersion:"go1.16.5", Compiler:"gc", Platform:"linux/amd64"}

我們看到對(duì)應(yīng)的Pod也起來了:

2.3 安裝istio

安裝完Istio后蕾域,我們就可以開始安裝Istio了,過程如下:

# 下載安裝包:
$ curl -L https://istio.io/downloadIstio | sh -

# 添加到Path
$ export PATH="$PATH:/root/istio-1.10.3/bin"

# 檢測(cè)是否可以正常安裝
$ istioctl x precheck
? No issues found when checking the cluster. Istio is safe to install or upgrade!

# 執(zhí)行安裝
$ istioctl install

安裝成功后,會(huì)出現(xiàn)如下界面:

查看命名空間旨巷,會(huì)多出一個(gè)istio-system:

3 使用istio

我們通過安裝官方的示例來看如何使用巨缘。先要給對(duì)應(yīng)的命令空間加標(biāo)簽,這樣istio才會(huì)識(shí)別采呐,才會(huì)注入代理:

$ kubectl label namespace default istio-injection=enabled

接著我們安裝對(duì)應(yīng)的示例代碼:

kubectl apply -f istio-1.10.3/samples/bookinfo/platform/kube/bookinfo.yaml

可以看到所有應(yīng)用都起來了若锁,而且每個(gè)Pod是有兩個(gè)Container的:

為了更好地監(jiān)控我們的應(yīng)用,我們來添加一些組件或插件:

$ kubectl apply -f istio-1.10.3/samples/addons

這樣斧吐,我們就多了許多新的組件又固,如Grafana、Jaeger煤率、Kiali口予、Prometheus等:

我們以Kiali以例,暴露服務(wù)出來涕侈,來看看它給我們帶來了什么:

# 添加NodePort
$ kubectl expose deployment kiali --type=NodePort --name=kiali-nodeport -n istio-system

# 找到對(duì)應(yīng)的端口
kubectl get service -n istio-system | grep kiali

# 在其它外部訪問,注意IP為服務(wù)器的公網(wǎng)IP
$ curl 47.242.151.110:31015
<a href="/kiali/">Found</a>.

打開:http://47.242.151.110:31015/kiali 煤辨,不要用Chrome打開裳涛,對(duì)于非https的網(wǎng)頁,Chrome會(huì)打開失敗众辨。我用Safari可以正常打開:

我們來模擬一些請(qǐng)求:

kubectl get svc
NAME          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
details       ClusterIP   10.101.63.99     <none>        9080/TCP   77m
kubernetes    ClusterIP   10.96.0.1        <none>        443/TCP    132m
productpage   ClusterIP   10.110.126.60    <none>        9080/TCP   77m
ratings       ClusterIP   10.104.252.123   <none>        9080/TCP   77m
reviews       ClusterIP   10.104.41.104    <none>        9080/TCP   77m

# 循環(huán)發(fā)送請(qǐng)求
for i in $(seq 1 100); do curl -s -o /dev/null "http://10.101.63.99:9080"; done
for i in $(seq 1 100); do curl -s -o /dev/null "http://10.110.126.60:9080"; done
for i in $(seq 1 100); do curl -s -o /dev/null "http://10.104.252.123:9080"; done
for i in $(seq 1 100); do curl -s -o /dev/null "http://10.104.41.104:9080"; done

查看Graph端三,就可以看到一些請(qǐng)求的線,紅色是失敗的鹃彻,綠色是健康正常的:

當(dāng)然還有其它更多的功能郊闯,這里就不一一講解了。

4 總結(jié)

這篇為入門體驗(yàn)蛛株,以后更多細(xì)節(jié)我們?cè)僖灰坏纴戆伞?/p>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末团赁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子谨履,更是在濱河造成了極大的恐慌欢摄,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笋粟,死亡現(xiàn)場(chǎng)離奇詭異怀挠,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)害捕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門绿淋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人尝盼,你說我怎么就攤上這事吞滞。” “怎么了盾沫?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵冯吓,是天一觀的道長(zhǎng)倘待。 經(jīng)常有香客問我,道長(zhǎng)组贺,這世上最難降的妖魔是什么凸舵? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮失尖,結(jié)果婚禮上啊奄,老公的妹妹穿的比我還像新娘。我一直安慰自己掀潮,他們只是感情好菇夸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布约素。 她就那樣靜靜地躺著侠坎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪澄峰。 梳的紋絲不亂的頭發(fā)上薯鼠,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天择诈,我揣著相機(jī)與錄音,去河邊找鬼出皇。 笑死羞芍,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的郊艘。 我是一名探鬼主播荷科,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼纱注!你這毒婦竟也來了畏浆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤狞贱,失蹤者是張志新(化名)和其女友劉穎全度,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體斥滤,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡将鸵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了佑颇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片顶掉。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖挑胸,靈堂內(nèi)的尸體忽然破棺而出痒筒,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布簿透,位于F島的核電站移袍,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏老充。R本人自食惡果不足惜葡盗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望啡浊。 院中可真熱鬧觅够,春花似錦、人聲如沸巷嚣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽廷粒。三九已至窘拯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間坝茎,已是汗流浹背涤姊。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留景东,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓奔誓,卻偏偏與公主長(zhǎng)得像斤吐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子厨喂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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