zoukankan      html  css  js  c++  java
  • k8s~直接部署istio

    通过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
    

    今天主要先介绍到这边,下次再讲一下具体的istio的组件的使用。

  • 相关阅读:
    动态规划
    Python第二天学习
    Python第一天学习---基础语法
    java易错知识点
    C语言---指针复习
    排序汇总
    课程设计---创建族谱管理系统
    Vue第五篇 Vue的生命周期
    Vue第四篇 Vue路由系统
    Vue第三篇 Vue组件
  • 原文地址:https://www.cnblogs.com/lori/p/12658169.html
Copyright © 2011-2022 走看看