k8s endpoint

k8s endpoint

endpoint是什么

  • endpoint是集群中的一个资源对象,储存在etcd中,用来记录一个service对应的pod的访问地址。
  • service配置serlector,endpoint controler才会自动创建对应的endpoint对象;否则,则不会创建endpoint对象

service的serlector是什么

image

serlector是service里面的一个属性,对应的是app=console类似这样的标签

apiVersion: v1
kind: Service
metadata:
  name: console
  namespace: ${ENVIRONMENT_NAME}
spec:
  type: NodePort
  ports:
    - name: consoleport
      port: 8095
    - name: debugport
      port: 8088
  selector:
    app: console

service select

  • service通过selector和pod建立关联
  • k8s会根据service关联到pod的podip信息组成一个endpoint
  • 若service定义中没有selector字段,service被创建时,endpoint controller不会创建endpoint。

service负载分发策略

service负载分发策略有两种:

  • RoundRobin: 轮训模式,即轮序请求转发到后段的各个pod上。(默认模式)
  • SessionAffinty: 基于客户端ip地址进行会话保持的模式,第一次客户端访问后段某个pod,之后的请求都会转发到这个pod上

k8s服务发现方式

DNS: 可以通过cluster add-on的方式轻松轻松的创建KubeDNS来对集群内的service进行服务发现,这也是官方强烈推荐的方式。为了让pod中的容器可以使用kube-dns来解析域名,k8s会修改容器的/etc/resolv.conf配置。

endpoint controlor

endpoint controlor是k8s集群的其中一个组件,其功能如下:

  • 负责生成和维护所有的endpoint对象的控制器。
  • 负责监听

image

image

image

从集群外部访问Service

3个Pod经由NodePort Service通过每个节点上的端口30050对外提供服务。

  • 第①步,来自一个外部客户端的请求到达Node2的30050端口。
  • 第②步,请求被转发至Service对象(即使Node2上压根没有运行该Service关联的Pod)。
  • 第③步,与该Service对应的Endpoint对象维护了实时更新的与Label筛选器匹配的Pod列表。
  • 第④步,请求被转发至Node1上的Pod1。
    image
[10:35:43][root@tiaoban:bbb]# rancher kubectl  get svc,ep -n zhengwb22082901
NAME                    TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
service/cicd-callback   NodePort   10.43.208.184   <none>        8079:27709/TCP   21d
service/java-console    NodePort   10.43.64.131    <none>        8095:27779/TCP   21d
service/java-ecs        NodePort   10.43.95.136    <none>        8096:29796/TCP   21d
service/mysql           NodePort   10.43.124.233   <none>        3306:22346/TCP   21d
service/nginx           NodePort   10.43.221.38    <none>        8080:20246/TCP   21d
service/redis           NodePort   10.43.247.98    <none>        6379:28649/TCP   21d

NAME                      ENDPOINTS           AGE
endpoints/cicd-callback   10.42.1.131:8079    21d
endpoints/java-console    10.42.26.79:8095    21d
endpoints/java-ecs        10.42.8.190:8096    21d
endpoints/mysql           10.42.27.8:3306     21d
endpoints/nginx           10.42.26.137:8080   21d
endpoints/redis           10.42.33.157:6379   21d

posted @ 2022-09-16 14:38  liwenchao1995  阅读(1417)  评论(0编辑  收藏  举报