service mesh istio-0.8安装测试
生活随笔
收集整理的這篇文章主要介紹了
service mesh istio-0.8安装测试
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡介
istio是一個service mesh開源實現,由Google/IBM/Lyft共同開發。與之類似的還有conduit,但是功能不如istio豐富穩定。架構圖如下:
istio-0.8版本是第一個長期支持版本,相對于之前的版本配置改動較大。
安裝
# 去下面的地址下載壓縮包 # https://github.com/istio/istio/releases wget https://github.com/istio/istio/releases/download/0.8.0/istio-0.8.0-linux.tar.gz tar xf istio-0.8.0-linux.tar.gz# 使用官方的安裝腳本安裝 curl -L https://git.io/getLatestIstio | sh -# 安裝配置環境變量 mv istio-0.8.0 /usr/local/ ln -sv /usr/local/istio-0.8.0 /usr/local/istio echo 'export PATH=/usr/local/istio/bin:$PATH' > /etc/profile.d/istio.sh source /etc/profile.d/istio.sh istioctl version# 如果環境不是云環境,不支持LoadBalancer # 作如下修改,使得 ingressgateway 監聽在80和443端口 # 修改使用主機端口映射 # 使用此修改版本之后,每臺機器只能運行單個實例 # 大概在2661行左右 cd /usr/local/istio cp install/kubernetes/istio-demo.yaml install/kubernetes/istio-demo.yaml.ori vim install/kubernetes/istio-demo.yaml ... # Source: istio/charts/ingressgateway/templates/deployment.yaml apiVersion: extensions/v1beta1 # kind: Deployment # 使用DaemonSet部署方式 kind: DaemonSet metadata:name: istio-ingressgatewaynamespace: istio-systemlabels:app: ingressgatewaychart: ingressgateway-0.8.0release: RELEASE-NAMEheritage: Tilleristio: ingressgateway spec:# DaemonSet不支持replicas# replicas: template:metadata:labels:istio: ingressgatewayannotations:sidecar.istio.io/inject: "false"spec:serviceAccountName: istio-ingressgateway-service-accountcontainers:- name: ingressgatewayimage: "docker.io/istio/proxyv2:0.8.0"imagePullPolicy: IfNotPresentports:- containerPort: 80#主機80端口映射hostPort: 80- containerPort: 443#主機443端口映射hostPort: 443- containerPort: 31400#主機443端口映射hostPort: 31400 ...# 由于鏡像問題,提前拉取鏡像 # 在所有節點上執行如下命令輸出的命令 # 可能會失敗,需要多次執行 image=$(grep 'quay.io/coreos/hyperkube' install/kubernetes/istio-demo.yaml | head -1 | awk '{print $2}' | tr -d '"') echo "docker pull $image"# 以下兩種選擇一種安裝方式 # 安裝不使用認證(不使用tls) kubectl apply -f install/kubernetes/istio-demo.yaml# 安裝使用認證(使用tls) kubectl apply -f install/kubernetes/istio-demo-auth.yaml# 查看狀態 kubectl get svc -n istio-system kubectl get pods -n istio-system# 訪問測試 nodeName=$(kubectl get no | grep '<none>' | head -1 | awk '{print $1}') nodeIP=$(ping -c 1 $nodeName | grep PING | awk '{print $3}' | tr -d '()') echo "curl -I http://$nodeIP" 復制代碼注意
istio-0.8.0 默認已經開啟了自動注入功能以及其他日志監控和追蹤的相關組件如
- istio-tracing
- istio-telemetry
- grafana
- prometheus
- servicegraph
啟用自動注入 sidecar
-
不開啟自動注入部署應用需要使用如下方式的命令
kubectl apply -f <(istioctl kube-inject -f samples/bookinfo/kube/bookinfo.yaml)
-
開啟自動注入后,使用正常命令即可部署應用
kubectl apply -f samples/bookinfo/kube/bookinfo.yaml
部署官方測試用例
# 啟動(未開啟自動注入) kubectl apply -f <(istioctl kube-inject -f samples/bookinfo/kube/bookinfo.yaml)# 啟動(已開啟自動注入) kubectl apply -f samples/bookinfo/kube/bookinfo.yaml# 創建gateway istioctl create -f samples/bookinfo/routing/bookinfo-gateway.yaml# 查看狀態 kubectl get services kubectl get pods istioctl get gateway 復制代碼訪問測試
# 命令行訪問測試 export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http")].nodePort}') NODE_NAME=$(kubectl get no | grep '<none>' | head -1 | awk '{print $1}') NODE_IP=$(ping -c 1 $NODE_NAME | grep PING | awk '{print $3}' | tr -d '()') export GATEWAY_URL=$NODE_IP:$INGRESS_PORT echo $GATEWAY_URLcurl -o /dev/null -s -w "%{http_code}\n" http://${GATEWAY_URL}/productpage# 瀏覽器訪問測試 echo "http://${GATEWAY_URL}/productpage"# 使用daemonset方式部署可以使用如下方式訪問 # 11.11.11.112為其中一個node節點的ip curl http://11.11.11.112/productpage 復制代碼清理
# 清理官方用例 samples/bookinfo/kube/cleanup.sh# 清理istio kubectl delete -f install/kubernetes/istio-demo.yaml # kubectl delete -f install/kubernetes/istio-demo-auth.yaml 復制代碼參考文檔
- https://istio.io/docs/setup/kubernetes/quick-start.html
- https://istio.io/docs/guides/bookinfo.html
- https://istio.io/docs/setup/kubernetes/sidecar-injection.html#automatic-sidecar-injection
總結
以上是生活随笔為你收集整理的service mesh istio-0.8安装测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 07-11 Linux命令操作
- 下一篇: (码友推荐)2018-07-12 .NE