第十一课 Kubernetes生产级实践-ServiceMesh代表作istio

本文深入探讨ServiceMesh代表Istio在Kubernetes中的实践,包括Istio的架构、核心功能、智能路由及遥测学习。通过部署bookinfo应用,展示Istio的故障排查、流量管理及分布式追踪能力。
摘要由CSDN通过智能技术生成

第十一课 Kubernetes生产级实践-ServiceMesh代表作istio

tags:

  • k8s
  • 慕课网

categories:

  • ServiceMesh
  • istio

第一节 ServiceMesh代表作

1.1 ServiceMesh介绍

  1. 什么是ServiceMesh ?
    • 服务网格
    • 是概念,不是产品
    • 解决网络层面的问题 服务发现 负载均衡 路由 流量控制 服务间的稳定行 监控
  2. 上面的问题其实都是一个问题即网络问题。大家开始琢磨,怎么把网络抽离出来,让他自己实现服务发现服务发现 负载均衡 路由 流量控制 实现熔断确保服务安全。让开发者感受不到这种东西。
  3. 于是Linked和Istio被提了出来。
  4. Linkerd 始于2016年的CNCF官方项目
    • 1.x基于节点(物理机、虚拟机)
    • 2.x基于kubernetes(源自Conduit )
  5. Istio是Google、IBM、Lyft发起的开源项目
    • 2017年推出,2018年7月发布1.0
    • 多平台支持
  6. Linkerd和对比Istio
    • 都是基于sidecar模式 这种模式下每个服务都会分配代理 代理将数据转发给目标的代理
    • 都分为数据层和控制层
    • Istio更受欢迎:https://github.com/istio/istio

1.2 lstio架构和原理

在这里插入图片描述

  1. 官网: https://istio.io/

  2. 中文官网:https://istio.io/zh

  3. 核心就是代理,一个pod一个网络代理。

  4. Istio的更加细致的架构图如下。
    在这里插入图片描述

  5. Istio解决的问题

    • 故障排查
      • 这个请求在哪失败的?A有调用B吗?
      • 为什么用户的请求/页面hung住了?
      • 为什么系统这么慢?哪个组件最慢?
    • 应用容错性
      • 客户端没有设置timeout导致应用卡住
      • 某些节点异常(如load高),导致应用响应变长
      • 没有重试机制,某个服务偶尔出现的异常导致用户页面错误
    • 应用升级发布
      • 新版本一次性升级,一旦出错影响范围很大
      • 无法进行A/B测试,根据用户属性访问不通版本
      • 服务版本的依赖关系处理不当导致的服务不可用
    • 系统安全
      • 服务都是HTTP的而非HTTPS
      • 没有流量限制,任何人都可以对服务发起攻击

1.3 部署面向生产的istio

  1. 因为Istio占用的资源比较大,所以之前安装的一些服务全给他干掉。
  2. 为了适应视屏中的版本选择1.1.7-liunx.tar.gz。https://github.com/istio/istio/releases/tag/1.1.7
tar -zvxf istio-1.1.7-linux.tar.gz 
kubectl create namespace istio-system
cd /istio-1.1.7/install/kubernetes
cp -r  helm/ ~
cd ~/helm/istio-init/
# 修改镜像地址registry.cn-hangzhou.aliyuncs.com/imooc-istio
vi values.yaml 
# helm tempate是把当前的项目的chart的k8s的配置输出出来
helm template . --name imooc-istio-init --namespace istio-system  > istio-init.yaml
kubectl apply -f istio-init.yaml
kubectl get pods -n istio-system
# 当上面完成了值后发现有很多crd 58个 官方文档上说
kubectl get crd
  1. istio核心组件的安装。官网建议我们再生产中使用default的配置文件。
cd helm/istio
# 看下default的配置文件 首先是依赖组件是否开启
# 因为我们选用的是准入控制的方案
istio_cni:
  enabled: false
# 修改镜像地址
hub: registry.cn-hangzhou.aliyuncs.com/imooc-istio
# 修改prometheus的hub registry.cn-hangzhou.aliyuncs.com/imooc-istio
grep image: istio.yaml
vi charts/prometheus/values.yaml
helm template . --name imooc-istio --namespace istio-system > istio.yaml
vi istio.yaml
grep image: istio.yaml
# 修改LoadBalancer为type: NodePort
# 部署一下 
kubectl apply -f istio.yaml
kubectl get pods -n istio-system
kubectl get pods -n istio-system -o wide | grep -v Completed
# 看下日志
journalctl -f
# 配置apiserver 二进制安装的需要手动配置一下
cd ~/kubernetes-ha-binary/target/pki/admin
rm -rf admin*.pem
cfssl gencert -ca=/etc/kubernetes/pki/ca.pem \
  -ca-key=/etc/kubernetes/pki/ca-key.pem \
  -config=../ca-config.json \
  -profile=kubernetes admin-csr.json | cfssljson -bare admin
cp admin*.pem /etc/kubernetes/pki

vi /etc/systemd/system/kube-apiserver.service
  --requestheader-client-ca-file=/etc/kubernetes/pki/ca.pem \
  --requestheader-allowed-names= \
  --requestheader-extra-headers-prefix=X-Remote-Extra- \
  --requestheader-group-headers=X-Remote-Group \
  --requestheader-username-headers=X-Remote-User \
  --proxy-client-cert-file=/etc/kubernetes/pki/admin.pem \
  --proxy-client-key-file=/etc/kubernetes/pki/admin-key.pem \
# 重启服务
systemctl daemon-reload && systemctl restart kube-apiserver.service
# metrics-server地址:https://github.com/kubernetes-sigs/metrics-server这里使用0.3.3版本
cd ~/deep-in-kubernetes/13-istio/metrics-server/1.8+ && kubectl apply -f .
kubectl get pods -n kube-system

# 主节点访问 服务+端口连不上 work节点可以连上
################ 这里被之前部署坑了,因为主节点没有proxy和calico。啥都没有嘛  #################
kubectl get svc -n kube-system
curl 10.254.248.89:443
# 主节点部署
sh download-images.sh
# 到任何一个节点的/opt/kubernetes/bin
scp * root@m1:/opt/kubernetes/bin
scp * root@m2:/opt/kubernetes/bin
# 到node节点上拿kubelet-bootstrap.kubeconfig 到主节点上
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值