zoukankan      html  css  js  c++  java
  • Istio读书笔记-03-安装

    《Istio实战指南》 by 马若飞 2019年9月第1版

    书中的 Istio 为 1.1版

    ---

    听说 Istio的官网是 https://istio.io ,只是还没能成功访问过。

    后来发现了Istio中文社区:https://istio.cn/ ,其下还有 官方文档镜像 http://docs.istio.cn/

    Github地址:https://github.com/istio/istio

    索引

    本地安装

    云平台安装

    安装Istio,本以为只是安装Istio,结果,还需要安装(准备工作):

    1. GO
    2. Docker
    3. 搭建Kubernetes平台

    Kubernetes是Istio的 首推部署平台。

    复杂的依赖关系》使用Helm安装

    Helm:K8S下的包管理工具。

    英文:heml——n.  舵,舵柄; 掌舵,掌管; (国家,企业等的)机要部门,领; 头盔;

    除了在自己的计算机安装Istio,一些云平台也提供了K8S服务,比如:

    1. Amazon AWS的EKS
    2. Google Cloud的GKE
    3. 腾讯云的CIS
    4. 阿里云的Kubernetes容器服务

    2、4 内置了Istio组件,可以使安装集成工作更简单。

    本地安装

    (书中 第3章)

    安装GO

    Istio是使用GO语言实现的

    Linux安装

    golang官网:https://golang.org/ ,访问不了

    golang中文:https://golang.google.cn/

    2021-10-05最新版本1.17.1

    下载源码、解压;

    Ubuntu中:sudo apt-get install golang-go

    PATH环境变量,$HOME/.bash_profile 或 /etc/profile

    GOPATH环境变量:$HOME/go

    验证:go version

    安装Docker

    容器和镜像的相关操作都需要Docker支持

    最新的Docker(什么版本?)桌面版已经集成了K8S环境》方便进行本地集群环境的搭建

    Ubuntu安装:sudo apt-get install docker-ce 安装的是最新版本吗?

    CentOS安装:sudo yum install docker-ce 安装的是最新版本吗?

    验证:docker version

    搭建Kubernetes平台

    Istio被设计为支持多平台运行,但它目前只适用于K8S环境。

    限制:完整的K8S环境》要求高》计算机配置不高的话,无法启动或正常运行一个集群

    两种简单方法在 个人计算机 上启动一个 极简K8S集群:1)Docker桌面版自带的K8S环境,2)Minikube。适合本地开发。

    Istio要求 K8S版本 1.9及以上

    最新K8S:Latest Release: 1.22.2 (released: 2021-09-15)

    安装:

    命令行工具:Linux》kubectl;Mac》使用Homebrew安装。

    启用Docker桌面版中的K8S:Docker 17.02的Edge版,2018年7月,Docker 18.06的稳定版提供K8S集成。

    Docker图标》菜单-Kubernetes》Kubernetes is running;

    查看K8S节点状况:kubectl get nodes

    安装Minikube

    推荐。更成熟和统一的集群操作方式。Linux系统。

    Minikube使用Docker管理K8S虚拟机》虚拟机相关驱动》建议使用VirtualBox。

    注意,由于网络环境问题,可能无法下载,可以选择我国大陆的镜像地址(是什么?

    安装好后,启动一个K8S集群:minikube start

    查看启动情况:minikube status

    查看K8S运行状况

    K8S的可视化仪表板(Dashboard)》对集群进行监控和管理

    Minikube方式,启动仪表板:minikube dashboard

    Docker桌面版:复杂一些,略

    查看仪表板是否已运行:kubectl get pods  --namespace kube-system

    访问链接:好长!略,,开头——http://localhost:8001...

    K8S集群环境构建完成,准备工作结束。

    安装Istio

    Istio每个组件都是K8S集群中的Deployment,并以Pod的形式运行。

    Helm安装

    下载安装包:curl -L  https://git.io/getLatestIstio | sh -

    注,浏览器中 git.io 访问失败

    安装包内容:bin, install, samples, Istio.VERSION

    istioctl命令 添加到 PATH:export PATH=$PWD/bin:$PATH

    安装Helm

    Istio官方推荐使用Helm安装:定制的方式灵活配置安装选项

    Helm:客户端Helm、服务端Tiller。

    为简单,只安装客户端。

    curl安装 略

    检查:helm version

    使用Helm安装Istio

    Istio的CRD(K8S的CRD,Custom Resource Definition),K8S API的扩展方法。

    CRD初始化、注册、对象,Istio的初始化工作

    Istio初始化了大约50个CRD,4大类:

    *.authentication.Istio.io

    *.config.Istio.io

    *.networking.Istio.io

    *.rbac.Istio.io

    安装这些CRD:kubectl apply -f .../crds.yaml

    Helm两种安装Istio的方式:helm template, helm install(需要服务端Tiller)。

    Istio的Helm chart安装目录结构

    --set key=value:自定义安装选项,附录A

    helm template:

    生成部署的清单文件——非常长

    Istio-system命令空间

    创建命名空间:kubectl create namespace Istio-system

    查看Pod的状态:kubectl get pods -n Istio-system

    helm install:

    不用生成安装清单,但需要 服务端Tiller支持。

    Tiller安装步骤繁琐,略。

    确认安装结果

    $ kubectl get svc -n Istio-system

    $ kubectl get pods -n Istio-system

    问题处理

    1)Minikube虚拟机驱动

    minikube start --vm-driver=none

    2)Pilot启动失败

    内存不够?默认需要2GB!

    至少分配8GB内存!

    调小内容需求:helm参数 --set pilot-resources.requests.memory="512Mi"

    3)镜像获取错误

    ImagePullBackOff这样的信息

    我国大陆网络环境问题倒是无法下载镜像,需要搜索可用镜像

    云平台安装

    (书中 第9章)

    理论上,任何云平台的K8S产品都可以部署Istio,只要导入Istio的CRD,并使用官方提供的Helm进行安装即可

    需要花钱的

    在Google Cloud GKE(Google Kubernetes Engine)上启用Istio

    内置了Istio

    注册Google账号(需要绑定信用卡)

    下载Cloud SDK

    安装gcloud命令

    创建Istio集群:至少4个节点的集群

    图形化界面安装、验证安装

    ……

    使用阿里云Kubernetes容器服务

    可视化方式搭建K8S集群

    提供Istio作为组件

    阿里云账号》支付宝账号

    容器服务Kubernetes版,,当前为:服务网格 ASM

    创建集群、添加Istio组件,DONE

    都是图形化安装,方便快捷,就是,费钱(阿里云这个 是不是有 试用版呢?)。

    其它(书中 第9章):

    高级流量控制

    故障注入:延迟故障——fault标记,中断故障——abort关键字;

    流量镜像;

    调试和故障排查

    通过日志和内置的命令来调试和排查问题

    Istio的日志框架

    范围:adapters, api, attributes, default, grpcAdapter

    基本:none, error, warning, info, debug

    通过ControlZ来进行日志设置:Istio ControlZ

    调试(istioctl):proxy-status命令(网格状态),proxy-config命令(代理配置),使用GDB

    故障排查:

    Istio对Pod和服务的要求(端口命名、Pod端口、关联服务、Deployment标签、Applicatin UID、NET_ADMIN功能)

    请求被Envoy拒绝:检查Envoy日志

    设置目标规则后出现503:DestinationRule,服务的TLS冲突

    Headless TCP服务连接丢失:如果部署了Istio-citadel,则Envoy会每隔15min重启一次,来完成证书的刷新任务——造成长连接以及TCP流中断。禁止TLS。(哇~)

    Envoy崩溃:高并发大流量下Envoy有可能崩溃。ulimit -a检查。提高ulimit上限(ulimit -n 16384)。

    Envoy无法连接HTTP/1.0服务:Nginx、proxy_http_version为1.1

    ---

  • 相关阅读:
    高级(线性)素数筛
    Dijkstra(迪杰斯特拉)算法
    简单素数筛
    【解题报告】 POJ1958 奇怪的汉诺塔(Strange Tower of Hanoi)
    4 jQuery Chatting Plugins | jQuery UI Chatbox Plugin Examples Like Facebook, Gmail
    Web User Control Collection data is not storing
    How to turn on IE9 Compatibility View programmatically in Javascript
    从Javascrip 脚本中执行.exe 文件
    HtmlEditorExtender Ajax
    GRIDVIEW模板中查找控件的方式JAVASCRIPT
  • 原文地址:https://www.cnblogs.com/luo630/p/15368563.html
Copyright © 2011-2022 走看看