zoukankan      html  css  js  c++  java
  • k8s记录-istio基础

    参考:https://istio.io/latest/zh/

    istio是什么

    Istio带给你:

    • HTTP、gRPC、WebSocket和TCP流量的自动负载均衡。
    • 通过丰富的路由规则、重试、故障转移和故障注入对流量行为进行细粒度控制。
    • 支持访问控制、速率限制和配额的可拔插策略层和配置API。
    • 自动指标、日志和集群内所有流量的跟踪,包括集群入口和出口。
    • 通过集群中的服务之间的强身份断言来实现服务间的身份验证。

    通过在整个环境中部署一个特殊的sidecar代理(辅助容器),您可以将Istio支持添加到服务中(这给我留下了深刻的印象,如果您想做到这一点,请参阅后面的内容)。安装了sidecar代理之后,(微)服务之间的所有网络通信都通过这个代理。此外,所有的网络通信都是使用Istio的控制平面功能进行配置和管理的。

    Istio是 Service Mesh(服务网格) 。我认为的service mesh定义就是“它是一个专用的基础设施层,使得服务间的通信安全、高效和可靠”。

    通过kubectl可以很方便的把istio部署到k8s里,当然使用helm也是可以的,但有时helm版本和istio会有冲突,所以本文主要使用kubectl来进行部署

    istio简单的几个概念

    在Service Mesh中,我们需要了解Data Plane和Control Plane两个概念:

    1. Data Plane:作用是处理网格内服务间的通信,并完成服务发现、负载均衡、流量管理、健康检查等功能;
    2. Control Plane:作用是管理和配置智能代理用于路由流量,同时配置Mixers来应用策略、收集指标。

    Istio核心组件

    1. Envoy:Istio 使用 Envoy调解服务网格中所有服务的入站和出站流量。属于数据平面。
    2. Mixer:负责在服务网格上执行访问控制和使用策略,以及收集从Envoy和其他服务自动监控到的数据。
    3. Pilot:为 Envoy sidecar 提供服务发现功能,为智能路由(例如 A/B 测试、金丝雀部署等)和弹性(超时、重试、熔断器等)提供流量管理功能。属于控制平面。
    4. Citadel:提供访问控制和用户身份认证功能。

    Istio可视化管理组件

    1. Vistio:用于近乎实时地监控应用程序和集群之间的网络流量。
    2. Kiali:提供可视化服务网格拓扑、断路器和请求率等功能。Kiali还包括 Jaeger Tracing,可以提供开箱即用的分布式跟踪功能。
    3. jaeger:用于展示istio微服务调用链关系,以及微服务工作状态监测。注意,在生产环境中,应使用Elasticsearch或cassandra持久化存储jaeger数据。

    下载istio安装包

    curl -L https://git.io/getLatestIstio | sh -
    

    创建namespace

    kubectl create namespace istio-system
    

    安装它的CRD资源

    for i in install/kubernetes/helm/istio-init/files/crd*yaml; do kubectl apply -f $i; done
    

    显示结果

    kubectl get crds | grep 'istio.io' | wc -l
    

    部署核心组件

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

    这个过程需要消耗一些时间,它会先下载镜像,然后才能启动容器

    [root@i-pcwovafu istio-1.5.1]# kubectl -n istio-system get pods
    NAME                                      READY   STATUS              RESTARTS   AGE
    grafana-7797c87688-9nwd9                  0/1     ContainerCreating   0          11m
    istio-citadel-f5974cc7d-tqglf             0/1     ContainerCreating   0          11m
    istio-egressgateway-5757854ddd-x6cq9      0/1     Running             0          11m
    istio-galley-6799449b85-tnlpm             1/1     Running             0          11m
    istio-grafana-post-install-1.5.1-h7ph2    0/1     Completed           0          11m
    istio-ingressgateway-7dcf45496f-2cwcm     0/1     Running             0          11m
    istio-pilot-7897f5dc-j9jzr                0/2     ContainerCreating   0          11m
    istio-policy-5b579b8889-gs4j9             0/2     ContainerCreating   0          11m
    istio-security-post-install-1.5.1-xlx2n   0/1     Completed           0          11m
    istio-sidecar-injector-5d97f8cb99-rh22f   0/1     ContainerCreating   0          11m
    istio-telemetry-d79f68d7d-cnpn2           0/2     ContainerCreating   0          11m
    istio-tracing-797d4c8d48-fmrlh            1/1     Running             0          11m
    kiali-74fdc898b9-d5w5z                    0/1     ImagePullBackOff    0          11m
    prometheus-c8fdbd64f-fh7vs                0/1     ContainerCreating   0          11m
    

    需要等待这些pod启动之后,你的istio才算启动起来。

    istio核心组件说明

    1. grafana-* //监控数据可视化工具
    2. istio-citadel-* //证书管理
    3. istio-egressgateway-* //出口流量网关
    4. istio-galley-* //配置检查
    5. istio-ingressgateway-* //入口流量网关
    6. istio-pilot-* //Envoy 服务发现,外部化配置
    7. istio-policy-* //Mixer 混合器策略检查
    8. istio-sidecar-injector-* //边车注入
    9. istio-telemetry-* //Mixer混合器指标收集
    10. kiali-* //Service Mesh可视化工具
    11. prometheus-* //监控报警

    为指定namespace注入istio的sidecar功能

    # kubectl label namespace default istio-injection=enable
    

    禁止注入istio的sidecar功能

    # kubectl label namespace default istio-injection-
    

    查看istio的sidecar的信息

    kubectl get namespace -L istio-injection

  • 相关阅读:
    LeetCode 275. H-Index II
    LeetCode 274. H-Index
    LeetCode Gray Code
    LeetCode 260. Single Number III
    LeetCode Word Pattern
    LeetCode Nim Game
    LeetCode 128. Longest Consecutive Sequence
    LeetCode 208. Implement Trie (Prefix Tree)
    LeetCode 130. Surrounded Regions
    LeetCode 200. Number of Islands
  • 原文地址:https://www.cnblogs.com/xinfang520/p/13221158.html
Copyright © 2011-2022 走看看