本文作用是记录并分享我个人从0到bookinfo demo展示的全过程。
第零步
我是通过windows vm安装的一个centos7.3,分配2核,3G内存,自己安装好docker。
第一步
安装minikube,可以站好官网顺序进行安装配置,详情查看https://minikube.sigs.k8s.io/docs/start/
中间遇到的问题:
- curl获取包的时候,可能会出现下载不下来的情况,多次尝试即可。
- 进行minikube start时候遇到的问题
- 执行出现docker错误
- 先确认docker.service是否启动
- 执行的用户不能用root用户,需要创建自己的用户
- 某些docker镜像下载不下来
- 通过docker pull 先下载好
- 然后docker tag改名
- 然后docker save -o 包名保存,注意不用增加后缀,然后保存到xx/.minikube/cache/images下面
- 确保以上内容之后,执行以下命令
minikube start --image-mirror-country=cn --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --cache-images=true
- 执行出现docker错误
第二步
先下载准备好istio包,我的是1.9.0版本,然后根据文档进行执行。
- 将istio的/bin加入到环境变量中
- 执行istioctl install,这个过程中可能会出现多次错误,多次重试即可
istioctl install --set profile=demo --charts=manifests/ -y
- 继续执行
kubectl label namespace default istio-injection=enabled
- 部署bookinfo.yaml文件
- 运行下面代码,查看运行结果(可能比较慢,稍等一会儿),保证pods的相关状态都变成了ready 2/2,status Running,如果有异常,可以通过kubectl describe pod/对应名称进行查看原因,大概率是因为docker镜像没有下载下来,然后还是通过docker pull 手动下载试一下。
kubectl get service, pods
- 运行结果验证
kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>"
- 继续执行istio的网管部署
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
执行校验istioctl analyze
- 访问bookinfo demo,因为我用的是minikube方式部署,所以把这个方法写一下
export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}') export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}') export INGRESS_HOST=$(minikube ip) export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT echo "http://$GATEWAY_URL/productpage"
- 其他平台方式:
- 访问网址即可,因为我是自己的windows远程另一个windows下的vm中的centos,所以我做了个nodejs的映射,这样就可以访问到我的bookinfo了。
以上,就完成了本次istio bookinfo demo的部署,这才是红军长征的第一步。