安装

[root@master ~]# wget https://github.com/istio/istio/releases/download/1.1.5/istio-1.1.5-linux.tar.gz
[root@master ~]# tar -zxvf istio-1.1.-linux.tar.gz
[root@master ~]# cd istio-1.1.

安装所有Istio自定义资源定义

[root@master istio-1.1.]# for i in install/kubernetes/helm/istio-init/files/crd*yaml; do kubectl apply -f $i; done
[root@master istio-1.1.]# kubectl apply -f install/kubernetes/istio-demo.yaml
[root@master istio-1.1.]# kubectl get svc -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
grafana ClusterIP 10.105.112.216 <none> /TCP 19s
istio-citadel ClusterIP 10.104.129.126 <none> /TCP,/TCP 19s
istio-egressgateway ClusterIP 10.96.68.169 <none> /TCP,/TCP,/TCP 19s
istio-galley ClusterIP 10.101.195.214 <none> /TCP,/TCP,/TCP 19s
istio-ingressgateway LoadBalancer 10.102.30.240 <pending> :/TCP,:/TCP,:/TCP,:/TCP,:/TCP,:/TCP,:/TCP,:/TCP,:/TCP 19s
istio-pilot ClusterIP 10.105.128.66 <none> /TCP,/TCP,/TCP,/TCP 19s
istio-policy ClusterIP 10.97.159.124 <none> /TCP,/TCP,/TCP 19s
istio-sidecar-injector ClusterIP 10.99.226.143 <none> /TCP 19s
istio-telemetry ClusterIP 10.109.97.180 <none> /TCP,/TCP,/TCP,/TCP 19s
jaeger-agent ClusterIP None <none> /UDP,/UDP,/UDP 19s
jaeger-collector ClusterIP 10.96.209.196 <none> /TCP,/TCP 19s
jaeger-query ClusterIP 10.110.178.26 <none> /TCP 19s
kiali ClusterIP 10.103.103.154 <none> /TCP 19s
prometheus ClusterIP 10.102.6.211 <none> /TCP 19s
tracing ClusterIP 10.110.154.208 <none> /TCP 19s
zipkin ClusterIP 10.98.186.181 <none> /TCP

当前 EXTERNAL-IP 处于 pending 状态,我们目前的环境并没有可用于Istio Ingress Gateway外部的负载均衡器,为了使得可以从外部访问,通过修改 istio-ingressgateway 这个Service的externalIps,以为当前Kubernetes集群的kube-proxy启用了ipvs,所以这个指定一个VIP 10.0.1.111作为externalIp。也可以把externalIp改为clusterIP

[root@master istio-1.1.]# kubectl edit svc istio-ingressgateway -n istio-system

......
spec:
externalIPs:
- 10.0.1.111 ......
//再次查看
[root@master istio-1.1.]# kubectl get svc istio-ingressgateway -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-ingressgateway LoadBalancer 10.102.30.240 10.0.1.111 :/TCP,:/TCP,:/TCP,:/TCP,:/TCP,:/TCP,:/TCP,:/TCP,:/TCP 7m54s
[root@master istio-1.1.]# kubectl label namespace default istio-injection=enabled //为需要自动注入sidecar的namespace打label
[root@master istio-1.1.]# kubectl get namespace -L istio-system
NAME STATUS AGE ISTIO-SYSTEM
default Active 13d enabled
istio-system Active 22m
kube-node-lease Active 13d
kube-public Active 13d
kube-system Active 13d

部署案例

[root@master istio-1.1.]# kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
service/details created
deployment.extensions/details-v1 created
service/ratings created
deployment.extensions/ratings-v1 created
service/reviews created
deployment.extensions/reviews-v1 created
deployment.extensions/reviews-v2 created
deployment.extensions/reviews-v3 created
service/productpage created
deployment.extensions/productpage-v1 created
[root@master istio-1.1.]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
details ClusterIP 10.106.209.133 <none> /TCP 84s
kubernetes ClusterIP 10.96.0.1 <none> /TCP 13d
productpage ClusterIP 10.96.27.39 <none> /TCP 84s
ratings ClusterIP 10.109.45.236 <none> /TCP 84s
reviews ClusterIP 10.102.249.50 <none> /TCP 84s
[root@master istio-1.1.]# kubectl get pods
NAME READY STATUS RESTARTS AGE
details-v1-79c6548b59-d8448 / Running 3m1s
productpage-v1-95d579cd5-62s8v / Running 3m1s
ratings-v1-7665579b75-jjvv7 / Running 3m1s
reviews-v1-67446f7d9b-hrhbj / Running 3m1s
reviews-v2-6bc7b4f678-vhjwh / Running 3m1s
reviews-v3-59b5b6948-sxxhj / Running 3m1s
[root@master istio-1.1.]# kubectl exec -it $(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}') -c ratings -- curl productpage:/productpage | grep -o "<title>.*</title>"
<title>Simple Bookstore App</title>

