istio的安装,流控初步了解(代码片段)

author author     2022-11-06     521

关键词:

istio 安装

前提:

kubernetes 1.7.3及以上,并开启RBAC
kubernetes 1.9 以上,支持自动安装sidecar injection

环境要求:

1、开启serviceaccount
2、网络组件
3、有dns

下载源码包:

cd /usr/local/src/
wget https://github.com/istio/istio/releases/download/0.7.1/istio-0.7.1-linux.tar.gz
tar -zxf istio-0.7.1-linux.tar.gz

安装

cd istio-0.7.1
cp bin/istioctl /usr/local/sbin/
kubectl apply -f install/kubernetes/istio.yaml

如果要启动tls

kubectl apply -f install/kubernetes/istio-auth.yaml

所有项目在namespace istio-system查看

image名称,可以提前下载

docker.io/istio/proxy:0.7.1
docker.io/istio/mixer:0.7.1
docker.io/istio/pilot:0.7.1
docker.io/istio/istio-ca:0.7.1

查看是否安装成功

kubectl get svc -n istio-system
NAME            TYPE            CLUSTER-IP      EXTERNAL-IP   PORT(S)                                                             AGE
istio-ingress   LoadBalancer   10.111.150.31    <pending>     80:31691/TCP,443:30512/TCP                                          4h
istio-mixer     ClusterIP      10.100.150.25    <none>        9091/TCP,15004/TCP,9093/TCP,9094/TCP,9102/TCP,9125/UDP,42422/TCP    4h
istio-pilot     ClusterIP      10.108.203.112   <none>        15003/TCP,15005/TCP,15007/TCP,15010/TCP,8080/TCP,9093/TCP,443/TCP   4h

注: 如果集群不支持load banlance,EXTERNAL-IP 就是pending状态。可以设置NodePort或者端口转发实现访问

查看pod是否正常

kubectl get pods -n istio-system
NAME                             READY     STATUS    RESTARTS   AGE
istio-ca-5d495f8897-dvpg6        1/1       Running   0          4h
istio-ingress-5b5db76895-wqndc   1/1       Running   0          4h
istio-mixer-db9f8d47d-7gn9h      3/3       Running   0          4h
istio-pilot-84fcc8d4d7-lk9n2     2/2       Running   0          4h

如果是1.9版本,还有pod :istio-sidecar-injector-

部署应用

注:应用必须是 HTTP/1.1 or HTTP/2.0, 因为HTTP/1.0 是不支持的

如果是1.9版本,开启了pod(istio-sidecar-injector),可以直接使用kubectl create命令

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

如果没安装Istio-sidecar-injector,必须手动添加
kubectl create -f &lt;(istioctl kube-inject -f &lt;your-app&gt;.yaml)

卸载

1、安装的时候 启用 sidecar injector

kubectl delete -f install/kubernetes/istio-sidecar-injector-with-ca-bundle.yaml

2、没有tls认证:

kubectl delete -f install/kubernetes/istio.yaml

3、有tls认证:

kubectl delete -f install/kubernetes/istio-auth.yaml

使用举例

这里以helloworld举例 目录位置istio-0.7.1/samples/helloworld

因为集群版本是1.8,没有内置injector,需要手动更改yaml

istioctl kube-inject -f helloworld.yaml -o helloworld-istio.yaml

使用新的yaml文件,部署服务
kubectl create -f helloworld-istio.yaml

获取ingress url 和端口

export HELLOWORLD_URL=$(kubectl get po -l istio=ingress -o ‘jsonpath=.items[0].status.hostIP‘):$(kubectl get svc istio-ingress -o ‘jsonpath=.spec.ports[0].nodePort‘)

查看服务是否正常
curl http://$HELLOWORLD_URL/hello

注: 因为集群没有loadbalance,只能用nodeport访问

获取node ip
kubectl get po -l istio=ingress -n istio-system -o ‘jsonpath=.items[0].status.hostIP‘

获取node port
kubectl get svc istio-ingress -n istio-system -o ‘jsonpath=.spec.ports[0].nodePort‘

现在访问
curl http://$HELLOWORLD_URL/hello

发现规则是轮询到每个节点

route-rule编写

1、只能访问v1, route-rule-all-v1.yaml

apiVersion: config.istio.io/v1alpha2
kind: RouteRule
metadata:
  name: helloword-default
spec:
  destination:
    name: helloworld
  route:
  - labels:
      version: v1

2、只能访问v2, route-rule-all-v2.yaml

apiVersion: config.istio.io/v1alpha2
kind: RouteRule
metadata:
  name: helloword-default
spec:
  destination:
    name: helloworld
  route:
  - labels:
      version: v2

istio命令

删除规则
istioctl delete routerules helloword-default

查看规则
istioctl get routerules

初步了解redux(代码片段)

...大家提供一些参考  好的,使用redux最开始的一步就是安装  查看详情

一张图快速了解istio中的envoyfilter(代码片段)

EnvoyFilter简介EnvoyFilter提供了一种机制来定制IstioPilot生成的Envoy配置。使用EnvoyFilter修改某些字段的值,添加特定的过滤器,甚至添加全新的侦听器、集群等等。这个功能必须谨慎使用,因为不正确的配置可能会破坏整... 查看详情

istio1.12:安装和快速入门(代码片段)

前言Istio使用功能强大的Envoy服务代理扩展了Kubernetes,以建立一个可编程的、可感知的应用程序网络。Istio与Kubernetes和传统工作负载一起使用,为复杂的部署带来了标准的通用流量管理、遥测和安全性。下载Istio0.Istio版本... 查看详情

