我做了一个ACS实例。
az acs create --orchestrator-type=kubernetes \
--resource-group $group \
--name $k8s_name \
--dns-prefix $kubernetes_server \
--generate-ssh-keys
az acs kubernetes get-credentials --resource-group $group --name $k8s_name
并运行helm init
它已经配置了分蘖吊舱。然后我运行helm install stable/redis
并启动并运行redis部署(貌似)。
我可以kube exec -it
进入redis广告管理系统,并且可以在0.0.0.0
上看到它具有约束力,并且可以使用redis-cli -h localhost
和redis-cli -h <pod_ip>
登录,但不能使用redis-cli -h <service_ip>
登录(来自kubectl get svc
。)
如果我运行另一个pod(这是我遇到此问题的方式),我可以ping redis.default
并显示DNS解析为正确的服务IP但没有给出响应。当我telnet <service_ip> 6379
或redis-cli -h <service_ip>
时,它会无限期挂起。
我对如何进一步调试感到有点失落。我无法进入节点以查看docker正在做什么。
另外,我最初尝试使用标准的Alphine-Redis图像,因此掌舵是一个后备。我昨天试了一下,掌舵一个工作,但手册没有。今天这样做(在一个新建的ACS集群上),它们都没有工作。
我将再次启动集群以查看它是否可以稳定重现,但我非常有信心可疑的事情正在发生。
PS - 我在一个不同的区域有一个重叠子网10.0.0.0/16的VNet,当我进入地址范围时,我会收到一个警告,那里有冲突,可能会影响它吗?
<EDIT>
一些新见解......这与基于阿尔卑斯山的图像有关(我们一直致力于使用它)...
所以kube run a --image=nginx
(基于ubuntu)我可以安装shell,安装telnet并连接到redis服务。
但是,例如kubectl run c --image=rlesouef/alpine-redis
然后shell,并且telnet不能用于相同的redis服务。
</EDIT>
答案 0 :(得分:2)
最近修复了一个类似的问题https://github.com/Azure/acs-engine/issues/539。要验证的一件事是检查nslookup是否在容器中工作。