使用Istio Gateway接入集群外部流量
现在Bookinfo服务已启动并运行,您需要从Kubernetes集群外部访问应用程序,例如,从浏览器访问。一个Istio网关 用于此目的。

1.为应用程序定义入口网关:

[root@master istio-1.1.]# kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml //此处不能楼,不然http://NodeIP:31380/productpage访问不了
[root@master istio-1.1.]# kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
gateway.networking.istio.io/bookinfo-gateway created
virtualservice.networking.istio.io/bookinfo created
[root@master istio-1.1.]# kubectl get gateway
NAME AGE
bookinfo-gateway 22s
[root@master istio-1.1.]# kubectl get gateway bookinfo-gateway -o yaml
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"networking.istio.io/v1alpha3","kind":"Gateway","metadata":{"annotations":{},"name":"bookinfo-gateway","namespace":"default"},"spec":{"selector":{"istio":"ingressgateway"},"servers":[{"hosts":["istio.haipai.com"],"port":{"name":"http","number":,"protocol":"HTTP"}}]}}
creationTimestamp: "2019-05-24T09:03:51Z"
generation:
name: bookinfo-gateway
namespace: default
resourceVersion: ""
selfLink: /apis/networking.istio.io/v1alpha3/namespaces/default/gateways/bookinfo-gateway
uid: d93469d6-7e02-11e9-9cfc-fa163ec472b0
spec:
selector:
istio: ingressgateway
servers:
- hosts:
- istio.haipai.com
port:
name: http
number:
protocol: HTTP [root@master istio-1.1.]# kubectl get VirtualService -o wide
NAME GATEWAYS HOSTS AGE
bookinfo [bookinfo-gateway] [*] 4m51s

浏览器访问http://NodeIP:31380/productpage
然后创建v3的再去浏览器刷新几次就会发现有红有黑

[root@master istio-1.1.]# kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-v3.yaml
virtualservice.networking.istio.io/reviews created

我们再建一个virtual-service-reviews-jason-v2-v3.yaml此service不登陆的话默认转发到v3(红色),登陆就转发到v2(黑色)

[root@master istio-1.1.]# ls samples/bookinfo/networking/
bookinfo-gateway.yaml virtual-service-all-v1.yaml virtual-service-reviews--.yaml
certmanager-gateway.yaml virtual-service-details-v2.yaml virtual-service-reviews--.yaml
destination-rule-all-mtls.yaml virtual-service-ratings-db.yaml virtual-service-reviews-jason-v2-v3.yaml
destination-rule-all.yaml virtual-service-ratings-mysql-vm.yaml virtual-service-reviews-test-v2.yaml
destination-rule-reviews.yaml virtual-service-ratings-mysql.yaml virtual-service-reviews-v2-v3.yaml
egress-rule-google-apis.yaml virtual-service-ratings-test-abort.yaml virtual-service-reviews-v3.yaml
fault-injection-details-v1.yaml virtual-service-ratings-test-delay.yaml
ROUTING_RULE_MIGRATION.md virtual-service-reviews--v3.yaml
[root@master istio-1.1.]# kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-jason-v2-v3.yaml
virtualservice.networking.istio.io/reviews configured

//此时不登陆刷新都是红色,登陆用户jason,密码jason刷新都是黑色

