【问题域】
任务:搭建一个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
一站式解决,步骤最少,自带免费服务器资源,选为首选方案
二、实施
到Istio官网找到Quick Start with Google Kubernetes Engine作为整个实施过程的指南资料。
到Google Cloud Platform,注册账号,提交信用卡信息,获取$300的一年免费资源。
虽然申请成功,但付款设置里的结算信用卡账号被冻结,需要向谷歌在线申诉,申诉填写的内容很简单,但需要上传身份证/护照照片和信用卡正面照片(卡号用手指遮挡只露出4位尾号即可),一天内得到邮件回复信用卡账号解冻。(信用卡账号冻结的情况网上也有反映,我申请免费资源时收到了$1的信用卡支付失败短信,我怀疑跟我使用海外IP使用信用卡有关,抑或是银行针对性的封锁。)
到Google Container Engine API打开对此API的使用(使用获赠的免费资源)。
到Cloud Console,找到Compute Engine default service account(账号格式为projectNumber-compute@developer.gserviceaccount.com),对此账号在缺省的Editor角色外添加Kubernetes Engine Admin角色。
到Istio GKE Deployment Manager安装Kubernetes + Istio + BookInfo,按照官网的说法,直接使用缺省设置Deploy即可。
但直接使用缺省设置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)
安装过程中还遇到了部署waiter超时的错误,最终安装成功的版本的设置为:在步骤7的设置以外,把缺省设置中除*Add BookInfo Sample Application*以外的其它可选模块都不选了,但也许该错误与选择的模块无关,即使都选也可以成功(未经验证)。
在Google Kubernetes Engine Console 的上部标题栏中,点击*Activate Google Cloud Shell*图标启动gcloud的在线控制台。图标位置参见
。在gcloud控制台中,执行以下命令:
gcloud container clusters list gcloud container clusters get-credentials istio-cluster --zone=us-central1-a在gcloud控制台中,执行以下命令:
kubectl get deployments,ing在命令执行后输出的信息中,找到ADDRESS和PORTS,此即为公网上访问BookInfo Sample的IP和端口。
访问http://ADDRESS:PORTS/productpage即可看到BookInfo Sample的页面,其中的*ADDRESS:PORTS*替换为上一步中得到的信息。
使用完成后,可在Google Cloud的部署管理器中删除所有已部署的环境。
致谢
感谢王老师! 于这凋敝,犬儒,浮虚的园子里, 久违了,真战士!