使用 Google Kubernetes Engine 快速开始
快速开始操作指南,使用 Google Cloud Deployment Manager,在 Google Kubernetes Engine(GKE)上安装和运行 Istio。
这个快速开始创建了一个新的 GKE zonal cluster,安装 Istio 并部署 BookInfo 样例应用。在 Kubernates 创建 Istio 指南 的基础上,使用 Deployment Manager 为 Kubernetes Engine
提供一个自动的细化步骤。
前置条件
本样例需要一个有效的,并且打开了账单功能的 Google Cloud Platform 项目。如果你不是一个已经存在的 GCP 用户,你可以注册登记成为一个300美金的试用账户。
确认为你项目打开了 Google Kubernetes Engine API(并能通过导航条中的 “APIs & Services” -> “Dashboard” 找到)。如果你不能看到 “API enable”,那么你可能需要点击 “Enable this API” 按钮来开启 API。
你必须安装和配置 gcloud command line tool 并包含
kubectl
组件(gcloud components install kubectl
)。如果你不想在你的电脑上安装gcloud
客户端,你可以通过 Google Cloud Shell 使用gcloud
来运行同样的任务。你必须设置你的默认计算服务账户包括以下方面:
roles/container.admin
(Kubernetes Engine Admin)Editor
(默认)
为了设置以上内容,在 Cloud Console 上导航到 IAM 章节,默认从下文的 :projectNumber-compute@developer.gserviceaccount.com
: 找到默认的 GCE/GKE 服务账户,应该拥有 Editor 的角色。然后在这个账户的 Roles 下拉列表中,找到 Kubernetes Engine 组,选择 Kubernetes Engine Admin 角色。你账户中的 Roles 列表将会变成 Multiple。
GKE-IAM Permissions
安装
启动 Deployment Manager
- 一旦你的账户和项目启用,点击下文的链接,打开 Deployment Manager。
就像其他教程中的“如何访问已安装的功能”一样,我们也建议保留默认设置。工具会默认创建一个特殊设置的 GKE alpha cluster,然后安装在 Istio control plane,BookInfo 样例应用,Grafana with Prometheus,ServiceGraph 和 Zipkin。你将会找到更多关于怎样访问所有这些如下功能。脚本将只在 default
的命名空间中打开 istio auto-injection。
- 点击部署:
GKE-Istio Launcher
等 Istio 完全部署好。注意这会消耗5分钟左右。
引导 gcloud
部署完成后,在你安装好的 gcloud
的工作站里,完成以下内容:
1.为你刚刚创建的 cluster 引导 kubectl,并确认 cluster 在运行中,并且 istio 是打开状态。
gcloud container clusters list
NAME ZONE MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS
istio-cluster us-central1-a 1.7.8-gke.0 ALPHA (29 days left) 130.211.216.64 n1-standard-2 1.7.8-gke.0 3 RUNNING
在这里,这个 cluster 的名字是 istio-cluster
2.现在为 cluster 获取资格
gcloud container clusters get-credentials istio-cluster --zone=us-central1-a
验证安装
验证 Istio 已经安装在它自己的命名空间中
kubectl get deployments,ing -n istio-system
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deploy/grafana 1 1 1 1 3m
deploy/istio-ca 1 1 1 1 3m
deploy/istio-ingress 1 1 1 1 3m
deploy/istio-initializer 1 1 1 1 3m
deploy/istio-mixer 1 1 1 1 3m
deploy/istio-pilot 1 1 1 1 3m
deploy/prometheus 1 1 1 1 3m
deploy/servicegraph 1 1 1 1 3m
deploy/zipkin 1 1 1 1 3m
现在确认 BookInfo 样例应用也已经安装好:
kubectl get deployments,ing
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deploy/details-v1 1 1 1 1 3m
deploy/productpage-v1 1 1 1 1 3m
deploy/ratings-v1 1 1 1 1 3m
deploy/reviews-v1 1 1 1 1 3m
deploy/reviews-v2 1 1 1 1 3m
deploy/reviews-v3 1 1 1 1 3m
NAME HOSTS ADDRESS PORTS AGE
ing/gateway * 35.202.120.89 80 3m
记下已经给 BookInfo product page 指定好的 IP 和 Port。(例子中是 35.202.120.89:80
)
你也可以在 Cloud Console 中的 Kubernetes Engine -> Workloads
章节看到安装:
GKE-Workloads
访问 BookInfo 样例
1.为 BookInfo 的外网 IP 创建一个环境变量:
kubectl get ingress -o wide
export GATEWAY_URL=35.202.120.89
2.验证你可以访问 BookInfo http://${GATEWAY_URL}/productpage
:
BookInfo
3.现在给它发送一些信息:
for i in {1..100}; do curl -o /dev/null -s -w "%{http_code}\n" http://${GATEWAY_URL}/productpage; done
验证已经安装的 Istio 插件
当你验证了 Istio control plane 和样例应用正在工作后,尝试访问已经安装好的 Istio 插件。
如果你使用 Cloud Shell 而不是已经安装好的 gcloud
客户端,你使用 Web Preview 功能将包转发和代理。比如,从 Cloud Shell 访问 Grafana,改变 kubectl 端口映射从 3000:3000 到 8080:3000。你可以通过 Web Preview 代理在 8080 到 8084 这个范围里,同时预览其他4个控制台。
Grafana
建立一个 Grafana 通道:
kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=grafana -o jsonpath='{.items[0].metadata.name}') 3000:3000 &
然后
http://localhost:3000/dashboard/db/istio-dashboard
你应该看到一些关于你早期发送的请求统计信息。
Grafana
想通过 Grafana 看到更多细节,点击 About the Grafana Add-on。
Prometheus
Prometheus 与 Grafana 一起安装好。你可以使用控制台看到如下的 Istio 和 应用矩阵:
kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=prometheus -o jsonpath='{.items[0].metadata.name}') 9090:9090 &
看控制台如下:
http://localhost:9090/graph
Prometheus
更多细节,点击 About the Prometheus Add-on。
ServiceGraph
建立一个 ServiceGraph 通道:
kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=servicegraph -o jsonpath='{.items[0].metadata.name}') 8088:8088 &
你应该看到 BookInfo 服务拓扑如下
http://localhost:8088/dotviz
ServiceGraph
更多细节,点击 About the ServiceGraph Add-on。
追踪
建立一个 Zipkin 通道:
kubectl port-forward -n istio-system $(kubectl get pod -n istio-system -l app=zipkin -o jsonpath='{.items[0].metadata.name}') 9411:9411 &
你能看到早期的追踪统计:
http://localhost:9411
Zipkin
更多追踪细节,点击 Understanding what happened。
下一步
你可以通过 指南 里的任一指导,更进一步探索 BookInfo 应用和 Istio 功能性。然而,你需要安装 istioctl
来与 Istio 进行交互。你可以在我们的工作站或者 Cloud Shell 来直接 安装 。
卸载
在 Cloud Console https://console.cloud.google.com/deployments 导航到 Deployments 章节
选择部署并点击 删除.
Deployment Manager 将会删除所有已经部署的 GKE artifacts - 然而,元素例如 Ingress 和 LoadBalancers 将会保留。你可以通过 cloud console 的 Network Services -> LoadBalancers 来删除这些构件。