• shadow
    2018-11-19
    对ExternalName的作用没太理解。
    访问my-service.default.svc.cluster.local被替换为my.database.example.com,这和我从外部访问到 Kubernetes 里的服务有什么关系?
    感觉这更像是从Kubernetes内访问外部资源的方法。
     2
     13
  • 王天明
    2018-11-24
    终于算是清楚了,在nodePort模式下,关于端口的有三个参数,port, nodePort, targetPort。
    如果如下定义,(请张老师指出是否有理解偏差)
    spec:
      type: NodePort
      ports:
        - name: http
          port: 8080
          nodePort: 30080
          targetPort: 80
          protocol: TCP

    则svc信息如下,(注意下面无targetPort信息,只是ClustorPort与NodePort,注意后者为Nodeport)
    ingress-nginx ingress-nginx NodePort 10.105.192.34 <none> 8080:30080/TCP,8443:30443/TCP 28m

    则可访问的组合为
    1. clusterIP + port: 10.105.192.34:8080
    2. 内网IP/公网ip + nodePort: 172.31.14.16:30080。(172.31.14.16我的aws局域网ip.)

    30080为nodePort也可以在iptables-save中映证。
    还有,就是port参数是必要指定的,nodePort即使是显式指定,也必须是在指定范围内。

    (在三板斧中也问过张老师如何使用nodePort打通外网的问题,一并谢谢了)
    展开

    作者回复: 对

    
     9
  • LEON
    2018-11-19
    在我们通过 kubeadm 部署的集群里,你应该看到 kube-proxy 输出的日志如下所示:—输出日志的命令是什么?
     1
     3
  • Chenl07
    2019-01-13
    老师,我创建一个externalip的service后,对应的service端口为30100,externalip是一个VIP,实际指向集群中某两个节点。创建后,集群中任意节点上都没有侦听这个端口(netstat grep),那通过我的VIP,怎么能访问到30100这个端口了?
     1
     1
  • 勤劳的小胖子-libo
    2018-11-22
    请问一下什么应用场景下:“还有一种典型问题,就是 Pod 没办法通过 Service 访问自己?”
    为什么要访问自己?
    
     1
  • 勤劳的小胖子-libo
    2018-11-22
    写了一个简单的nodeport,可以访问上一节的hostname deployment.
    apiVersion: v1
    kind: Service
    metadata:
      name: hostnames
      labels:
        app: hostnames
    spec:
      type: NodePort
      selector:
        app: hostnames
      ports:
      - nodePort: 30225
        port: 80
        targetPort: 9376
        protocol: TCP
        name: http


    通过curl <任意Node>:30225可以访问。
    vagrant@kubeadm1:~/37ServiceDns$ curl 192.168.0.24:30225
    hostnames-84985c9fdd-sgwpp

    另外感觉我这边的输出关于kube-proxy:
    vagrant@kubeadm1:~/37ServiceDns$ kubectl logs -n kube-system kube-proxy-pscvh
    W1122 10:13:18.794590 1 server_others.go:295] Flag proxy-mode="" unknown, assuming iptables proxy
    I1122 10:13:18.817014 1 server_others.go:148] Using iptables Proxier.
    I1122 10:13:18.817394 1 server_others.go:178] Tearing down inactive rules.
    E1122 10:13:18.874465 1 proxier.go:532] Error removing iptables rules in ipvs proxier: error deleting chain "KUBE-MARK-MASQ": exit status 1: iptables: Too many links.
    I1122 10:13:18.894045 1 server.go:447] Version: v1.12.2

    后面信息都是正常的。不知道上面这些信息可以ignore吗?
    展开
    
     1
  • LEON
    2018-11-19
    而如果你的 Service 没办法通过 ClusterIP 访问到的时候,你首先应该检查的是这个 Service 是否有 Endpoints:———请问老师service ip与cluster ip有什么区别?为什么这块不直接是service ip?
    
     1
  • LH
    2019-12-18
    到了某个节点上才可以使用iptables转发请求到具体到pod
    
    
  • 坤
    2019-11-06
    nodePort下必须要指定Service的port,我用的v1.14,可能检查的更严格了。
    
    
  • 随欲而安
    2019-06-17
    对ExternalName的作用没太理解,老师能解释一下么
    
    
  • zfei
    2019-04-13
    老师,你好,使用NodePort类型的Service,会创建 -A KUBE-NODEPORTS 类的 iptables规则及 SNAT规则,如果kube-proxy使用的是 ipvs模式,也同样会创建这两个规则吗

    作者回复: 对的

    
    
  • 程序修行
    2019-02-15
    一个有趣的问题,我每次从外部浏览器访问一个nodeport类型的service,在抓取访问客户端的源IP(source IP)的时候,总是抓取到10.1.0.0这样的pod的内部IP,而不是我本机的9.x.x.x这样的真实的我的IP。
    
    
  • 王天明
    2018-11-23
    张老师,我在使用NodePort暴露外网访问一直不成功,无论是公网IP还是局域网IP但不成功,只能使用ClusterIP+NodePort访问。查看events也都正常,只几节课里使用NodePort都有类似的问题。是我理解哪里存在偏差吗?

    作者回复: 你这主机是不是有防火墙?

    
    
  • foghost
    2018-11-22
    请教张老师,我在几个不同环境中实验ipvs模式下externalTrafficPolicy=local策略时发现,这个策略在ipvs模式下并不会只转发到本机pod,而是依然转发到了其他机器上到pod,ipvs 规则中hostname -i 对应的规则下有其他机器的pod,查了很多资料都没有结果,我在想这是不是k8s ipvs模式的bug,还请张老师解惑
    
    
  • Len
    2018-11-21
    因为 kubernetes 维护着 externalIPs IP + PORT 到具体服务的 endpoints 路由规则。
    
    
  • 虎虎❤️
    2018-11-21
    思考题 pod的external ip 应该是通过iptables进行配置。可能是一个虚拟ip,在网络中没有对应的设备。所以,必须有路由规则支持。否则客户端可能没办法找到该ip的路径,得到目的网络不可达的回复。
    
    
  • 硕
    2018-11-20
    ingress 做转发也行 作者能讲解一下吗?
    
    
  • Gray13
    2018-11-19
    第一时间提示更新了 噢耶 小板凳坐前排
    
    
  • 余功鹏
    2018-11-19
    Ingress这个不介绍吗?
    
    
  • fox
    2018-11-19
    赞!
    老师我遇到一个实操的问题:
    一个service 后端有3个pod 组成的endpoints, 我通过(任何一台node)的nodeport 进行连续访问, 我观察到的现象是: 3个pod 收到的请求并不非常随机, 而是一段时间(比如连续几十次请求)落到podA, 然后又连续几十次落到podB, 总体上是随机均分, 但是在短时间内(持续几十秒或者几十次请求)并不是.
    service并没有开启会话粘滞, 使用外部IP/LB 访问也有类似现象.
    现象看上去是有根据clientIP做了会话粘滞, 但是不知道是哪个环节做的, 是iptables吗?
    展开
    
    
我们在线,来聊聊吧