快速搭建Istio环境

【问题域】

  • 任务:搭建一个Istio的Bookinfo Sample

  • 约束:搭建成果要求公网可访问可确认

  • 资源:三个晚上的时间,一个Vultr账号,一台MacBook Pro

【解决域】

一、选型

  • 基于Kubernetes以外的平台

和Kubernetes平台比各方面未见优势,不考虑

  • 基于在MacBook Pro上搭建的Minikube

公开到公网还需要花生壳等的支持,硬件有限时间更有限,或许可行,先不考虑

  • 基于在Vultr上Creating Kubernetes from Scratch(2-3节点)

此方案最能匹配进行该任务的初衷(学习Kubernetes搭建),但步骤较多时间不够,NG

  • 基于在Vultr上使用kubeadm搭建的Kubernetes集群

步骤不多,时间上或许可行,可作为备选方案

  • 在Google Cloud Platform 上搭建Kubernetes + Istio

一站式解决,步骤最少,自带免费服务器资源,选为首选方案

二、实施

  1. 到Istio官网找到Quick Start with Google Kubernetes Engine作为整个实施过程的指南资料。

  2. Google Cloud Platform,注册账号,提交信用卡信息,获取$300的一年免费资源。

  3. 虽然申请成功,但付款设置里的结算信用卡账号被冻结,需要向谷歌在线申诉,申诉填写的内容很简单,但需要上传身份证/护照照片和信用卡正面照片(卡号用手指遮挡只露出4位尾号即可),一天内得到邮件回复信用卡账号解冻。(信用卡账号冻结的情况网上也有反映,我申请免费资源时收到了$1的信用卡支付失败短信,我怀疑跟我使用海外IP使用信用卡有关,抑或是银行针对性的封锁。)

  4. Google Container Engine API打开对此API的使用(使用获赠的免费资源)。

  5. Cloud Console,找到Compute Engine default service account(账号格式为projectNumber-compute@developer.gserviceaccount.com),对此账号在缺省的Editor角色外添加Kubernetes Engine Admin角色。

  6. Istio GKE Deployment Manager安装Kubernetes + Istio + BookInfo,按照官网的说法,直接使用缺省设置Deploy即可。

  7. 但直接使用缺省设置Deploy,安装过程中会报*Quota ‘CPUS’ exceeded. Limit: 8.0*的错。这是因为免费资源在一个Zone最多只提供8 cpus的资源,安装过程中不够用(安装过程中要使用比最终占用的更多的cpus)。解决办法是把*Node Machine Type*从缺省的2 vCPU改小为1 vCPU。(因为官网说使用GKE搭BookInfo至少要4个nodes,所以我们不改变缺省的Number of GKE nodes to run on = 4)

  8. 安装过程中还遇到了部署waiter超时的错误,最终安装成功的版本的设置为:在步骤7的设置以外,把缺省设置中除*Add BookInfo Sample Application*以外的其它可选模块都不选了,但也许该错误与选择的模块无关,即使都选也可以成功(未经验证)。

  9. Google Kubernetes Engine Console 的上部标题栏中,点击*Activate Google Cloud Shell*图标启动gcloud的在线控制台。图标位置参见示意图

  10. 在gcloud控制台中,执行以下命令:

    gcloud container clusters list
    gcloud container clusters get-credentials istio-cluster --zone=us-central1-a
    
  11. 在gcloud控制台中,执行以下命令:

    kubectl get deployments,ing
    

    在命令执行后输出的信息中,找到ADDRESS和PORTS,此即为公网上访问BookInfo Sample的IP和端口。

  12. 访问http://ADDRESS:PORTS/productpage即可看到BookInfo Sample的页面,其中的*ADDRESS:PORTS*替换为上一步中得到的信息。

  13. 使用完成后,可在Google Cloud的部署管理器中删除所有已部署的环境。

致谢

感谢王老师! 于这凋敝,犬儒,浮虚的园子里, 久违了,真战士!