刚学k8s,这可能在老手眼里是个弱智问题,不过事情总是要一步步做的嘛。
先描述一下我的环境以及碰到的问题:
一个mater节点,两个node节点。我部署了一个应用,副本数是3个,所以有3个pod。问题就是我用postman去访问的时候(master节点ip:映射出来的port/xxxxxxxxxxxxx),访问不通,本地telnet的时候无响应。
但是我进到各个节点执行以下命令查看日志后,确定服务是起来了没问题的
$ kubectl logs pod名称
然后查看服务的service,发现了问题所在
$ kubectl get svc
$ kubectl describe svc svc名称
这里的EndPoints是none,说明service并没有绑定到任何一个pod,所以没法转发,那服务访问不通也是理所当然的事情了。
回过头去看了一下yaml文件果然发现了问题,在service中,缺少selector,所以没能绑定到pod,添加selector及对应标签之后,删除之前部署的应用
$ kubectl delete -f xxxxxx.yaml
然后重新部署
$ kubectl apply -f xxxxxx.yaml
再执行后发现问题已解决,endpoint已经有了,对应的就是我那三个pod的ip地址
$ kubectl describe svc svc名称
重新去访问的时候可以访问了