Istio学习笔记——在腾讯云TKE上安装

公司使用腾讯云及其托管的kubernetes(TKE),需要在TKE上安装Istio。

腾讯云TKE配置

在Istio的官方文档上,介绍对于某些云平台(比如阿里云,GKE)需要做特殊的配置。腾讯云并无特别说明,参照Customizable Install with Helm的步骤即可完成。

但是使用TKE创建Kubernetes集群的时候,有几点需要注意:

  1. 使用Kubernetes 1.12版本。我的实验是基于Istio 1.2.0的,按文档描述,这个版本只对Kubernetes 1.11, 1.12, 1.13做了兼容测试。
  2. 安装helm,这个直接在控制台即可完成,可省略翻墙步骤。
  3. 确认TKE集群内的可用资源,至少需要一台4核8GB的node。
  4. 安全组的设置(参考文档),
协议 端口 网段 是否允许 说明
TCP 30000 - 32768 0.0.0.0/0 允许 放通所有 IP 对30000 - 32768端口 TCP 访问
UDP 30000 - 32768 0.0.0.0/0 允许 放通所有 IP 对 30000 - 32768 端口 UDP 访问
All traffic ALL 10.0.0.0/8 允许 放通10.0.0.0/8内网网段的访问
All traffic ALL 172.16.0.0/12 允许 放通172.16.0.0/12内网网段的访问
All traffic ALL 192.168.0.0/16 允许 放通192.168.0.0/16内网网段的访问

如果集群有2台以上的node,并且对网络不熟悉,推荐先完全遵照以上表格配置。

  1. 30000 - 32768端口要对全网段开放。这个端口段是给NodePort使用的,而只要集群上有任意服务需要对外网开放(哪怕是放在LoadBalancer后面),就需要这么设置。原因是腾讯云的CLB在转发的时候不会修改request IP。

  2. 3个内网网段都需要开放,这是为了保证集群内的机器可以相互访问。这点没研究得太细,只观察到一个现象,我们公司的内网网段是10.0.0.0/8,但是安装istio的时候发现,istio-pilot访问istio-galley的时候,请求的源和目标IP均为172段,而且不是Cluster IP,访问4xxxx端口。

安装Istio

安装步骤,Customizable Install with Helm的描述已经足够清晰,按步骤执行即可。下面记录一下安装时候的思考。

安装方式

文档中提到两种安装方式:

  1. 使用helm template生成yaml,然后使用kubectl apply进行安装。
  2. 直接使用helm install安装和管理istio。

个人使用了第一种方式,原因在于对helm不太熟悉,当需要对istio的安装做调整的时候(比如创建内网Gateway),直接调整yaml比较方便。

安装选项

Istio的安装包默认带了几个安装选项(即install/kubernetes/helm/istio下的各种values文件),我选择了默认的values.yaml,同时做了微调,把默认的gateway controller和prometheus关闭了,只安装了Istio的几个核心组件。原因在于:

  1. 默认的gateway controller是为了测试目的设计的,可以对接grafana,prometheus等,而同时默认建出来的又是一个外网LoadBalancer,有安全隐患。
    另一方面,我们的使用习惯是为每一个环境(对应namespace)创建一套外网和内网的LoadBalancer,希望借此机会研究如何创建一个gateway controller,故没有使用默认选项。

  2. prometheus等工具,我们准备在另一个namespace(observability)安装一套生产级的部署,故没有使用默认选项。

确认安装完成

最终通过检查pod和svc的状态,确认istio安装完成。

kubectl get pod
kubectl get svc -n istio-system

你可能感兴趣的:(Istio学习笔记——在腾讯云TKE上安装)