溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Istio怎么安裝

發(fā)布時(shí)間:2021-12-24 09:55:09 來(lái)源:億速云 閱讀:201 作者:iii 欄目:云計(jì)算

這篇文章主要講解了“Istio怎么安裝”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Istio怎么安裝”吧!

為什么使用 Istio?

通過(guò)負(fù)載均衡、服務(wù)間的身份驗(yàn)證、監(jiān)控等方法,Istio 可以輕松地創(chuàng)建一個(gè)已經(jīng)部署了服務(wù)的網(wǎng)絡(luò),而服務(wù)的代碼只需很少更改甚至無(wú)需更改。通過(guò)在整個(gè)環(huán)境中部署一個(gè)特殊的 sidecar 代理為服務(wù)添加 Istio 的支持,而代理會(huì)攔截微服務(wù)之間的所有網(wǎng)絡(luò)通信,然后使用其控制平面的功能來(lái)配置和管理 Istio,這包括:

  • 為 HTTP、gRPC、WebSocket 和 TCP 流量自動(dòng)負(fù)載均衡。

  • 通過(guò)豐富的路由規(guī)則、重試、故障轉(zhuǎn)移和故障注入對(duì)流量行為進(jìn)行細(xì)粒度控制。

  • 可插拔的策略層和配置 API,支持訪(fǎng)問(wèn)控制、速率限制和配額。

  • 集群內(nèi)(包括集群的入口和出口)所有流量的自動(dòng)化度量、日志記錄和追蹤。

  • 在具有強(qiáng)大的基于身份驗(yàn)證和授權(quán)的集群中實(shí)現(xiàn)安全的服務(wù)間通信。

Istio 為可擴(kuò)展性而設(shè)計(jì),可以滿(mǎn)足不同的部署需求。

安裝方法

有三種方法進(jìn)行istio的安裝:

  • 使用istioctl安裝(Customizable Install with Istioctl)

  • 使用Helm安裝(Customizable Install with Helm)

  • 使用Operator安裝(Standalone Operator Install)

這里我下載istio,然后采用istioctl安裝。

容器鏡像

istio 1.5.1需要用到多個(gè)鏡像,我統(tǒng)一下載并上傳到各個(gè)節(jié)點(diǎn),減少流量并加快速度。

docker pull docker.io/istio/pilot:1.5.1
docker pull docker.io/istio/proxyv2:1.5.1
docker pull docker.io/jaegertracing/all-in-one:1.16

docker pull docker.io/prom/prometheus:v2.15.1
docker pull grafana/grafana:6.5.2

docker pull quay.io/kiali/kiali:v1.15

保存鏡像,并打包為*.zip:

echo ""
echo "=========================================================="
echo "Save istio for x64 v1.5.1 Images from docker.io ......"
echo "=========================================================="
echo ""

#MY_REGISTRY=mirrorgcrio

ISTIO_VERSION="1.5.1"
IMAGES_PATH=~/istio-images-$ISTIO_VERSION
mkdir $IMAGES_PATH

## 拉取鏡像
docker save docker.io/istio/pilot:1.5.1 -o $IMAGES_PATH/istio-pilot-$ISTIO_VERSION.tar
docker save docker.io/istio/proxyv2:1.5.1 -o $IMAGES_PATH/istio-proxyv2-$ISTIO_VERSION.tar
docker save docker.io/jaegertracing/all-in-one:1.16 -o $IMAGES_PATH/istio-jaeger-$ISTIO_VERSION.tar

docker save docker.io/prom/prometheus:v2.15.1 -o $IMAGES_PATH/istio-prometheus-2.15.1.tar
docker save grafana/grafana:6.5.2 -o $IMAGES_PATH/istio-grafana-6.5.2.tar

docker save quay.io/kiali/kiali:v1.15 -o $IMAGES_PATH/istio-kiali-1.15.tar

echo "Copy loader into $IMAGES_PATH"
cp istio-images-load.sh $IMAGES_PATH/

echo "Zip to $IMAGES_PATH.zip"
cd ~
zip -r istio-images-$ISTIO_VERSION.zip istio-images-$ISTIO_VERSION


echo ""
echo "=========================================================="
echo "Save istio for x64 v1.5.1 Images FINISHED."
echo " by openthings@https://my.oschina.net/u/2306127."
echo "=========================================================="

echo ""

使用scp上傳到節(jié)點(diǎn),運(yùn)行unzip解壓。

scp istio-images-1.5.1.zip openthings@openbox00:~/

保存下面的內(nèi)容到文件istio-images-load.sh:

echo ""
echo "=========================================================="
echo "Load istio for x64 v1.5.1 Images from zip ......"
echo "=========================================================="
echo ""

#MY_REGISTRY=mirrorgcrio
ISTIO_VERSION="1.5.1"
IMAGES_PATH=~/istio-images-$ISTIO_VERSION

#cd ~
#unzip istio-images-$ISTIO_VERSION.zip
#cd istio-images-$ISTIO_VERSION

## 拉取鏡像
docker load -i $IMAGES_PATH/istio-pilot-$ISTIO_VERSION.tar
docker load -i $IMAGES_PATH/istio-proxyv2-$ISTIO_VERSION.tar
docker load -i $IMAGES_PATH/istio-jaeger-$ISTIO_VERSION.tar

docker load -i $IMAGES_PATH/istio-prometheus-2.15.1.tar
docker load -i $IMAGES_PATH/istio-grafana-6.5.2.tar

docker load -i $IMAGES_PATH/istio-kiali-1.15.tar

echo ""
echo "=========================================================="
echo "Save istio for x64 v1.5.1 Images FINISHED."
echo " by openthings@https://my.oschina.net/u/2306127."
echo "=========================================================="

