赞
踩
咱们在k8s集群中的服务,去访问外部服务会有超时时间,这时候处理思路就是创建一个虚拟服务,指向这个外部服务地址,也就是变相的将外部服务放在istio管理下,主要应对超时问题。
步骤概括:
1、建serviceentries.networking.istio.io,
2、然后建一个virtualservices.networking.istio.io,
3、属于将外部服务纳入到istio管理,然后调大超时时间。
具体实现步骤如下:
1、创建一个 ServiceEntry.yaml 文件,作为外部服务的服务入口。内容如下:
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: TestService
spec:
hosts:
- TestService.xxx.com
endpoints:
- address: xx.xx.xx.xx
ports:
- number: 80
name: http
protocol: HTTP
resolution: DNS
location: MESH_EXTERNAL
创建完文件,给他 kubectl apply -f ServiceEntry.yaml 执行一下,让他在集群中生成我们自定义的这个服务入口。
2、创建 VirtualService.yaml 文件,作为外部服务的虚拟服务。内容如下:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: TestService
spec:
hosts:
- TestService.xxx.com
http:
- timeout: 600s
route:
- destination:
host: TestService.xxx.com
weight: 100"
上边配置了超时时间是600s,各位可以根据需要进行配置。
然后依旧给他 kubectl apply -f VirtualService.yaml 执行一下,让他在集群中生成我们自定义的这个虚拟服务。
注意:host不能设置为ip,访问外部服务只能通过host,否则设置超时时间无效。"
此时内部服务去访问外部服务,不出意外的话是访问不通的。因为ServiceEntry中的host,有着在pod中无法解析的问题。下面开始处理这个问题。
3、修改coredns的configmap。
命令:kubectl edit cm -n kube-system coredns
Corefile: | .:53 { errors health ready kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure upstream /etc/resolv.conf fallthrough in-addr.arpa ip6.arpa } hosts { xx.xx.xx.xx xx.xxx.com yy.yy.yy.yy yy.xxx.com 此处加上自己的服务的ip和域名,别的全不用动! fallthrough } prometheus :9153 forward . /etc/resolv.conf { prefer_udp } cache 30 loop reload loadbalance }
3(续)、补充一个快速方法,不推荐使用。
在deployment中添加对应的配置(此处有问题,每个服务要访问都需要加,因此不推荐使用这个方案,尽量使用上边的正规方案)。
在deployment中添加配置:
hostAliases:
- hostnames:
- xxx.xxx.com
ip: xx.xx.xx.xx
4、若是集群同时使用了nodelocaldns(旧k8s,现在的k8s和istio都没这个问题),则继续修改:
先查询 kubectl get service -n kube-system -o wide 中coredns的地址,然后
在查询kubectl get cm -n kube-system nodelocaldns -o yaml,看看forward . 后边是不是全为coredns中的地址,如果不是,则继续:
命令:kubectl edit cm -n kube-system nodelocaldns
.:53 {
errors
cache 30
reload
loop
bind 169.254.25.10
forward . 10.233.0.3 { #forward . 后边全部改为此为codedns服务的ip()
force_tcp
}
prometheus :9253
}
注意:在代码中访问时,请访问域名。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。