- spring cloud项目用rancher部署的时候,eureka 注册的问题。
在rancher部署一个 Deployment 以后,它随即创建了一个 类型为 ClusterIP 的 service 还有相应的 pod ,每个 Pod 被分配一个独立的IP地址,service 和 pod 的网络命名空间是不同的。
这就导致了以前那种微服务往 eureka 里注册 IP 的方法行不通了,eureka 里注册的是 pod 的IP,从 service 出发找 pod 的 IP 显然是找不到的。
那就要用到 service 的 DNS 模式了,service 会以 my-svc.my-namespace.svc.cluster.local 这种名字的形式被指派给一个 DNS 记录,经过解析以后就是 service 的 Cluster IP,在同一个命名空间里,通过 service 的名字就可以找到这个服务。
改变 eureka 注册方式,将 service 的名字注册进eureka。
eureka.instance.hostname=service-name
eureka.instance.prefer-ip-address=false
其实在k8s的环境下,并不需要再用 eureka 了,Service 的 ClusterIP 是和它的生命周期绑定唯一的, Pod 通过 endpoints 暴露出来,service Selector 将负载均衡的引导进 Endpoint 中,实质上已经做了 eureka 服务治理的功能。
- 服务配置 NodePort 模式无效。
docker 在 1.13 版本之后,将系统iptables 中 FORWARD 链的默认策略设置为 DROP
,最简单的解决方法就是在每台node上修改 iptables -P FORWARD ACCEPT
- MySQL镜像挂载配置不生效的问题。
查看日志发现,启动时 Warning: World-writable config file ‘/etc/my.cnf’ is ignored 有这个警告,原来是让同事挂载 MySQL 配置的时候,他将配置文件权限给了777,MySQL 认为有安全隐患就将配置给忽略了,将权限改成644(用户可读写,其他用户不可写)后解决了。
网友评论