换了3个云厂商,才把最后的例子跑完。。。
1、下载示例源码
git clone https://github.com/istio/istio.git Cloning into 'istio'...
2、生成镜像
cd istio/samples/helloworld/src ./build_service.sh Sending build context to Docker daemon 7.168kB Step 1/8 : FROM python:2-onbuild 2-onbuild: Pulling from library/python ...... sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE istio/examples-helloworld-v2 latest 2c7736ccfb8b 45 seconds ago 713MB istio/examples-helloworld-v1 latest 20be3b24eab7 46 seconds ago 713MB
3、镜像发到其他节点
# 备份镜像 sudo docker save -o hello1.tar 20be3b24eab7 sudo docker save -o hello2.tar 2c7736ccfb8b # 镜像发送到其他3个节点,并导入 # 对于每个节点做下面的操作 scp -i ~/hwk8s.pem hello1.tar root@192.168.1.229:~/ scp -i ~/hwk8s.pem hello2.tar root@192.168.1.229:~/ ssh -i 192.168.1.229 sudo docker load -i hello1.tar sudo docker tag 20be3b24eab7 istio/examples-helloworld-v1:latest sudo docker load -i hello2.tar sudo docker tag 2c7736ccfb8b istio/examples-helloworld-v2:latest exit
4、部署helloworld
kubectl apply -f helloworld.yaml service/helloworld created deployment.apps/helloworld-v1 created deployment.apps/helloworld-v2 created kubectl apply -f helloworld-gateway.yaml gateway.networking.istio.io/helloworld-gateway created virtualservice.networking.istio.io/helloworld created kubectl get pods kubectl get deployments
5、测试并生成流量
# 设置环境变量 # 这里IP要选用内网IP export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}') export GATEWAY_URL=192.168.1.124:$INGRESS_PORT # 测试一下,会发现两次访问会用不同版本的服务 curl http://$GATEWAY_URL/hello Hello version: v1, instance: helloworld-v1-5b75657f75-9dss5 curl http://$GATEWAY_URL/hello Hello version: v2, instance: helloworld-v2-7855866d4f-rd2tr # 也可以在外网,通过浏览器浏览 # 这里IP要选用外网IP # 同样的,刷新浏览器会在不同版本服务之间切换 http://159.138.135.216:INGRESS_PORT/hello # 生成访问流量 ./loadgen.sh
6、使用kiali查看相关信息
#kiali 20001 istioctl dashboard kiali #按上一节方法修改nginx配置内部端口 #重新加载配置 nginx -s reload # 浏览器访问 http://159.138.135.216:8000
7、其他dashboard信息也可以用相同方法访问
#grafana 3000 istioctl dashboard grafana #jaeger 16686 istioctl dashboard jaeger #kiali 20001 istioctl dashboard kiali #prometheus 9090 istioctl dashboard prometheus #podid 9876 istioctl dashboard controlz podid #podid 15000 istioctl dashboard envoy podid #zipkin istioctl dashboard zipkin #按上一节方法修改nginx配置内部端口 #重新加载配置 nginx -s reload # 浏览器访问 http://159.138.135.216:8000