echo ""

然后使用istio-images-load.sh來(lái)載入鏡像到docker。

  • 更多工具參考:https://github.com/openthings/kubernetes-tools/tree/master/istio

下載 Istio

因?yàn)橐恍┰颍厦婀俜轿臋n的下載鏈接無(wú)法訪(fǎng)問(wèn)。我從這里下載,然后展開(kāi):

wget -c https://github.com/istio/istio/releases/download/1.5.1/istio-1.5.1-linux.tar.gz

下載內(nèi)容將包含:安裝文件、示例和 istioctl 命令行工具。

訪(fǎng)問(wèn) Istio release 頁(yè)面下載與您操作系統(tǒng)對(duì)應(yīng)的安裝文件。在 macOS 或 Linux 系統(tǒng)中,也可以通過(guò)以下命令下載最新版本的 Istio:

$ curl -L https://istio.io/downloadIstio | sh -

切換到 Istio 包所在目錄下。例如:Istio 包名為 istio-1.6.0,則:

$ cd istio-1.6.0

  • 安裝目錄包含如下內(nèi)容:

    • install/kubernetes 目錄下,有 Kubernetes 相關(guān)的 YAML 安裝文件

    • samples/ 目錄下,有示例應(yīng)用程序

    • bin/ 目錄下,包含 istioctl 的客戶(hù)端文件。istioctl 工具用于手動(dòng)注入 Envoy sidecar 代理。

  • istioctl 客戶(hù)端路徑增加到 path 環(huán)境變量中,macOS 或 Linux 系統(tǒng)的增加方式如下:

    $ export PATH=$PWD/bin:$PATH  

  • 在使用 bash 或 ZSH 控制臺(tái)時(shí),可以選擇啟動(dòng) auto-completion option。

安裝 Istio

請(qǐng)按照以下步驟在您所選的平臺(tái)上使用 demo 配置文件安裝 Istio。

安裝 demo 配置:

$ istioctl manifest apply --set profile=demo

為了驗(yàn)證是否安裝成功,需要先確保以下 Kubernetes 服務(wù)正確部署,然后驗(yàn)證除 jaeger-agent 服務(wù)外的其他服務(wù),是否均有正確的 CLUSTER-IP

$ kubectl get svc -n istio-system

如果集群運(yùn)行在一個(gè)不支持外部負(fù)載均衡器的環(huán)境中(例如:minikube),  istio-ingressgateway 的  EXTERNAL-IP 將顯示為  <pending> 狀態(tài)。請(qǐng)使用服務(wù)的  NodePort 或 端口轉(zhuǎn)發(fā)來(lái)訪(fǎng)問(wèn)網(wǎng)關(guān)。

請(qǐng)確保關(guān)聯(lián)的 Kubernetes pod 已經(jīng)部署,并且 STATUSRunning

$ kubectl get pods -n istio-system

后續(xù)步驟

安裝 Istio 后,就可以部署您自己的服務(wù),或部署安裝程序中系統(tǒng)的任意一個(gè)示例應(yīng)用。

應(yīng)用程序必須使用 HTTP/1.1 或 HTTP/2.0 協(xié)議用于 HTTP 通信;HTTP/1.0 不支持。

當(dāng)使用 kubectl apply 來(lái)部署應(yīng)用時(shí),如果 pod 啟動(dòng)在標(biāo)有 istio-injection=enabled 的命名空間中,那么,Istio sidecar 注入器將自動(dòng)注入 Envoy 容器到應(yīng)用的 pod 中:

$ kubectl label namespace <namespace> istio-injection=enabled $ kubectl create -n <namespace> -f <your-app-spec>.yaml

在沒(méi)有 istio-injection 標(biāo)記的命名空間中,在部署前可以使用 istioctl kube-inject 命令將 Envoy 容器手動(dòng)注入到應(yīng)用的 pod 中:

$ istioctl kube-inject -f <your-app-spec>.yaml | kubectl apply -f -

如果您不確定要從哪開(kāi)始,可以先部署 Bookinfo 示例,它會(huì)讓您體驗(yàn)到 Istio 的流量路由、故障注入、速率限制等功能。 然后您可以根據(jù)您的興趣瀏覽各種各樣的 Istio 任務(wù)。

下列任務(wù)都是初學(xué)者開(kāi)始學(xué)習(xí)的好入口:

  • 請(qǐng)求路由

  • 故障注入

  • 流量轉(zhuǎn)移

  • 查詢(xún)指標(biāo)

  • 可視化指標(biāo)

  • 日志收集

  • 速率限制

  • Ingress 網(wǎng)關(guān)

  • 訪(fǎng)問(wèn)外部服務(wù)

  • 可視化您的網(wǎng)格

下一步,可以定制 Istio 并部署您自己的應(yīng)用。在您開(kāi)始自定義 Istio 來(lái)適配您的平臺(tái)或者其他用途之前,請(qǐng)查看以下資源:

  • 部署模型

  • 部署最佳實(shí)踐

  • Pod 需求

  • 常規(guī)安裝說(shuō)明

使用 Istio 過(guò)程中有任何問(wèn)題,請(qǐng)來(lái)信告知我們,并歡迎您加入我們的社區(qū)。

卸載

卸載程序?qū)h除 RBAC 權(quán)限、istio-system 命名空間和所有相關(guān)資源??梢院雎阅切┎淮嬖诘馁Y源的報(bào)錯(cuò),因?yàn)樗鼈兛赡芤呀?jīng)被刪除掉了。

$ istioctl manifest generate --set profile=demo | kubectl delete -f -

感謝各位的閱讀,以上就是“Istio怎么安裝”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Istio怎么安裝這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI