非缺省域名下 Istio 的使用
Kubernetes 缺省的域名为 cluster.local
,好死不死的,istio 的缺省安装也沿用了这一设定,
并且文档中并没有明确指出这一假设。Istio 中使用了大量的 FQDN 进行服务的甄别,域名不一致这样
的问题可以说是后患无穷。经过 101 号 issue 的讨论,得知 proxy 和 pilot 组件提供了域名的设置功能,大致用法如下:
Pilot
kubectl edit deploy istio-pilot -n istio-system
或者编辑官方的 istio.yaml
,查找
docker.io/istio/pilot:0.2.9
的容器,并在 args 一节中加入如下的两行:
- --domain
- cloud.ctrm
Proxy
这部分略讨厌,因为每个业务 Pod 中都会有 SideCar 加载,因此只能逐个修改,方法同样有两个,
一个是使用 kubectl edit deploy [workload-deployment]
的方式,另外一个就是,保存
istioctl kube-inject -f [workload.yaml]
输出的文本。同样在
docker.io/istio/proxy_debug:0.2.9
所在容器的 args 一节中加入下面的参数:
- --domain
- cloud.ctrm
这些 Deployment 修改之后,会进行更新,接下来 Pilot 和 Mixer 就能正确的识别和处理集群中的服务了。