服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 编程技术 - 一篇学会 istio安装与部署

一篇学会 istio安装与部署

2021-09-14 01:34瓜农老梁梁勇 编程技术

Istio作为service mesh控制面的实施标准,先部署起来。然而会有一个坑要注意,否则无法访问到页面。这个坑是个示例的bug,已被人提了issue,我也被坑了一把。

一篇学会 istio安装与部署

引言

Istio作为service mesh控制面的实施标准,先部署起来。然而会有一个坑要注意,否则无法访问到页面。这个坑是个示例的bug,已被人提了issue,我也被坑了一把。

一、准备工作

1.安装Docker

通过命令行或者直接下载,由于网络原因我直接下载安装 ,下载地址:

  1. https://hub.docker.com/editions/community/docker-ce-desktop-mac 

2.驱动安装

  1. curl -LO https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-hyperkit 
  2. chmod +x docker-machine-driver-hyperkit 
  3. sudo mv docker-machine-driver-hyperkit /usr/local/bin/ 
  4. sudo chown root:wheel /usr/local/bin/docker-machine-driver-hyperkit 
  5. sudo chmod u+s /usr/local/bin/docker-machine-driver-hyperkit 

3.安装minikube

  1. curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/ 

验证版本

  1. $ minikube version 
  2. minikube version: v1.22.0 

4.启动minikube

  1. $ minikube start  Darwin 10.15.7 上的 minikube v1.22.0  根据现有的配置文件使用 docker 驱动程序  Starting control plane node minikube in cluster minikube  Pulling base image ...  Updating the running docker "minikube" container ...  This container is having trouble accessing https://k8s.gcr.io  To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/  正在 Docker 20.10.7 中准备 Kubernetes v1.21.2…  Verifying Kubernetes components...     Using image gcr.io/k8s-minikube/storage-provisioner:v5  Enabled addons: storage-provisioner, default-storageclass  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default 

二、安装与部署

1.下载istio

还是直接下载安装包,当前最新版本为1.11.0

  1. https://github.com/istio/istio/releases/tag/1.11.0 

2.设置环境变量

  1. vim ~/.bash_profileexport PATH=$PATH:/Users/yongliang/istio/istio-1.11.0/binsource ~/.bash_profile 

3.安装istio

  1. $ istioctl install --set profile=demo -y Istio core installed Istiod installed Egress gateways installed Ingress gateways installed Installation complete 

4.创建istio命名空间

  1. kubectl create namespace istio-system 

5.设置自动注入envoy

  1. $ kubectl label namespace default istio-injection=enablednamespace/default labeled 

6.验证istio版本

  1. $ istioctl versionclient version: 1.11.0control plane version: 1.11.0data plane version: 1.11.0 (8 proxies) 

小结:输出可以看出安装的istio客户端版本、控制面板版本和数据面版本。

三、部署示例程序

1.部署示例

示例在安装目录sample目录下

  1. -rw-r--r--@ 1 yongliang staff 11348 8 13 00:17 LICENSE-rw-r--r--@ 1 yongliang staff 5866 8 13 00:17 README.mddrwxr-x---@ 3 yongliang staff 96 8 13 00:17 bin-rw-r-----@ 1 yongliang staff 854 8 13 00:17 manifest.yamldrwxr-xr-x@ 5 yongliang staff 160 8 13 00:17 manifestsdrwxr-xr-x@ 21 yongliang staff 672 8 13 00:17 samplesdrwxr-xr-x@ 5 yongliang staff 160 8 13 00:17 tools 
  2.  
  3. $ kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yamlservice/details createdserviceaccount/bookinfo-details createddeployment.apps/details-v1 createdservice/ratings createdserviceaccount/bookinfo-ratings createddeployment.apps/ratings-v1 createdservice/reviews createdserviceaccount/bookinfo-reviews createddeployment.apps/reviews-v1 createddeployment.apps/reviews-v2 createddeployment.apps/reviews-v3 createdservice/productpage createdserviceaccount/bookinfo-productpage createddeployment.apps/productpage-v1 created 

2.服务启动情况

  1. $ kubectl get servicesNAME          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGEdetails       ClusterIP   10.100.65.41     <none>        9080/TCP   4d2hkubernetes    ClusterIP   10.96.0.1        <none>        443/TCP    4d4hproductpage   ClusterIP   10.107.21.144    <none>        9080/TCP   4d2hratings       ClusterIP   10.110.139.187   <none>        9080/TCP   4d2hreviews       ClusterIP   10.106.238.130   <none>        9080/TCP   4d2h 

