最近研究service mesh,不可避免需要学习istio。
istio架构本身不算复杂,今天就按照官网部署。部署之前需要自行安装好k8s,最好是1.21版本以上的新版本。k8s部署方法本文不再赘述
-
Istio安装包下载
curl -L https://istio.io/downloadIstio | sh -
这个命令执行官方提供的istio下载安装脚本。该脚本会自动帮你匹配合适的linux版本内核。不过前提是你的部署环境能访问github。要不然会下载失败。
下载完成后该脚本还会自行帮你解压缩下载的Istio文件并在当前目录建立Istio目录。把Istio目录下的bin目录加入PATH环境变量。
export PATH=$ISTIO_PATH/bin:$PATH
添加成功并重新加载PATH后,可以执行istioctl命令 -
Istio安装
非常简单,就一步:
istioctl install --set profile=demo -y
不出意外一分钟就装好了。
但是:不出意外一定会出意外的
这里记录下遇到的几个问题
jsonPath的语法:
https://kubernetes.io/zh/docs/reference/kubectl/jsonpath/
-
k8s 1.21必须开启ipv6,否则kube apiserver有问题
开启方法:
在/etc/sysctl.conf内加入下面语句
net.ipv6.conf.all.disable_ipv6=0
然后执行sysctl -p即可 -
单节点k8s集群必须取消taint
否则istio服务会一直处于pending状态无法执行
kubectl taint nodes new-k8s node-role.kubernetes.io/master:NoSchedule-
加粗标黑部分需要根据自己环境自行修改
可以通过kubectl describe nodes 查询