• 我来也
    2018-10-13
    今天按文章中的内容来, 确实也遇到了nslookup 反馈失败的状况.
    ** server can't find web-0.nginx: NXDOMAIN
    *** Can't find web-0.nginx: No answer
    但是直接ping web-0.nginx 是可以获取真实ip地址的.
    确实是如楼下的同学所说, 需要用 busybox:1.28.4 的镜像. 这个是最新版busybox的问题.
    kubectl run -i --tty --image busybox:1.28.4 dns-test --restart=Never --rm /bin/sh
    这样就可获得期待的结果了.
    我也是google到了 https://github.com/kubernetes/kubernetes/issues/66924 才知道的.
    再看楼下的评论,才发现有其他同学也遇到了,且在几天前已经给出了解决方案. 👍
    新技术确实变化太快了,作者在写文章时用的没问题,也许隔一天因为某个默认镜像修改了,就会出现新的状况.
    展开

    作者回复: 看来这个镜像确实有问题

    
     57
  • 千寻
    2018-10-09
    说dns访问不到那个童鞋,不要用latest标签的busybox,用busybox:1.28.4这个tag的就可以了,我也是这样。

    作者回复: 这咋还跟镜像有关系呢?

    
     19
  • along2018
    2018-10-08
    创建statefulset必须要先创建一个headless的service?分两步操作?

    作者回复: 对的

     1
     13
  • Dillion
    2018-10-03
    在上面的例子中,web-0、web-1启动后,此时如果web-0挂了,那在创建web-0的过程中,web-1也会被重新创建一次么???也就是如果一个StatefulSet中只有某个Pod挂了,在重启它的时候,如何确保文中说的Pod启动顺序呢??

    作者回复: 任何一次pod的更新都会触发statefulset 滚动更新,更新一定会按编号顺序。但如果只是删除那就直接重建当前pod就够了,这并不破坏拓扑状态。当然,必要的时候,你的pod启动命令要能够区分第一次启动和重启,见下一节。

    
     10
  • 巩夫建
    2018-10-06
    Headless Service中不通过vip,外部访问的时候,是轮询还是随机还是热备的方式访问到web-0和web-1,dns解析好像没有轮询随机概念吧。

    作者回复: 只能访问到固定的一个pod。所以说headless service不能替代normal service

    
     8
  • 刘欣洲
    2018-10-04
    访问不到啊
    / # nslookup web-0.nginx
    Server:        10.96.0.10
    Address:    10.96.0.10:53

    ** server can't find web-0.nginx: NXDOMAIN

    *** Can't find web-0.nginx: No answer

    是不是需要DNS插件啊, 该如何启动呢?
    展开

    作者回复: dns是默认插件。你按我前面的部署流程、也就是官方的部署流程,是必然有dns的。看看pod列表debug一下吧。

     1
     7
  • Lukri
    2018-11-29
    加上namespace就可以了。
    / # ping web-0.nginx.default.svc.cluster.local
    PING web-0.nginx.default.svc.cluster.local (10.44.0.2): 56 data bytes
    64 bytes from 10.44.0.2: seq=0 ttl=64 time=0.138 ms
    64 bytes from 10.44.0.2: seq=1 ttl=64 time=0.089 ms
    64 bytes from 10.44.0.2: seq=2 ttl=64 time=0.091 ms
    64 bytes from 10.44.0.2: seq=3 ttl=64 time=0.090 ms
    64 bytes from 10.44.0.2: seq=4 ttl=64 time=0.093 ms
    64 bytes from 10.44.0.2: seq=5 ttl=64 time=0.128 ms
    64 bytes from 10.44.0.2: seq=6 ttl=64 time=0.093 ms
    64 bytes from 10.44.0.2: seq=7 ttl=64 time=0.091 ms
    ^C
    --- web-0.nginx.default.svc.cluster.local ping statistics ---
    8 packets transmitted, 8 packets received, 0% packet loss
    round-trip min/avg/max = 0.089/0.101/0.138 ms
    / # nslookup web-0.nginx.default.svc.cluster.local
    Server: 10.96.0.10
    Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

    Name: web-0.nginx.default.svc.cluster.local
    Address 1: 10.44.0.2 web-0.nginx.default.svc.cluster.local
    展开
     1
     6
  • fldhmily63319
    2018-10-03
    我也想问, "Normal Service"和"Headless Service“的应用场景是什么?

    根据文章所说的,”Headless Service不需要分配一个 VIP,而是可以直接以 DNS 记录的方式解析出被代理 Pod 的 IP 地址“,同时由于其编号的严格规定,会按照编号顺序完成创建工作。

    这样是不是说,如果在部署StatefulSet的时候,大部分是推荐使用"Headless Service" ,而不是"Normal Service”呢?
    展开

    作者回复: 是,必须用headless service

    
     5
  • A-
    2018-10-04
    service里的dns信息是存在etcd里的嘛?有些应用的pod的域名是自己定义的。而不是k8s创建出来的带有local的域名。我可以更改service里的dns信息嘛?

    作者回复: kubernetes 当然允许你自定义域名了

    
     4
  • jssfy
    2018-11-04
    通过这种方法,Kubernetes 就成功地将 Pod 的拓扑状态(比如:哪个节点先启动,哪个节点后启动),按照 Pod 的“名字 + 编号”的方式固定了下来。
    如上所述,
    1. 是否可以这样理解:sts在这里只是保留了“名字 + 编号”这种网络身份,而不同网络身份对应的pod其实本质上是一样的,都是同一个模板replicate出来的?
    2. 这里sts的主要意义是什么呢:仅仅是保证不同网络身份的启动顺序?

    作者回复: pod镜像是一样,但启动pod的命令和初始化流程可以完全不一样啊。可以参考后面的完整案例

    
     3
  • Plantegg
    2018-10-18
    首先busybox镜像的/bin/ 下几百个可执行命令的md5签名都是一样的。不能按照正常的ping、nslookup逻辑来理解了。 也就是md5sum /bin/ping 和 md5sum /bin/nslookup 签名一样,我猜测这个可执行命令都是空架子,会被拦截下来。
    另外就是1.28.4和1.29.3(latest) 的 nslookup 签名也不一样了

    作者回复: busybox就是这么做出来的,正常

    
     3
  • Tim Zhang
    2018-10-04
    既然默认有安装dns 为啥还要开启dns插件呢

    作者回复: 因为有太多人是自己拿二进制文件DIY部署的,不按kubeadm的流程来

    
     3
  • Tim Zhang
    2018-10-03
    statefulset通过dns访问pod 是否必须要启动dns插件?

    作者回复: kubernetes的dns早就已经是默认安装的了

    
     3
  • bat2man
    2019-01-05
    说一个我的经验哈:

    环境(一个master, 一个node, coredns)
    1. busybox的版本要控制在1.28.4以下
     kubectl run -i --tty --image busybox:1.28.4 dns-test --restart=Never --rm /bin/sh
    2. 主从节点时间要一致
    3. 从节点拷贝主节点的admin.conf文件到从节点
    4. 重启kubelet docker
    完了之后发现 两天解析不到的dns 竟然成功了 ????
    展开
     1
     2
  • Rodinian
    2019-05-16
    一直很好奇,normal service和headless service都可以指定DNS name。那两者的区别是什么?

    作者回复: service部分会讲解

    
     1
  • Leon📷
    2019-01-24
    老师,我在busybox查看statefulset的两个容器web-0, web-1,的地址解析
    / # nslookup web-0.nginx.test.svc.cluster.local
    Server:        10.62.45.10
    Address:    10.62.45.10:53

    Name:    web-0.nginx.test.svc.cluster.local
    Address: 10.128.31.25

    *** Can't find web-0.nginx.test.svc.cluster.local: No answer

    / # ^C
    / # nslookup web-1.nginx.test.svc.cluster.local
    Server:        10.62.45.10
    Address:    10.62.45.10:53

    Name:    web-1.nginx.test.svc.cluster.local
    Address: 10.128.177.140

    *** Can't find web-1.nginx.test.svc.cluster.local: No answer
    这个是到底是解析出来了还是没解析出来啊
    展开
     1
     1
  • Geek_6bab38
    2018-12-18
    教程中两个nginx是一块启动:
    如果是有顺序的,比如redis先启动,然后启动在启动nginx这样子,需要怎样设置呢
    
     1
  • Adam
    2018-12-05
    busybox latest的这个标签确实不能正常解析,改成1.28.4就可以正常解析。怪了。
    
     1
  • IOVE.-Minn
    2018-10-10
    请问,“有状态的是pv,不是副本控制器,statefulset不用pv创建的pod是无状态”这句话是对的么? 是不是其实statefulset是无状态的,其实是给有状态的服务扩容和伸缩? 那么initcontainer其实只是维护了有状态服务的拓扑状态?

    作者回复: statefulset 还给pod编号了,这就是拓扑状态啊

    
     1
  • huan
    2018-10-07
    关于nslookup无法解析的问题,debug了下dnspod的log。使用命令 `kubectl logs -f kube-dns-86f4d74b45-28xdg kubedns -n kube-system` 来监视dns pod的log。
    当 `kubectl delete -f svc.yaml` 的时候,会有一个log出现:
    `I1007 14:12:32.818523 1 dns.go:555] Could not find endpoints for service "nginx" in namespace "default". DNS records will be created once endpoints show up.`
    期待这个问题会随着k8s的学习深入得到解决。
    展开

    作者回复: service部分讲解可以关注一下

    
     1
我们在线,来聊聊吧