Skip to content

Latest commit

 

History

History

0.installing

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

快速入门

前提

  • 启动 Docker For Mac,并开启 Kubernetes 功能;
  • 如果 Istio 相关组件在集群中无法正常运行,需要在 Docker 首选项的 Advanced 面板下增加 Docker 的 CPU 和内存限制;
  • (可选)提前拉取容器镜像,提升 Pod 启动速度:
# 核心组件
docker pull docker.io/istio/pilot
docker pull docker.io/istio/proxyv2
# 相关插件
docker pull docker.io/grafana/grafana
docker pull docker.io/jaegertracing/all-in-one
docker pull docker.io/prom/prometheus
docker pull docker.io/jimmidyson/configmap-reload
docker pull quay.io/kiali/kiali
# bookinfo 示例
docker pull docker.io/istio/examples-bookinfo-details-v1
docker pull docker.io/istio/examples-bookinfo-ratings-v1
docker pull docker.io/istio/examples-bookinfo-reviews-v1
docker pull docker.io/istio/examples-bookinfo-reviews-v2
docker pull docker.io/istio/examples-bookinfo-reviews-v3
docker pull docker.io/istio/examples-bookinfo-productpage-v1

最小步骤

一共分为 9 个步骤,如下所示:

# 第1步:安装 istioctl
brew install istioctl
# 第2步:切换至目标集群
kubectl config use-context docker-desktop
# 第3步:在目标集群中安装 istio
istioctl install --set profile=demo -y
# 第4步:自动注入 Envoy 边车代理
kubectl label namespace default istio-injection=enabled
# 第5步:获取示例代码
git clone git@github.com:istio/istio.git && cd istio
# 第6步:部署 Bookinfo 示例应用
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
# 第7步:把应用关联到 Istio 网关
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
# 第8步:安装 Kiali、Prometheus、Grafana、Jaeger 等插件
kubectl apply -f samples/addons
# 第9步:访问应用
curl http://127.0.0.1/productpage

⚠️ Apple chip 用户注意,需要 patch 下 istio-egressgateway 和 istio-ingressgateway 这两个 Deployment 资源,它们的默认节点亲和性只有 amd64,需要手动新增 arm64 这个值,否则 Pod 将一直处于 Pending 状态。详见

解决方案:

# 使用社区(非官方)构建的 arm64 镜像(https://github.com/resf/istio):
istioctl install --set hub=ghcr.io/resf/istio --set profile=demo -y
# 更新 istio-egressgateway
kubectl patch deployments.apps \
  istio-ingressgateway \
  --namespace istio-system \
  --type='json' \
  -p='[
  {"op": "replace", "path": "/spec/template/spec/affinity/nodeAffinity/preferredDuringSchedulingIgnoredDuringExecution/0/preference/matchExpressions/0/values", "value": [amd64,arm64]},
  {"op": "replace", "path": "/spec/template/spec/affinity/nodeAffinity/requiredDuringSchedulingIgnoredDuringExecution/nodeSelectorTerms/0/matchExpressions/0/values", "value": [amd64,arm64,ppc64le,s390x]}
  ]'
# 更新 istio-ingressgateway
kubectl patch deployments.apps \
  istio-egressgateway \
  --namespace istio-system \
  --type='json' \
  -p='[
  {"op": "replace", "path": "/spec/template/spec/affinity/nodeAffinity/preferredDuringSchedulingIgnoredDuringExecution/0/preference/matchExpressions/0/values", "value": [amd64,arm64]},
  {"op": "replace", "path": "/spec/template/spec/affinity/nodeAffinity/requiredDuringSchedulingIgnoredDuringExecution/nodeSelectorTerms/0/matchExpressions/0/values", "value": [amd64,arm64,ppc64le,s390x]}
  ]'

命令行自动补全

Zsh 用户:

echo "source <(istioctl completion zsh)
compdef _istioctl istioctl" >> ~/.zprofile

查看仪表板

打入流量:

while true; do curl http://127.0.0.1/productpage; done

访问 Kiali 仪表板:

istioctl dashboard kiali

清理 bookinfo

kubectl delete -f samples/bookinfo/platform/kube/bookinfo.yaml
kubectl delete -f samples/bookinfo/networking/bookinfo-gateway.yaml

Istio 的组件和插件暂时不要清理。后续实验需要接着用。

参考: