目录
1.3、初始方案演示2:K8S中POD与consul集群单向通
1、K8S 和Consul部署方案
1.1、部署方式
刚开始K8s 集群 和consul 集群部署是分开的 :
考虑到K8S网络问题,Consul实际部署方式应该是这样:
最好将consul master 节点和k8s master 节点都部署到同样的宿主机上。
也可以将consul部署到K8S集群里面,这种方式比较难部署
1.2、初始方案演示1:K8S 网络内部是双向通
POD和各个K8S节点以及K8S节点和各个POD之间双向都是通的。
任意K8S 节点 ping 任意POD是通的:
[root@shakube01-in ~]# ping 10.244.7.145
PING 10.244.7.145 (10.244.7.145) 56(84) bytes of data.
64 bytes from 10.244.7.145: icmp_seq=1 ttl=63 time=1.10 ms
64 bytes from 10.244.7.145: icmp_seq=2 ttl=63 time=0.824 ms
64 bytes from 10.244.7.145: icmp_seq=3 ttl=63 time=0.762 ms
[1]+ Stopped ping 10.244.7.145
[root@shakube01-in ~]#
任意POD ping 任意K8S 节点是通的:
[root@shakube01-in ~]# kubectl exec -it plan-795b679b64-2s9mz -n lenovo /bin/bash
root@plan-795b679b64-2s9mz:/opt/service/lenovo_plan# ping 10.0.10.141
PING 10.0.10.141 (10.0.10.141) 56(84) bytes of data.
64 bytes from 10.0.10.141: icmp_seq=1 ttl=63 time=1.35 ms
64 bytes from 10.0.10.141: icmp_seq=2 ttl=63 time=0.753 ms
64 bytes from 10.0.10.141: icmp_seq=3 ttl=63 time=0.626 ms
64 bytes from 10.0.10.141: icmp_seq=4 ttl=63 time=0.631 ms
64 bytes from 10.0.10.141: icmp_seq=5 ttl=63 time=0.646 ms
1.3、初始方案演示2:K8S中POD与consul集群单向通
K8S任意 node 节点宿主机和consul 都是双向通的,但是K8S集群中任意 POD和consul都是单向通的。
root@plan-795b679b64-2s9mz:/opt/service/lenovo_plan# ping 10.0.10.117
PING 10.0.10.117 (10.0.10.117) 56(84) bytes of data.
64 bytes from 10.0.10.117: icmp_seq=1 ttl=63 time=0.732 ms
64 bytes from 10.0.10.117: icmp_seq=2 ttl=63 time=0.631 ms
64 bytes from 10.0.10.117: icmp_seq=3 ttl=63 time=0.654 ms
64 bytes from 10.0.10.117: icmp_seq=4 ttl=63 time=0.693 ms
2、问题描述
微服务注册到Consul ,都是微服务主动发起的。但是consul 健康检查 都是consul agent 主动发起的。
3、解决方法
前提条件是配置hosts,要求所有consul 节点都要配置host,确保k8s 节点 和consul 节点都是能够相互ping 通的。
3.1、临时解决方法
所有POD都设置为一个副本,且启用本地网络。
……
spec:
#一个副本
replicas: 1
selector:
matchLabels:
k8s-app: tlan
template:
metadata:
labels:
k8s-app: tlan
annotations:
seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
spec:
#启用本地网络
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet
………
3.2、将若干或全部consul部署到K8S节点里去
首先按照第一章提到的部署方案调整Consul的部署方式。
服务注册时使用部署到K8S节点的consul。微服务中修改consul配置文件,如下所示:
……….
spring:
application:
name: tlan
cloud:
consul:
host: ${consul_host:10.0.10.160}
port: ${consul_port:8500}
……………