• k8s的service及相关知识


    k8s的service网络

    K8s内部网络整体图


    Service是什么:

    1. k8s定义服务是一种将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法。
    2. 这些Pod拥有相同的selector==》label
    3. k8s为Pods 提供自己的 IP 地址,并为一组 Pod 提供相同的 DNS 名, 并且可以在它们之间进行负载均衡。
    4. 而且使用 k8s,你无需修改应用程序,即可使用不熟悉的服务发现机制,黑盒式使用,简单易上手。


    Service为什么出现的?缘由

    1. Pod是临时资源,随时可能被创建、删除等。参考Depolyment
    2. 每个Pod有自己的IP
    3. Pod创建、删除后,完整的服务应该都能正常工作,就需要一个前后端隔离的“代理层”,能够统筹后端的所有Pod
    4. 前端不关心现在有哪些Pod,前端只需要关注一个点==》service即可

    那k8s为啥不用DNS轮询机制,而要自己实现一套流量转发机制呢?

    DNS有缓存

    注意:service与nignx不同

    那k8s是怎么做的呢

    插入一个知识点:k8s中的IP
    Node IP:Node节点的IP地址,即物理网卡的IP地址

    Pod IP:Pod的IP地址,即docker容器的IP地址,此为虚拟IP地址。

    Cluster IP:Service的IP地址,此为虚拟IP地址。


    每个Node上运行kube-proxy,kube-proxy管理service的入口。

    kube-proxyt通过监听api种service的变化,可以使用endpiont来记录所有pod的ip

    service对外暴露一个V IP,也成为Cluster IP,集群内通过访问这个Cluster IP:Port就能访问到集群内对应的serivce下的Pod。

    kube-proxy的代理示意图(user space)

     附:

    获取Node IP
    1.kubectl get nodes
    2.kubectl describe node nodeName
    3.显示出来的InternalIP就是NodeIP

    获取Pode IP
    1.kubectl get pods
    2.kubectl describe pod podName

    获取Cluster IP

     kubectl get svc

     参考:https://kubernetes.io/docs/concepts/services-networking/service

  • 相关阅读:
    AM335x kernel 4.4.12 i2c eeprom AT24c02驱动移植
    AM335x tscadc platform driver 相关代码跟踪
    Linux kernel make 常用选项介绍
    Linux kernel 文件夹说明
    shell 脚本之获取命令输出字符串以及函数参数传递
    Treeview控件如何获得子节点的所有父节点的名称
    浅谈Delphi高效使用TreeView
    Delphi下Treeview控件基于节点编号的访问
    delphi中TTreeView的使用方法
    学习 TTreeView [2]
  • 原文地址:https://www.cnblogs.com/13579net/p/16158936.html
Copyright © 2020-2023  润新知