kubernetes笔记Service(一)ClusterIP、NodePort、LoadBalan

更新时间:2023-05-31 03:48:34 阅读: 评论:0

Service简介
Service:可以理解为pod的负债均衡器,标准资源类型,Service Controller 为动态的一组Pod一个固定的访问入口, kubernetes完成SVC工作的组件kube-proxy
Endpoint Controller:管理后端端与svc的绑定,根据标签选择器,筛选适配的pod,监控就绪的pod 并完成svc与pod的绑定
squirrel什么意思工作流程:Service Controller---->创建相同标签选择器的 Endpoint Controller根据标签选择器去管理和监听后端Pod状态 完成Svc与Pod绑定
Service能够负载均衡的能力,但在使用上有以下限制:
只4层负载均衡能力,而没有7层功能,但有时们可能需要更多的匹配规则来转发请求,这在4层负载均衡上不支持的
kube-proxy3种不同的数据调度模式
1.Urspace
Urspace模型:Pod-->Service, iptables拦截规则,但自己不调度 工作流程: 用户空间-->ptables(内核)-->kube-proxy-->ptables(内核)-->再调度给用户空间 效率低
iptables 用户空间-->ptables(内核 完成数据调度)-->调度给用户空间 效率高
在iptables模型下kube-proxy的作用不在数据调度转发,而监听API rver所有rvice中的定义转为本地的iptables规则
缺:iptables模式,一个rvice会生成量的规则; 如果一个rvice有50条规则 那如果有一万个容器,内核的性能就会受到影响
英语写信格式
ipvs代理模式: 在继承iptables优的情况下,同时改进了iptables产生量规则的缺,在规模集群中rice多的情况下优势更明显,
Service的类型
clusterIP:通过集群内部IP暴露,但该仅在集群内部可见、可达,它无法被集群外部的客户端访问;默认类型;建议由K8S动态指定一个;也支持用户手动明确指定;
NodePort: NodePortClusterIP的增强类型,它会于ClusterIP的功能之外,在每个节上使用一个相同的端口号将外部流量引入到该Service上来。
LoadBalancer: NodePort的增强类型,为各节上的NodePort一个外部负载均衡器;需要公有云支持
ExternalName:外部流程引入到K8S内部,借助集群上KubeDNS来实现,的名称会被解析为一个CNAME记录,而CNAME名称会被DNS解析为集群外部的的TP,实现内部与外部的数据交互 ExternallP 可以与ClusterIP、NodePort使用 使用其中一个IP出口IP
ServicePort
Service:被映进Pod上的应用程序监听的端口; 而且如果后端Pod有多个端口,并且每个端口都想通过Service暴露的话,每个都要单独定义。 最终接收请求的PodIP和ContainerPort;
Service资源规范
Service名称空间级别的资源不能跨名称空间
apiVersion: v1
kind: Service
metadata:
  name: ..
  namespace: ...
  labels:
visa是什么意思    key1: value1
    key2: value2
spec:
  type  #Service类型,默认为ClusterIP
  lector  #等值类型的标签选择器,内含“与"逻辑
  ports: # Service的端口对象列表
  - name #端口名称
    protocol  #协议,目前仅支持TCP、UDP和SCTP,默认为TCP
    port  # Service的端口号
    targetPort  #后端目标进程的端口号或名称,名称需由Pod规范定义
    nodePort  # 节端口号,仅适用于NodePort和LoadBalancer类型
  clusterIP  # Service的集群IP,建议由系统自动分配
  externalTrafficPolicy #外部流量策略处理,Local表示由当前节处理,#Cluster表示向集群范围调度
  loadBalancerIP  #外部负载均衡器使用的IP,仅适用于LoadBlancer
  externalName  # 外部名称,该名称将作为Service的DNS CNAME值
示例1: ClusterIP 演示
[root@k8s-master svc]# cat rvices-clusterip-demo.yaml
apiVersion: v1
kind: Service
metadata:
  name: demoapp-svc
  namespace: default
spec:
潜心贯注的意思  clusterIP: 10.97.72.1  #正式部署不需要指定 会自动生成,手动指定还可能会导致冲突
  lector:              #定义过滤条件
    app: demoapp施虐女王
  ports:
  - name: http
    protocol: TCP
英语听力 mp3    port: 80
    targetPort: 80    #后端pod端口
[root@k8s-master svc]# kubectl apply -f rvices-clusterip-demo.yaml
rvice/demoapp-svc created
[root@k8s-master svc]# kubectl get svc -o wide
NAME          TYPE        CLUSTER-IP      EXTERNAL-IP  PORT(S)        AGE  SELECTOR
取代英文demoapp-svc  ClusterIP  10.97.72.1              80/TCP        11s  app=demoapp
kubernetes    ClusterIP  10.96.0.1                443/TCP        30d 
my-grafana    NodePort    10.96.4.185              80:30379/TCP  27d  app.kubernetes.io/instance=my-grafana,app.kubernetes.io/name=grafana
myapp        NodePort    10.106.116.205          80:31532/TCP  30d  app=myapp,relea=stabel
[root@k8s-master svc]# curl 10.97.72.1  #通过访问svc IP访问到后端节
iKubernetes demoapp v1.0 !! ClientIP: 10.244.0.0, ServerName: demoapp-66db74fcfc-9wkgj, ServerIP: 10.244.2.97!
[root@k8s-master svc]# curl 10.97.72.1
iKubernetes demoapp v1.0 !! ClientIP: 10.244.0.0, ServerName: demoapp-66db74fcfc-vzb4f, ServerIP: 10.244.1.98!
[root@k8s-master svc]# kubectl describe svc demoapp-svc
Name:              demoapp-svc
Namespace:        default
Labels:           
Annotations:     
Selector:          app=demoapp
Type:              ClusterIP
belt是什么意思IP:                10.97.72.1
Port:              http  80/TCP
suits第二季TargetPort:        80/TCP
Endpoints:        10.244.1.98:80,10.244.2.97:80  #后端节
Session Affinity:  None
Events:           
intec
[root@k8s-master svc]# kubectl get pod -o wide --show-labels  #匹配到前1、2个
NAME                          READY  STATUS    RESTARTS  AGE  IP            NODE        NOMINATED NODE  READINESS GATES  LABELS
demoapp-66db74fcfc-9wkgj      1/1    Running  0          39m  10.244.2.97    k8s-node2                          app=demoapp,pod-template-hash=66db74fcfc,relea=stable
demoapp-66db74fcfc-vzb4f      1/1    Running  0          39m  10.244.1.98    k8s-node1                          app=demoapp,pod-template-hash=66db74fcfc,relea=stable,track=daily
liveness-httpget-demo        1/1    Running  3          29m  10.244.1.99    k8s-node1                          app=liveness

本文发布于:2023-05-31 03:48:34,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/817764.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:名称   调度   集群   空间   指定
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图