Z.S.K.'s Records

Istio学习(在Kubernetes集群中安装istio)

Istio做为ServiceMesh的事实标准, 越来越被广泛地使用, 特别是work on Kubernetes之后, 再加持Istio来做更加细度地诸如流量管理、访问控制、灰度发布等方面的事情,不要更爽.

Download

Istio的部署还是非常简单的, 先下载istioctl二进制文件进行安装, 参考这里

1
2
3
4
5
curl -L https://istio.io/downloadIstio | sh -
cd istio-1.4.2
export PATH=$PWD/bin:$PATH
#如果没有loadBalance需要修改发下文件:
#install/kubernetes/istio-demo.yaml中istio-ingressgateway的service从loadBalance修改成NodePort

默认Profile安装

istio内置几种默认的Profile, 某种Profile下有默认的manifest文件, 定义了需要安装的组件, 在安装的时候可以指定Profile进行安装, 各Profile如下, 详细的信息可查看这里

default demo minimal sds remote
Core components
istio-citadel X X X X
istio-egressgateway X
istio-galley X X X
istio-ingressgateway X X X
istio-nodeagent X
istio-pilot X X X X
istio-policy X X X
istio-sidecar-injector X X X X
istio-telemetry X X X
Addons
grafana X
istio-tracing X
kiali X
prometheus X X X

注: 显示X的为在该Profile模式下需要安装的组件.

每种Profile说明如下:

  • default:根据IstioControlPlaneAPI的默认设置启用组件 (建议用于生产部署)。您可以通过运行命令显示默认设置istioctl profile dump
  • demo:旨在展示Istio功能且资源需求适中的配置。适合运行Bookinfo应用程序和相关任务。这是随快速入门说明一起安装的配置,但是 如果您想探索更高级的任务,则可以稍后自定义配置以启用其他功能此配置文件可实现高级别的跟踪和访问日志记录,因此不适合进行性能测试。
  • minimal:使用Istio的流量管理功能所需的最少组件集。
  • sds:类似于默认配置文件,但也启用了Istio的SDS(秘密发现服务)。此配置文件具有默认情况下启用的其他身份验证功能(严格双向TLS)。
  • 远程:用于配置的远程簇 的多组啮合共享控制平面配置。

因为demo涉及到的组件最符合目前的需求, 使用以下命令生成manifest文件并按该manifest部署.

1
istioctl manifest apply --set profile=demo

在Kubernetes中查看生成的CRD的对象

kubectl get CustomResourceDefinition

生成的pod信息如下

kubectl get pod -n istio-system

以上pod的功能:

  • grafana-* //监控数据可视化工具
  • istio-citadel-* //证书管理
  • istio-egressgateway-* //出口流量网关
  • istio-galley-* //配置检查
  • istio-ingressgateway-* //入口流量网关
  • istio-pilot-* //Envoy 服务发现,外部化配置
  • istio-policy-* //Mixer 混合器策略检查
  • istio-sidecar-injector-* //边车注入
  • istio-telemetry-* //Mixer混合器指标收集
  • Istio-tracing-* // 全链路跟踪工具
  • kiali-* //Service Mesh可视化工具
  • prometheus-* //监控报警

自定义安装

当默认的Profile无法满足业务需求的时候, 比如,目前系统中存在了Prometheus, 不想在istio再次安装,同时又需要Tracingkiali那上面的所有profile都无法满足, istio也提供了可自定义安装,使用--set开关

比如可使用以下命令实现以下的需求

istioctl manifest apply --set profile=demo --set telemetry.prometheus.enabled=false --set telemetry.prometheusOperator.enabled=false

这样就从demo中把原本会安装的Prometheus修改为不安装

组件的对应关系如下:

Feature Components
base CRDs
trafficManagement pilot
policy policy
telemetry telemetry
security citadel, nodeAgent, certManager
configManagement galley
gateways ingressGateway, egressGateway
autoInjection injector
coreDNS coreDNS
thirdParty cni
Feature Components
telemetry prometheus, prometheusOperator, grafana, kiali, tracing

至此, Istio已经在Kubernetes中安装完成.

参考文章:

转载请注明出处https://izsk.me

Z.S.K. wechat
Scan Me To Read on Phone
I know you won't do this,but what if you did?