k8s~ingress_service_endpoint_pod四壮士

打印 上一主题 下一主题

主题 754|帖子 754|积分 2262

在Kubernetes中,Service和Endpoints是两个重要的概念,它们之间存在着密切的关系。

  • Service:Service是Kubernetes中用于定义一组Pod的访问方式的抽象。通过创建Service,可以为一组具有相同标签的Pod提供统一的访问入口,使得客户端可以通过Service来访问这些Pod,而无需了解其具体的IP地址和端口号。Service通过标签选择器(selector)来选择匹配的Pod,并将请求转发到这些Pod上。
  • Endpoints:Endpoints是Kubernetes中的另一个资源对象,它存储了与一个Service相关联的实际后端Pod的列表和对应的网络终结点信息(即IP地址和端口号)。当Service被创建时,Kubernetes会自动管理Endpoints对象,将与Service标签选择器匹配的Pod的IP地址和端口号信息存储在Endpoints中。
因此,Service和Endpoints之间的关系可以总结为:Service定义了一组Pod的访问方式,而Endpoints则存储了这些Pod的实际网络终结点信息,Service通过Endpoints来实现对后端Pod的负载均衡和代理转发。
ingress,service,endpoints和pod四者关系


在这个示意图中,Ingress定义了对外部流量的访问规则,包括主机名(host)和路径(path)等。Ingress通过指向一个Service来实现流量的转发。Service根据自身的selector选择与之匹配的Pod,并将请求转发到这些Pod上。Endpoints存储了与Service相关联的后端Pod的IP地址和端口信息,而Pod则是应用程序运行的实际容器。
因此,Ingress定义了对外部流量的访问规则,Service提供了对后端Pod的访问入口,Endpoints存储了这些后端Pod的网络终结点信息,而Pod是应用程序实际运行的地方。
endpoint显示的ip是谁的?

Pod在Kubernetes中是有自己的IP地址的,这个IP地址通常由Kubernetes的网络插件(如Calico、Flannel等)负责分配和管理。每个Pod都会被分配一个独立的IP地址,用于在集群内部进行通信。
而Endpoints对象存储的是与Service关联的后端Pod的IP地址和端口信息,它记录了Service需要代理的实际后端Pod的网络终结点信息。Endpoints并不存储所有Pod的IP地址,而是仅存储与特定Service相关联的Pod的IP地址和端口信息。
因此,可以说Pod具有自己的IP地址,并且Endpoints对象存储了与Service相关的Pod的IP地址和端口信息。

  • 这是一个pod的信息
  1. [root@lind~]# kubectl describe  pod envoy-deployment-786c44794b-rb6wm -n=default
  2. Name:         envoy-deployment-786c44794b-rb6wm
  3. Namespace:    default
  4. Priority:     0
  5. Node:         192.168.60.1/192.168.60.1
  6. Start Time:   Tue, 19 Dec 2023 09:54:24 +0800
  7. Labels:       app=envoy
  8.               pod-template-hash=786c44794b
  9.               workloadID_ingress-10aa232e236bc59c6a7d7d59053154a8=true
  10.               workloadID_ingress-c7fdea094d8b2ab0912781e0867ce277=true
  11. Annotations:  cattle.io/timestamp: 2023-12-19T01:54:22Z
  12.               cni.projectcalico.org/podIP: 10.42.0.150/32
  13.               cni.projectcalico.org/podIPs: 10.42.0.150/32
  14.               field.cattle.io/ports:
复制代码

  • 这是对应的endpoint的信息
  1. [root@lind~]# kubectl get endpoints -n=default
  2. NAME                                       ENDPOINTS                                                                 AGE
  3. envoy-service                              10.42.0.150:9901,10.42.0.150:10000                                        70d
复制代码

  • 这是对应的service的信息
  1. [root@lind~]# kubectl get svc -n=default
  2. NAME                                       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                          AGE
  3. envoy-service                              NodePort    10.43.189.206   <none>        9901:25568/TCP,10000:13908/TCP   70d
复制代码

  • 这是对应的ingress的信息
  1. [root@lind~]# kubectl get ingress -n=default
  2. NAME                            CLASS    HOSTS                           ADDRESS                                        PORTS   AGE
  3. envoy-final-kc            <none>   test.xxx.com             192.168.60.2,192.168.60.3,192.168.60.4                80      13d
复制代码
好了,今天的k8s四壮士的文章就写到这里吧,感谢阅读!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

铁佛

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表