zoukankan      html  css  js  c++  java
  • kubernete的service

    ◆Service的工作模式:userspace, iptables, ipvs

    •userspace: 1.1以前;已被淘汰。

    •iptables: 1.10以前

    • 灵活,功能强大

    • 规则遍历匹配和更新,呈线性时延

    • 可扩展性

    •ipvs: 1.11以后,若没有配置ipvs,则降级为iptables;

    • 工作在内核态,有更好的性能

    • 调度算法丰富:rr,wrr,lc,wlc,ip hash

    ◆Service的类型:即服务的对外暴露方式。

    ExternalName:当Service类型是ExternalName时,Service所关联的不是本地Pod应用,而是集群外部的服务。从而实现集群内部的Pod应用调用集群外部的服务,可以把集群外部的服务当作内部服务一样去调用它。当Service类型是ExternalName时,spec.externalName字段才生效。

     •ClusterIP:默认,自动分配一个仅cluster内部可以访问的虚拟IP,用于集群内部通信。

    NodePort:分配一个内部集群IP地址,并在每个节点上启用一个端口来暴露服务,可以在集群外部访问。 访问地址:node端口范围30000-32067。

    流:Client→NodeIP:NodePort→ClusterIP:ServicePort→PodIP:containerPort。

    LoadBalancer:分配一个内部集群IP地址,并在每个节点上启用一个端口来暴露服务。 Kubernetes会请求底层云平台上的负载均衡器,将每个Node([NodeIP]:[NodePort])作为后端添加进去。

    ◆service例(类型:ClusterIP/redis-svc.yaml)

     1 apiVersion: v1
     2 kind: Service
     3 metadata:
     4   name: redis
     5   namespace: default
     6 spec:
     7   selector:
     8      app: redis
     9      role: logstor
    10   clusterIP: 10.96.97.97
    11   type: ClusterIP
    12   ports:
    13   - port: 6379
    14     targetPort: 6379 
    View Code

    ●确认

    创建:kubectl apply -f redis-svc.yaml

    查看服务:kubectl get svc

    kubectl describe svc redis

     查看端口:ss -tnl

    ◆service例(类型:NodePort/nginx-svc.yaml)

     1 apiVersion: v1
     2 kind: Service
     3 metadata:
     4   name: nginx
     5   namespace: default
     6 spec:
     7   selector:
     8      app: nginx
     9      clusterIP: 10.96.97.97
    10   type: NodePort
    11   ports:
    12   - port: 80
    13     targetPort: 80
    14     nodePort: 30080
    View Code

    •测试方法:#while true; do curl http://node:30080/; sleep 1; done

     无头(headless)service

     1 apiVersion: v1
     2 kind: Service
     3 metadata:
     4   name: nginx
     5   namespace: default
     6 spec:
     7   selector:
     8     app: nginx
     9     clusterIP: None    #无头service仅支持类型为clusterIP。
    10     ports:
    11     - port: 80
    12       targetPort: 80
    View Code

    ◆资源记录:

    格式:SVC_NAME.NS_NAME.DOMAIN.LTD.

    svc.cluster.local.

  • 相关阅读:
    桥接模式(从多个角度对实现进行分类)
    单例模式
    组合模式(解决 树形 ,局部与整体关系)
    备忘录模式
    适配器模式
    状态模式
    StartUML建模及生成java实体代码
    JPA删除接口报错 : org.hibernate.LazyInitializationException: failed to lazily initialize a collection, could not initialize proxy
    idea创建的gradle项目没有src目录怎么办?
    idea spring源码 gradle编译失败问题
  • 原文地址:https://www.cnblogs.com/mountain2011/p/12266418.html
Copyright © 2011-2022 走看看