pods为Running状态

  1. $ kubectl get podsNAME                              READY   STATUS    RESTARTS   AGEdetails-v1-79f774bdb9-bkrbp       2/2     Running   4          4d2hproductpage-v1-6b746f74dc-2c55l   2/2     Running   4          4d2hratings-v1-b6994bb9-7nvs2         2/2     Running   4          4d2hreviews-v1-545db77b95-mffvg       2/2     Running   4          4d2hreviews-v2-7bf8c9648f-pmqw8       2/2     Running   4          4d2hreviews-v3-84779c7bbc-sztp8       2/2     Running   4          4d2h 

3.把应用关联到istio网关

  1. $ kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yamlgateway.networking.istio.io/bookinfo-gateway createdvirtualservice.networking.istio.io/bookinfo created 

4.分析istio配置信息

  1. $ istioctl analyze? No validation issues found when analyzing namespace: default

5.设置入站IP和端口

端口设置

  1. $ export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')$ export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}'

打印出来看看

  1. $ echo "$INGRESS_PORT"31688$ echo "$SECURE_INGRESS_PORT"31908 

设置入站IP

在官方提供的命令中是下面一段:

  1. $ export INGRESS_HOST=$(minikube ip) 
  2. $ minikube ip192.168.49.2 

注意:照着执行后发现最后无法访问,下面有修正。

启动minikube隧道

  1. $ minikube tunnel  The service istio-ingressgateway requires privileged ports to be exposed: [80 443]  sudo permission will be asked for it.  Starting tunnel for service istio-ingressgateway. 

修正网关地址

官方为命令:

  1. $ export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT 

需要修正为:

  1. $ export GATEWAY_URL=127.0.0.1 
  2. $ echo "$GATEWAY_URL"127.0.0.1 

备注:修正原因参见issue地址 https://github.com/istio/istio.io/issues/9340

6.浏览器访问页面

一篇学会 istio安装与部署

7.安装Kiali仪表盘

  1. $ kubectl apply -f samples/addons$ kubectl rollout status deployment/kiali -n istio-systemdeployment "kiali" successfully rolled out 

启动仪表盘

  1. $ istioctl dashboard kialihttp://localhost:20001/kiali 

一篇学会 istio安装与部署

备注:当访问http://127.0.0.1/productpage时可以在仪表盘中观察到流量的流向和服务之间的关系。

【编辑推荐】https://mp.weixin.qq.com/s/rOWx_W2fzCvIDvN1u_7jLA

延伸 · 阅读

精彩推荐
  • 编程技术用户态 Tcpdump 如何实现抓到内核网络包的?

    用户态 Tcpdump 如何实现抓到内核网络包的?

    在网络包的发送和接收过程中,绝大部分的工作都是在内核态完成的。那么问题来了,我们常用的运行在用户态的程序 tcpdump 是那如何实现抓到内核态的包...

    开发内功修炼11612021-09-08
  • 编程技术简单、好懂的Svelte实现原理

    简单、好懂的Svelte实现原理

    本文会围绕一张流程图和两个Demo讲解,正确的食用方式是用电脑打开本文,跟着流程图、Demo一边看、一边敲、一边学...

    魔术师卡颂4822021-11-10
  • 编程技术2021年值得关注的React PDF 库

    2021年值得关注的React PDF 库

    今天,许多网络应用程序为其用户提供内置的PDF浏览选项。然而,选择一个并不容易,因为它们的功能远远超过显示PDF。在这篇文章中,我将评估5个React的...

    TianTianUp5232021-06-21
  • 编程技术让开发效率倍增的 VS Code 插件

    让开发效率倍增的 VS Code 插件

    今天来分享一些提升开发效率的实用 VS Code 插件!Better Comments 扩展可以帮助我们在代码中创建更人性化的注释,有不同形式和颜色的注释供我们选择。 ...

    前端充电宝7132022-04-21
  • 编程技术从Context源码实现谈React性能优化

    从Context源码实现谈React性能优化

    这篇文章主要介绍Context的实现原理,源码层面掌握React组件的render时机,从而写出高性能的React组件,源码层面了解shouldComponentUpdate、React.memo、PureComponen...

    魔术师卡颂5312020-12-20
  • 编程技术AIOps,SRE工程师手中的利器

    AIOps,SRE工程师手中的利器

    AIOps开始成为一种极为重要的站点可靠性工程工具。它能够高效吸纳观察数据、参与数据以及来自第三方工具的数据,判断系统运行状态并保证其处于最佳...

    至顶网5972021-03-08
  • 编程技术Delphi - Indy idMessage和idSMTP实现邮件的发送

    Delphi - Indy idMessage和idSMTP实现邮件的发送

    这篇文章主要介绍了Delphi - Indy idMessage和idSMTP实现邮件的发送,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    JJ_JeremyWu6592020-09-22
  • 编程技术真正聪明的程序员,总有办法不加班

    真正聪明的程序员,总有办法不加班

    工作效率提升了,就可以少加班了,聪明的程序员,总会有一堆可以提升编码效率的工具?当一种工具满足不了工作需求,就去探索新的,今天纬小创就给...

    今日头条12482021-03-04