想变得更强吗?5分钟带你了解云原生核心--istio(上)(代码片段)

为什么需要istio?我们在使用k8s集群的时候,k8s虽然强大,但是也有弱点,比如我们要是想控制灰度发布,需要进行大量的配置,徒手硬敲金丝雀,流量控制,权限控制,这种事情还是留给年轻人吧…我们要是想控制通信重试,限流,熔断,倾斜... 查看详情

深入了解istio:调整max_body_size(代码片段)

nginx可以设置client_max_body_size,那么在istio场景下如何调整客户端的最大请求大小呢?解决方案可以配置EnvoyFilter:apiVersion:networking.istio.io/v1alpha3kind:EnvoyFiltermetadata:name:limit-request-sizenamespace:istio-systemspec:workloadSelector:labels:istio... 查看详情

深入了解istio:调整max_body_size(代码片段)

nginx可以设置client_max_body_size,那么在istio场景下如何调整客户端的最大请求大小呢?解决方案可以配置EnvoyFilter:apiVersion:networking.istio.io/v1alpha3kind:EnvoyFiltermetadata:name:limit-request-sizenamespace:istio-systemspec:workloadSelector:labels:istio... 查看详情

深入了解istio:调整max_body_size(代码片段)

nginx可以设置client_max_body_size,那么在istio场景下如何调整客户端的最大请求大小呢?解决方案可以配置EnvoyFilter:apiVersion:networking.istio.io/v1alpha3kind:EnvoyFiltermetadata:name:limit-request-sizenamespace:istio-systemspec:workloadSelector:labels:istio... 查看详情

深入了解istio:调整max_body_size(代码片段)

nginx可以设置client_max_body_size,那么在istio场景下如何调整客户端的最大请求大小呢?解决方案可以配置EnvoyFilter:apiVersion:networking.istio.io/v1alpha3kind:EnvoyFiltermetadata:name:limit-request-sizenamespace:istio-system 查看详情

istio1.12:安装和快速入门(代码片段)

前言Istio使用功能强大的Envoy服务代理扩展了Kubernetes,以建立一个可编程的、可感知的应用程序网络。Istio与Kubernetes和传统工作负载一起使用,为复杂的部署带来了标准的通用流量管理、遥测和安全性。[外链图片转存失... 查看详情

istio1.1尝鲜记(代码片段)

...,公司的技术大佬赶出了这篇尝鲜教程,其中包括环境、安装、可能遇到的问题及解决方式等,希望对大家有所帮助。环境已经安装了Kubernetes集群,有1个master和4个node。操作系统都是CentOSLinux7。 下载Istio安装文件curl-Lhttps://g... 查看详情

istio1.0安装(代码片段)

1.istio1.0安装创建istio目录[[email protected]-110~]#mkdiristio[[email protected]~]#cdistio1.1获取安装包链接:https://pan.baidu.com/s/1HQsXvN3Rgo5F7C9XYkhZng提取码:uqwk解压:tar-zxvfistio-1.0.0-linux.tar.gz1.2安装 查看详情

自学tensorflow——1.框架初步了解以及构建简单的计算图计算(代码片段)

...数据在python和c++(tensorflow底层)传输的时间浪费。2.tensorflow安装  pipinstalltensorflow即可,如果想用gpu版的,需要先安装CUDA和cuDNN,然后在pipinstalltensorflow-gpu3.实战a+b程序  首先导入tensorflow模块:importtensorflowastf  定义a,b两个tf... 查看详情

istio入门(代码片段)

...本教程中,我们将介绍服务网格的基础知识,并了解它如何实现分布式系统架构。我们将主要关注Istio,它是服务网格的一种具体实现。在此过程中,我们将介绍Istio的核心架构。2.什么是服务网格?在过去的几十年... 查看详情

想变得更强吗?5分钟带你了解云原生核心--istio(上)(代码片段)

为什么需要istio?我们在使用k8s集群的时候,k8s虽然强大,但是也有弱点,比如我们要是想控制灰度发布,需要进行大量的配置,徒手硬敲金丝雀,流量控制,权限控制,这种事情还是留给年轻人吧…我们要是想控制通信重试,限流,熔断,倾斜... 查看详情

爬虫初步了解(代码片段)

 一、爬虫的概念:口语版:也叫网络蜘蛛,它是批量下载网络资源的程序专业版:网络爬虫是伪装成客户端与服务端进行数据交互的程序二、爬虫的应用:1.数据采集例:收集数据,大数据2.搜索引擎例:百度,谷歌搜索引擎都属... 查看详情

react(初步了解)(代码片段)

1.什么是react?  1.1.React是一个用于构建用户界面的javacript库  1.2.React主要用于构建UI,很多人认为React是MVC中的V(视图)  1.3.React是拥有较高的性能,代码逻辑非常简单2.react特性?  2.1.声明式设计  2.2.高效 React通... 查看详情

istio原理解析(代码片段)

...录:istio定义为什么需要istioistio的主要功能istio架构安装istioistio之envoyistio之pointistio之mixeristio访问外网问题Istio定义一个用来连接、管理和保护微服务的开放平台。Istio提供一种简单的方式来建立已部署服务网络,具备负... 查看详情

初步了解vue源码(代码片段)

1、源码学习目录本项目所剖析的Vue.js源码版本是目前最新的版本,版本号为v2.6.11,其代码目录如下:  从上面的目录结构可以看出,Vue的整个项目包含了类型检测相关、单元测试相关、与平台无关的核心代码以及跨平台... 查看详情