由于项目要用到kubernets,最近学习了一下,有些问题不太理解,求大神指教1.kubernets在部署容器的时候,能否确保节点同一pod分散在不同node上,如果相同的pod在一台主机上,宕机了不就gg了2.数据库一类的组件是不是不应该用kubernets管理,感觉kubernets的负载均衡只适用于无状态组件3.pod之间如何通信,比如有两个微服务A、B在不同的pod上,A要向B发送请求,如何实现,程序并不知道对方IP,连接的时候怎么连,是用服务名吗,需要指定端口吗,还是说要先做域名解析,如果需要自己做域名解析,那么DNS地址怎么配,看流程是kube-proxy代理的,需要程序主动连代理的吗4.RC可以检测pod数量,有pod挂掉会再拉一个,这一点我有点疑惑,为什么pod会挂,是kubernets不稳定吗,还有,kubernets应该检测不到docker内程序有没有的吧,是不是还是要自己写守护进程

解决方案 »

  1.   

    没人的么,没用过Kubernets管理docker,求大佬指导
      

  2.   

    1 k8s会尽量保证pod被部署到不同的节点,如果你只有1个节点或者节点资源不足,就被办法保证了。
    2 有状态的服务不是不能用k8s,只是自动调度和节点漂移,可能会丢失磁盘映射和持久化文件。如果要用k8s管理,也只能通过指定固定部署节点的方式解决。
    3 pod间的通信,k8s提供了基于dns的服务发现方式,可以使用使用服务名称调用。不使用dns的情况下,k8s启动的时候会把service的访问ip和端口以环境变量的形式注入到其它容器中,可以在容器中拿到访问地址。但这有个缺陷,就是如果你要访问的服务在你之后启动,则你的容器中不会存在该环境变量,也就无法访问。
    4 rc会保证pod的数量,为什么pod会挂掉?内存溢出啊、资源不足啊,物理节点宕机啊,等等。这时候k8s会自动调度,保证副本数。k8s提供探针检测容器内应用存活,以便pod是否需要重启,需要自己实现脚本在k8s部署时。
    5 为什么没人理,估计这地方人少吧~
    6 k8s官方文档写得很详细,我谷歌翻译的都能看明白,但是还是很多需要碰到了才能理解。