kubernetes istio的快速安装和使用例子的更多相关文章

  1. kubernetes之Kubeadm快速安装v1.12.0版

    通过Kubeadm只需几条命令即起一个单机版kubernetes集群系统,而后快速上手k8s.在kubeadm中,需手动安装Docker和kubeket服务,Docker运行容器引擎,kubelet是 ...

  2. 【Istio实际操作篇】Istio入门,10分钟快速安装

    @ 目录 前言 本文说明 请大家务必查看 环境准备 详细版 入门:搭建步骤 Istio软件包下载 下载Istio 卸载 简洁版 安装 卸载 学习不走弯路,gz号「yeTechLog」 前言 上一篇讲了 ...

  3. kubernetes(K8S)快速安装与配置集群搭建图文教程

    kubernetes(K8S)快速安装与配置集群搭建图文教程 作者: admin 分类: K8S 发布时间: 2018-09-16 12:20 Kubernetes是什么? 首先,它是一个全新的基于容 ...

  4. 在k3d上快速安装Istio,助你在本地灵活使用K8S!

    作者丨Mitsuyuki Shiiba 原文链接: https://dev.to/bufferings/tried-k8s-istio-in-my-local-machine-with-k3d-52g ...

  5. traefik 结合 docker-compose 的快速安装及使用

    traefik 介绍 traefik 是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理.负载均衡工具. 它支持多种后台 (Docker, Swarm, Kubernetes, Maratho ...

  6. kubernetes + istio进行流量管理

    实验目的: 本文介绍如何通过istio实现域名访问k8s部署的nginx服务 前提: 已经安装了kubernetes的服务器 了解 kubernetes 基本命令如何使用 (kubectl creat ...

  7. Icinga快速安装与配置

    Icinga快速安装与配置/* body */body { margin: 20px; padding: 0; font-family: "Lucida Grande", &quo ...

  8. 15分钟在阿里云Kubernetes服务上快速建立Jenkins X Platform并运用GitOps管理应用发布

    本文主要介绍如何在阿里云容器服务Kubernetes上快速安装部署Jenkins X Platform并结合demo实践演示GitOps的操作流程. 注意:本文中使用的jx工具.cloud-envir ...

  9. 15分钟在笔记本上搭建 Kubernetes + Istio开发环境

    11月13~15日,KubeCon 上海大会召开,云原生是这个秋天最火热的技术.很多同学来问如何上手 Kubernetes和Istio 服务网格开发.本文将帮助你利用Docker CE桌面版,15分钟 ...

随机推荐

  1. GitHub上传项目之初体验

    git工具是很早之前安装的,之前还没有github账号,现在注册了一个,想学一下托管自己的项目和代码. 登录github账号之后,点击绿色的"New repository",输入名 ...

  2. php array remove empty values

    print_r(array_filter($linksArray)); 參考 Remove empty array elements Remove Empty Array Elements In PH ...

  3. Eclipse规范注释及注释文档的生成

    Eclipse作为JavaIDE(Integrated Development Environment,集成开发环境),可以通过设置自动添加Javadoc注释信息,如@author 作者名.@vers ...

  4. Mac电脑最常见的办公软件是什么?Notion for Mac多功能办公笔记软件使用方法

    Notion for Mac是一款最新的高效率.办公类软件,相信许多用户在办公的时候需要打开特别多的在线工具,譬如Google Drive.Dropbox Paper.Confluence.GitHu ...

  5. awk 一 文本处理工具

    简介 awk 是逐行扫描文件(从第1行到最后一行),寻找含有目标文本的行: 如果匹配成功,则会在该行上执行用户想要的操作. 反之,则不对行做任何处理. awk 命令的基本格式为: awk [选项] ' ...

  6. js基础用法 ,基础语法

    js用法: HTML 中的脚本必须位于 <script> 与 </script> 标签之间. 脚本可被放置在 HTML 页面的 <body> 和 <head& ...

  7. JavaWeb学习篇之----Tomcat中配置数字证书以及网络传输数据中的密码学知识

    今天是学习JavaWeb的第二天,我们来了解什么呢?就了解一下Tomcat中配置数字证书的相关内容,但是在说这部分内容的时候,我们貌似得先说一下数字证书的相关概念,那说到数字证书的时候我们还得了解一些 ...

  8. NX二次开发-UFUN设置环境变量UF_set_variable

    NX9+VS2012 #include <uf.h> #include <stdio.h> UF_initialize(); //UFUN方式 //设置环境变量 int a = ...

  9. C++ 字符串的分割函数split 及 用法【转载】

    文章出处https://blog.csdn.net/glmushroom/article/details/80690881 之前在C#中总用到字符串的分割,使用系统函数即可,比如: string a ...

  10. Jboss集群(五)--F5硬件负载均衡器双击热备 + Jboss集群终极实现

    BIG/IP利用定义在其上面的虚拟IP地址来为用户的一个或多个应用服务器提供服务.因此,它能够为大量的基于TCP/IP的网络应用提供服务器负载均衡服务.BIG/IP连续地对目标服务器进行L4到L7合理 ...